mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-23 10:28:05 +00:00
133 lines
2.7 KiB
C
133 lines
2.7 KiB
C
#ifndef CR_TYPES_H_
|
|
#define CR_TYPES_H_
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "bitops.h"
|
|
|
|
/* some constants for ptrace */
|
|
#define PTRACE_SEIZE 0x4206
|
|
#define PTRACE_INTERRUPT 0x4207
|
|
#define PTRACE_LISTEN 0x4208
|
|
|
|
#define PTRACE_SEIZE_DEVEL 0x80000000
|
|
|
|
#define PTRACE_EVENT_FORK 1
|
|
#define PTRACE_EVENT_VFORK 2
|
|
#define PTRACE_EVENT_CLONE 3
|
|
#define PTRACE_EVENT_EXEC 4
|
|
#define PTRACE_EVENT_VFORK_DONE 5
|
|
#define PTRACE_EVENT_EXIT 6
|
|
#define PTRACE_EVENT_STOP 7
|
|
|
|
#define PTRACE_O_TRACESYSGOOD 0x00000001
|
|
#define PTRACE_O_TRACEFORK 0x00000002
|
|
#define PTRACE_O_TRACEVFORK 0x00000004
|
|
#define PTRACE_O_TRACECLONE 0x00000008
|
|
#define PTRACE_O_TRACEEXEC 0x00000010
|
|
#define PTRACE_O_TRACEVFORKDONE 0x00000020
|
|
#define PTRACE_O_TRACEEXIT 0x00000040
|
|
|
|
/* fcntl */
|
|
#ifndef F_LINUX_SPECIFIC_BASE
|
|
#define F_LINUX_SPECIFIC_BASE 1024
|
|
#endif
|
|
#ifndef F_SETPIPE_SZ
|
|
# define F_SETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 7)
|
|
#endif
|
|
#ifndef F_GETPIPE_SZ
|
|
# define F_GETPIPE_SZ (F_LINUX_SPECIFIC_BASE + 8)
|
|
#endif
|
|
|
|
#define CLONE_CHILD_USEPID 0x02000000
|
|
#define CLONE_VFORK 0x00004000
|
|
|
|
typedef uint64_t u64;
|
|
typedef int64_t s64;
|
|
typedef unsigned int u32;
|
|
typedef signed int s32;
|
|
typedef unsigned short u16;
|
|
typedef signed short s16;
|
|
typedef unsigned char u8;
|
|
typedef signed char s8;
|
|
|
|
#define MAJOR(dev) ((dev)>>8)
|
|
|
|
#ifdef CONFIG_X86_64
|
|
|
|
typedef struct {
|
|
unsigned long r15;
|
|
unsigned long r14;
|
|
unsigned long r13;
|
|
unsigned long r12;
|
|
unsigned long bp;
|
|
unsigned long bx;
|
|
unsigned long r11;
|
|
unsigned long r10;
|
|
unsigned long r9;
|
|
unsigned long r8;
|
|
unsigned long ax;
|
|
unsigned long cx;
|
|
unsigned long dx;
|
|
unsigned long si;
|
|
unsigned long di;
|
|
unsigned long orig_ax;
|
|
unsigned long ip;
|
|
unsigned long cs;
|
|
unsigned long flags;
|
|
unsigned long sp;
|
|
unsigned long ss;
|
|
unsigned long fs_base;
|
|
unsigned long gs_base;
|
|
unsigned long ds;
|
|
unsigned long es;
|
|
unsigned long fs;
|
|
unsigned long gs;
|
|
} user_regs_struct_t;
|
|
|
|
typedef struct {
|
|
unsigned short cwd;
|
|
unsigned short swd;
|
|
unsigned short twd; /* Note this is not the same as
|
|
the 32bit/x87/FSAVE twd */
|
|
unsigned short fop;
|
|
u64 rip;
|
|
u64 rdp;
|
|
u32 mxcsr;
|
|
u32 mxcsr_mask;
|
|
u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
|
|
u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */
|
|
u32 padding[24];
|
|
} user_fpregs_struct_t;
|
|
|
|
#else /* CONFIG_X86_64 */
|
|
|
|
typedef struct {
|
|
unsigned long bx;
|
|
unsigned long cx;
|
|
unsigned long dx;
|
|
unsigned long si;
|
|
unsigned long di;
|
|
unsigned long bp;
|
|
unsigned long ax;
|
|
unsigned long ds;
|
|
unsigned long es;
|
|
unsigned long fs;
|
|
unsigned long gs;
|
|
unsigned long orig_ax;
|
|
unsigned long ip;
|
|
unsigned long cs;
|
|
unsigned long flags;
|
|
unsigned long sp;
|
|
unsigned long ss;
|
|
} user_regs_struct_t;
|
|
|
|
#endif /* CONFIG_X86_64 */
|
|
|
|
#ifndef PAGE_SIZE
|
|
# define PAGE_SIZE 4096
|
|
#endif
|
|
|
|
#endif /* CR_TYPES_H_ */
|