mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-02 23:35:21 +00:00
syscalls: Add sys_set/get_thread_area helpers
They are actually banned in kernel for now, but we might end up needing them, so better to have them in-place. Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
This commit is contained in:
@@ -22,6 +22,9 @@
|
|||||||
#define __NR_exit 60
|
#define __NR_exit 60
|
||||||
#define __NR_unlink 87
|
#define __NR_unlink 87
|
||||||
|
|
||||||
|
#define __NR_set_thread_area 205
|
||||||
|
#define __NR_get_thread_area 211
|
||||||
|
|
||||||
#else /* CONFIG_X86_64 */
|
#else /* CONFIG_X86_64 */
|
||||||
# error x86-32 bit mode not yet implemented
|
# error x86-32 bit mode not yet implemented
|
||||||
#endif /* CONFIG_X86_64 */
|
#endif /* CONFIG_X86_64 */
|
||||||
|
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
#include "types.h"
|
||||||
#include "compiler.h"
|
#include "compiler.h"
|
||||||
#include "syscall-codes.h"
|
#include "syscall-codes.h"
|
||||||
|
|
||||||
@@ -210,6 +211,17 @@ static always_inline long sys_rt_sigreturn(void)
|
|||||||
return syscall0(__NR_rt_sigreturn);
|
return syscall0(__NR_rt_sigreturn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static always_inline long sys_set_thread_area(user_desc_t *info)
|
||||||
|
{
|
||||||
|
return syscall1(__NR_set_thread_area, (long)info);
|
||||||
|
}
|
||||||
|
|
||||||
|
static always_inline long sys_get_thread_area(user_desc_t *info)
|
||||||
|
{
|
||||||
|
return syscall1(__NR_get_thread_area, (long)info);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#else /* CONFIG_X86_64 */
|
#else /* CONFIG_X86_64 */
|
||||||
# error x86-32 bit mode not yet implemented
|
# error x86-32 bit mode not yet implemented
|
||||||
#endif /* CONFIG_X86_64 */
|
#endif /* CONFIG_X86_64 */
|
||||||
|
@@ -56,6 +56,19 @@ typedef signed char s8;
|
|||||||
|
|
||||||
#ifdef CONFIG_X86_64
|
#ifdef CONFIG_X86_64
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
unsigned int entry_number;
|
||||||
|
unsigned int base_addr;
|
||||||
|
unsigned int limit;
|
||||||
|
unsigned int seg_32bit:1;
|
||||||
|
unsigned int contents:2;
|
||||||
|
unsigned int read_exec_only:1;
|
||||||
|
unsigned int limit_in_pages:1;
|
||||||
|
unsigned int seg_not_present:1;
|
||||||
|
unsigned int useable:1;
|
||||||
|
unsigned int lm:1;
|
||||||
|
} user_desc_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned long r15;
|
unsigned long r15;
|
||||||
unsigned long r14;
|
unsigned long r14;
|
||||||
|
Reference in New Issue
Block a user