File indexing completed on 2025-12-16 10:32:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef __VKI_AMD64_LINUX_H
0030 #define __VKI_AMD64_LINUX_H
0031
0032
0033 #define VKI_LITTLE_ENDIAN 1
0034
0035
0036
0037
0038
0039 typedef unsigned char __vki_u8;
0040
0041 typedef __signed__ short __vki_s16;
0042 typedef unsigned short __vki_u16;
0043
0044 typedef __signed__ int __vki_s32;
0045 typedef unsigned int __vki_u32;
0046
0047 typedef __signed__ long long __vki_s64;
0048 typedef unsigned long long __vki_u64;
0049
0050 typedef unsigned short vki_u16;
0051
0052 typedef unsigned int vki_u32;
0053
0054
0055
0056
0057
0058 #define VKI_PAGE_SHIFT 12
0059 #define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
0060 #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
0061 #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE
0062
0063
0064
0065
0066
0067 #define VKI_SHMLBA VKI_PAGE_SIZE
0068
0069
0070
0071
0072
0073 #define _VKI_NSIG 64
0074 #define _VKI_NSIG_BPW 64
0075 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
0076
0077 typedef unsigned long vki_old_sigset_t;
0078
0079 typedef struct {
0080 unsigned long sig[_VKI_NSIG_WORDS];
0081 } vki_sigset_t;
0082
0083 #define VKI_SIGHUP 1
0084 #define VKI_SIGINT 2
0085 #define VKI_SIGQUIT 3
0086 #define VKI_SIGILL 4
0087 #define VKI_SIGTRAP 5
0088 #define VKI_SIGABRT 6
0089 #define VKI_SIGBUS 7
0090 #define VKI_SIGFPE 8
0091 #define VKI_SIGKILL 9
0092 #define VKI_SIGUSR1 10
0093 #define VKI_SIGSEGV 11
0094 #define VKI_SIGUSR2 12
0095 #define VKI_SIGPIPE 13
0096 #define VKI_SIGALRM 14
0097 #define VKI_SIGTERM 15
0098 #define VKI_SIGSTKFLT 16
0099 #define VKI_SIGCHLD 17
0100 #define VKI_SIGCONT 18
0101 #define VKI_SIGSTOP 19
0102 #define VKI_SIGTSTP 20
0103 #define VKI_SIGTTIN 21
0104 #define VKI_SIGTTOU 22
0105 #define VKI_SIGURG 23
0106 #define VKI_SIGXCPU 24
0107 #define VKI_SIGXFSZ 25
0108 #define VKI_SIGVTALRM 26
0109 #define VKI_SIGPROF 27
0110 #define VKI_SIGWINCH 28
0111 #define VKI_SIGIO 29
0112 #define VKI_SIGPWR 30
0113 #define VKI_SIGSYS 31
0114 #define VKI_SIGUNUSED 31
0115
0116 #define VKI_SIGRTMIN 32
0117 #define VKI_SIGRTMAX _VKI_NSIG
0118
0119 #define VKI_SA_NOCLDSTOP 0x00000001
0120 #define VKI_SA_NOCLDWAIT 0x00000002
0121 #define VKI_SA_SIGINFO 0x00000004
0122 #define VKI_SA_ONSTACK 0x08000000
0123 #define VKI_SA_RESTART 0x10000000
0124 #define VKI_SA_NODEFER 0x40000000
0125 #define VKI_SA_RESETHAND 0x80000000
0126
0127 #define VKI_SA_NOMASK VKI_SA_NODEFER
0128 #define VKI_SA_ONESHOT VKI_SA_RESETHAND
0129
0130 #define VKI_SA_RESTORER 0x04000000
0131
0132 #define VKI_SS_ONSTACK 1
0133 #define VKI_SS_DISABLE 2
0134
0135 #define VKI_MINSIGSTKSZ 2048
0136
0137 #define VKI_SIG_BLOCK 0
0138 #define VKI_SIG_UNBLOCK 1
0139 #define VKI_SIG_SETMASK 2
0140
0141 typedef void __vki_signalfn_t(int);
0142 typedef __vki_signalfn_t __user *__vki_sighandler_t;
0143
0144 typedef void __vki_restorefn_t(void);
0145 typedef __vki_restorefn_t __user *__vki_sigrestore_t;
0146
0147 #define VKI_SIG_DFL ((__vki_sighandler_t)0)
0148 #define VKI_SIG_IGN ((__vki_sighandler_t)1)
0149
0150 struct vki_sigaction_base {
0151
0152
0153
0154
0155 __vki_sighandler_t ksa_handler;
0156 unsigned long sa_flags;
0157 __vki_sigrestore_t sa_restorer;
0158 vki_sigset_t sa_mask;
0159 };
0160
0161
0162
0163 typedef struct vki_sigaction_base vki_sigaction_toK_t;
0164 typedef struct vki_sigaction_base vki_sigaction_fromK_t;
0165
0166
0167 typedef struct vki_sigaltstack {
0168 void __user *ss_sp;
0169 int ss_flags;
0170 vki_size_t ss_size;
0171 } vki_stack_t;
0172
0173
0174
0175
0176
0177 struct _vki_fpstate {
0178 __vki_u16 cwd;
0179 __vki_u16 swd;
0180 __vki_u16 twd;
0181 __vki_u16 fop;
0182 __vki_u64 rip;
0183 __vki_u64 rdp;
0184 __vki_u32 mxcsr;
0185 __vki_u32 mxcsr_mask;
0186 __vki_u32 st_space[32];
0187 __vki_u32 xmm_space[64];
0188 __vki_u32 reserved2[24];
0189 };
0190
0191 struct vki_sigcontext {
0192 unsigned long r8;
0193 unsigned long r9;
0194 unsigned long r10;
0195 unsigned long r11;
0196 unsigned long r12;
0197 unsigned long r13;
0198 unsigned long r14;
0199 unsigned long r15;
0200 unsigned long rdi;
0201 unsigned long rsi;
0202 unsigned long rbp;
0203 unsigned long rbx;
0204 unsigned long rdx;
0205 unsigned long rax;
0206 unsigned long rcx;
0207 unsigned long rsp;
0208 unsigned long rip;
0209 unsigned long eflags;
0210 unsigned short cs;
0211 unsigned short gs;
0212 unsigned short fs;
0213 unsigned short __pad0;
0214 unsigned long err;
0215 unsigned long trapno;
0216 unsigned long oldmask;
0217 unsigned long cr2;
0218 struct _vki_fpstate __user *fpstate;
0219 unsigned long reserved1[8];
0220 };
0221
0222
0223
0224
0225
0226 #define VKI_PROT_READ 0x1
0227 #define VKI_PROT_WRITE 0x2
0228 #define VKI_PROT_EXEC 0x4
0229 #define VKI_PROT_NONE 0x0
0230 #define VKI_PROT_GROWSDOWN 0x01000000
0231 #define VKI_PROT_GROWSUP 0x02000000
0232
0233 #define VKI_MAP_SHARED 0x01
0234 #define VKI_MAP_PRIVATE 0x02
0235 #define VKI_MAP_FIXED 0x10
0236 #define VKI_MAP_ANONYMOUS 0x20
0237 #define VKI_MAP_32BIT 0x40
0238 #define VKI_MAP_NORESERVE 0x4000
0239
0240
0241
0242
0243
0244 #define VKI_O_ACCMODE 03
0245 #define VKI_O_RDONLY 00
0246 #define VKI_O_WRONLY 01
0247 #define VKI_O_RDWR 02
0248 #define VKI_O_CREAT 0100
0249 #define VKI_O_EXCL 0200
0250 #define VKI_O_TRUNC 01000
0251 #define VKI_O_APPEND 02000
0252 #define VKI_O_NONBLOCK 04000
0253 #define VKI_O_DIRECT 040000
0254 #define VKI_O_LARGEFILE 0100000
0255
0256 #define VKI_AT_FDCWD -100
0257
0258 #define VKI_F_DUPFD 0
0259 #define VKI_F_GETFD 1
0260 #define VKI_F_SETFD 2
0261 #define VKI_F_GETFL 3
0262 #define VKI_F_SETFL 4
0263 #define VKI_F_GETLK 5
0264 #define VKI_F_SETLK 6
0265 #define VKI_F_SETLKW 7
0266
0267 #define VKI_F_SETOWN 8
0268 #define VKI_F_GETOWN 9
0269 #define VKI_F_SETSIG 10
0270 #define VKI_F_GETSIG 11
0271
0272 #define VKI_F_SETOWN_EX 15
0273 #define VKI_F_GETOWN_EX 16
0274
0275 #define VKI_F_OFD_GETLK 36
0276 #define VKI_F_OFD_SETLK 37
0277 #define VKI_F_OFD_SETLKW 38
0278
0279 #define VKI_F_OWNER_TID 0
0280 #define VKI_F_OWNER_PID 1
0281 #define VKI_F_OWNER_PGRP 2
0282
0283 struct vki_f_owner_ex {
0284 int type;
0285 __vki_kernel_pid_t pid;
0286 };
0287
0288 #define VKI_FD_CLOEXEC 1
0289
0290 #define VKI_F_LINUX_SPECIFIC_BASE 1024
0291
0292
0293
0294
0295
0296 #define VKI_RLIMIT_DATA 2
0297 #define VKI_RLIMIT_STACK 3
0298 #define VKI_RLIMIT_CORE 4
0299 #define VKI_RLIMIT_NOFILE 7
0300
0301
0302
0303
0304
0305
0306 #ifdef __x86_64__
0307 # ifdef __ILP32__
0308 typedef long long __vki_kernel_si_clock_t __attribute__((aligned(4)));
0309 # define __VKI_ARCH_SI_CLOCK_T __vki_kernel_si_clock_t
0310 # define __VKI_ARCH_SI_ATTRIBUTES __attribute__((aligned(8)))
0311 # else
0312 # define __VKI_ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
0313 # endif
0314 #endif
0315
0316
0317
0318
0319
0320 #define VKI_SOL_SOCKET 1
0321
0322 #define VKI_SO_TYPE 3
0323
0324 #define VKI_SO_ATTACH_FILTER 26
0325
0326
0327
0328
0329
0330 #define VKI_SIOCSPGRP 0x8902
0331 #define VKI_SIOCGPGRP 0x8904
0332 #define VKI_SIOCATMARK 0x8905
0333 #define VKI_SIOCGSTAMP 0x8906
0334 #define VKI_SIOCGSTAMPNS 0x8907
0335
0336
0337
0338
0339
0340 struct vki_stat {
0341 unsigned long st_dev;
0342 unsigned long st_ino;
0343 unsigned long st_nlink;
0344
0345 unsigned int st_mode;
0346 unsigned int st_uid;
0347 unsigned int st_gid;
0348 unsigned int __pad0;
0349 unsigned long st_rdev;
0350 long st_size;
0351 long st_blksize;
0352 long st_blocks;
0353
0354 unsigned long st_atime;
0355 unsigned long st_atime_nsec;
0356 unsigned long st_mtime;
0357 unsigned long st_mtime_nsec;
0358 unsigned long st_ctime;
0359 unsigned long st_ctime_nsec;
0360 long __unused0[3];
0361 };
0362
0363
0364
0365
0366
0367 struct vki_statfs {
0368 long f_type;
0369 long f_bsize;
0370 long f_blocks;
0371 long f_bfree;
0372 long f_bavail;
0373 long f_files;
0374 long f_ffree;
0375 __vki_kernel_fsid_t f_fsid;
0376 long f_namelen;
0377 long f_frsize;
0378 long f_flags;
0379 long f_spare[4];
0380 };
0381
0382
0383
0384
0385
0386 struct vki_statfs64
0387 {
0388 long f_type;
0389 long f_bsize;
0390 unsigned long f_blocks;
0391 unsigned long f_bfree;
0392 unsigned long f_bavail;
0393 unsigned long f_files;
0394 unsigned long f_ffree;
0395 __vki_kernel_fsid_t f_fsid;
0396 long f_namelen;
0397 long f_frsize;
0398 long f_flags;
0399 long f_spare[4];
0400 };
0401
0402
0403
0404
0405
0406 struct vki_winsize {
0407 unsigned short ws_row;
0408 unsigned short ws_col;
0409 unsigned short ws_xpixel;
0410 unsigned short ws_ypixel;
0411 };
0412
0413 #define VKI_NCC 8
0414 struct vki_termio {
0415 unsigned short c_iflag;
0416 unsigned short c_oflag;
0417 unsigned short c_cflag;
0418 unsigned short c_lflag;
0419 unsigned char c_line;
0420 unsigned char c_cc[VKI_NCC];
0421 };
0422
0423
0424
0425
0426
0427 typedef unsigned char vki_cc_t;
0428 typedef unsigned int vki_tcflag_t;
0429
0430 #define VKI_NCCS 19
0431 struct vki_termios {
0432 vki_tcflag_t c_iflag;
0433 vki_tcflag_t c_oflag;
0434 vki_tcflag_t c_cflag;
0435 vki_tcflag_t c_lflag;
0436 vki_cc_t c_line;
0437 vki_cc_t c_cc[VKI_NCCS];
0438 };
0439
0440
0441
0442
0443
0444
0445 #define _VKI_IOC_NRBITS 8
0446 #define _VKI_IOC_TYPEBITS 8
0447 #define _VKI_IOC_SIZEBITS 14
0448 #define _VKI_IOC_DIRBITS 2
0449
0450 #define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1)
0451 #define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1)
0452
0453 #define _VKI_IOC_NRSHIFT 0
0454 #define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
0455 #define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
0456 #define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
0457
0458 #define _VKI_IOC_NONE 0U
0459 #define _VKI_IOC_WRITE 1U
0460 #define _VKI_IOC_READ 2U
0461
0462 #define _VKI_IOC(dir,type,nr,size) \
0463 (((dir) << _VKI_IOC_DIRSHIFT) | \
0464 ((type) << _VKI_IOC_TYPESHIFT) | \
0465 ((nr) << _VKI_IOC_NRSHIFT) | \
0466 ((size) << _VKI_IOC_SIZESHIFT))
0467
0468 #define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
0469 #define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size))
0470 #define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size))
0471 #define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size))
0472
0473 #define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
0474 #define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
0475
0476
0477
0478
0479
0480 #define VKI_TCGETS 0x5401
0481 #define VKI_TCSETS 0x5402
0482 #define VKI_TCSETSW 0x5403
0483 #define VKI_TCSETSF 0x5404
0484 #define VKI_TCGETA 0x5405
0485 #define VKI_TCSETA 0x5406
0486 #define VKI_TCSETAW 0x5407
0487 #define VKI_TCSETAF 0x5408
0488 #define VKI_TCSBRK 0x5409
0489 #define VKI_TCXONC 0x540A
0490 #define VKI_TCFLSH 0x540B
0491 #define VKI_TIOCSCTTY 0x540E
0492 #define VKI_TIOCGPGRP 0x540F
0493 #define VKI_TIOCSPGRP 0x5410
0494 #define VKI_TIOCOUTQ 0x5411
0495 #define VKI_TIOCGWINSZ 0x5413
0496 #define VKI_TIOCSWINSZ 0x5414
0497 #define VKI_TIOCMGET 0x5415
0498 #define VKI_TIOCMBIS 0x5416
0499 #define VKI_TIOCMBIC 0x5417
0500 #define VKI_TIOCMSET 0x5418
0501 #define VKI_FIONREAD 0x541B
0502 #define VKI_TIOCLINUX 0x541C
0503 #define VKI_FIONBIO 0x5421
0504 #define VKI_TIOCNOTTY 0x5422
0505 #define VKI_TCSBRKP 0x5425
0506 #define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int)
0507 #define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int)
0508
0509 #define VKI_FIONCLEX 0x5450
0510 #define VKI_FIOCLEX 0x5451
0511 #define VKI_FIOASYNC 0x5452
0512 #define VKI_TIOCSERGETLSR 0x5459
0513
0514 #define VKI_TIOCGICOUNT 0x545D
0515
0516
0517
0518
0519
0520 #define VKI_POLLIN 0x0001
0521
0522 struct vki_pollfd {
0523 int fd;
0524 short events;
0525 short revents;
0526 };
0527
0528
0529
0530
0531
0532 struct vki_user_i387_struct {
0533 unsigned short cwd;
0534 unsigned short swd;
0535 unsigned short twd;
0536 unsigned short fop;
0537 __vki_u64 rip;
0538 __vki_u64 rdp;
0539 __vki_u32 mxcsr;
0540 __vki_u32 mxcsr_mask;
0541 __vki_u32 st_space[32];
0542 __vki_u32 xmm_space[64];
0543 __vki_u32 padding[24];
0544 };
0545
0546 struct vki_user_regs_struct {
0547 unsigned long r15,r14,r13,r12,rbp,rbx,r11,r10;
0548 unsigned long r9,r8,rax,rcx,rdx,rsi,rdi,orig_rax;
0549 unsigned long rip,cs,eflags;
0550 unsigned long rsp,ss;
0551 unsigned long fs_base, gs_base;
0552 unsigned long ds,es,fs,gs;
0553 };
0554
0555
0556
0557
0558
0559 typedef unsigned long vki_elf_greg_t;
0560
0561 #define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
0562 typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
0563
0564 typedef struct vki_user_i387_struct vki_elf_fpregset_t;
0565
0566
0567
0568
0569
0570 struct vki_ucontext {
0571 unsigned long uc_flags;
0572 struct vki_ucontext *uc_link;
0573 vki_stack_t uc_stack;
0574 struct vki_sigcontext uc_mcontext;
0575 vki_sigset_t uc_sigmask;
0576 };
0577
0578
0579
0580
0581
0582 #define VKI_GDT_ENTRY_TLS_ENTRIES 3
0583
0584 #define VKI_GDT_ENTRY_TLS_MIN 11
0585 #define VKI_GDT_ENTRY_TLS_MAX 13
0586
0587
0588
0589
0590
0591 #define VKI_ARCH_SET_GS 0x1001
0592 #define VKI_ARCH_SET_FS 0x1002
0593 #define VKI_ARCH_GET_FS 0x1003
0594 #define VKI_ARCH_GET_GS 0x1004
0595
0596
0597
0598
0599
0600
0601
0602
0603
0604
0605
0606
0607
0608
0609
0610
0611
0612
0613
0614 struct vki_user_desc {
0615 unsigned int entry_number;
0616 unsigned int base_addr;
0617 unsigned int limit;
0618 unsigned int seg_32bit:1;
0619 unsigned int contents:2;
0620 unsigned int read_exec_only:1;
0621 unsigned int limit_in_pages:1;
0622 unsigned int seg_not_present:1;
0623 unsigned int useable:1;
0624 unsigned int lm:1;
0625 };
0626
0627
0628 typedef struct vki_user_desc vki_modify_ldt_t;
0629
0630
0631
0632
0633
0634 struct vki_ipc64_perm
0635 {
0636 __vki_kernel_key_t key;
0637 __vki_kernel_uid32_t uid;
0638 __vki_kernel_gid32_t gid;
0639 __vki_kernel_uid32_t cuid;
0640 __vki_kernel_gid32_t cgid;
0641 __vki_kernel_mode_t mode;
0642 unsigned short __pad1;
0643 unsigned short seq;
0644 unsigned short __pad2;
0645 unsigned long __unused1;
0646 unsigned long __unused2;
0647 };
0648
0649
0650
0651
0652
0653 struct vki_semid64_ds {
0654 struct vki_ipc64_perm sem_perm;
0655 __vki_kernel_time_t sem_otime;
0656 unsigned long __unused1;
0657 __vki_kernel_time_t sem_ctime;
0658 unsigned long __unused2;
0659 unsigned long sem_nsems;
0660 unsigned long __unused3;
0661 unsigned long __unused4;
0662 };
0663
0664
0665
0666
0667
0668 struct vki_msqid64_ds {
0669 struct vki_ipc64_perm msg_perm;
0670 __vki_kernel_time_t msg_stime;
0671 __vki_kernel_time_t msg_rtime;
0672 __vki_kernel_time_t msg_ctime;
0673 unsigned long msg_cbytes;
0674 unsigned long msg_qnum;
0675 unsigned long msg_qbytes;
0676 __vki_kernel_pid_t msg_lspid;
0677 __vki_kernel_pid_t msg_lrpid;
0678 unsigned long __unused4;
0679 unsigned long __unused5;
0680 };
0681
0682
0683
0684
0685
0686 struct vki_shmid64_ds {
0687 struct vki_ipc64_perm shm_perm;
0688 vki_size_t shm_segsz;
0689 __vki_kernel_time_t shm_atime;
0690 __vki_kernel_time_t shm_dtime;
0691 __vki_kernel_time_t shm_ctime;
0692 __vki_kernel_pid_t shm_cpid;
0693 __vki_kernel_pid_t shm_lpid;
0694 unsigned long shm_nattch;
0695 unsigned long __unused4;
0696 unsigned long __unused5;
0697 };
0698
0699 struct vki_shminfo64 {
0700 unsigned long shmmax;
0701 unsigned long shmmin;
0702 unsigned long shmmni;
0703 unsigned long shmseg;
0704 unsigned long shmall;
0705 unsigned long __unused1;
0706 unsigned long __unused2;
0707 unsigned long __unused3;
0708 unsigned long __unused4;
0709 };
0710
0711
0712
0713
0714
0715 #define VKI_PTRACE_GETREGS 12
0716 #define VKI_PTRACE_SETREGS 13
0717 #define VKI_PTRACE_GETFPREGS 14
0718 #define VKI_PTRACE_SETFPREGS 15
0719
0720
0721
0722 #define VKI_PTRACE_GET_THREAD_AREA 25
0723 #define VKI_PTRACE_SET_THREAD_AREA 26
0724
0725
0726
0727
0728
0729 #define VKI_ENOSYS 38
0730 #define VKI_EOVERFLOW 75
0731
0732
0733
0734
0735
0736 #define VKI_TIOCGSERIAL 0x541E
0737 #define VKI_TIOCSSERIAL 0x541F
0738
0739
0740
0741
0742
0743 #endif
0744
0745
0746
0747