1ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 2ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 3ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- AMD64/Linux-specific kernel interface. vki-amd64-linux.h ---*/ 4ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 5ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 6ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* 7ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This file is part of Valgrind, a dynamic binary instrumentation 8ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown framework. 9ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 10663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng Copyright (C) 2000-2012 Julian Seward 11ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown jseward@acm.org 12ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 13ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is free software; you can redistribute it and/or 14ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown modify it under the terms of the GNU General Public License as 15ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown published by the Free Software Foundation; either version 2 of the 16ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown License, or (at your option) any later version. 17ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 18ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown This program is distributed in the hope that it will be useful, but 19ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown WITHOUT ANY WARRANTY; without even the implied warranty of 20ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown General Public License for more details. 22ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 23ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown You should have received a copy of the GNU General Public License 24ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown along with this program; if not, write to the Free Software 25ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 02111-1307, USA. 27ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 28ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown The GNU General Public License is contained in the file COPYING. 29ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown*/ 30ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 31ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#ifndef __VKI_AMD64_LINUX_H 32ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define __VKI_AMD64_LINUX_H 33ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 34ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// AMD64 is little-endian. 35ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_LITTLE_ENDIAN 1 36ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 37ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 38ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/types.h 39ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 40ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 41ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned char __vki_u8; 42ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 43ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __signed__ short __vki_s16; 44ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned short __vki_u16; 45ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 46ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __signed__ int __vki_s32; 47ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned int __vki_u32; 48ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 49ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __signed__ long long __vki_s64; 50ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long long __vki_u64; 51ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 52ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned short vki_u16; 53ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 54ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned int vki_u32; 55ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 56ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 57ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/page.h 58ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 59ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 60ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PAGE_SHIFT 12 61ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) 62ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT 63ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE 64ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 65ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 66ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h 67ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 68ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 69ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SHMLBA VKI_PAGE_SIZE 70ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 71ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 72ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/signal.h 73ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 74ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 75ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_NSIG 64 76ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_NSIG_BPW 64 77ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 78ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 79ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long vki_old_sigset_t; /* at least 32 bits */ 80ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 81ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct { 82ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sig[_VKI_NSIG_WORDS]; 83ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} vki_sigset_t; 84ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 85ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGHUP 1 86ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGINT 2 87ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGQUIT 3 88ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGILL 4 89ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTRAP 5 90ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGABRT 6 91ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGBUS 7 92ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGFPE 8 93ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGKILL 9 94ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGUSR1 10 95ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSEGV 11 96ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGUSR2 12 97ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGPIPE 13 98ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGALRM 14 99ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTERM 15 100ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSTKFLT 16 101ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGCHLD 17 102ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGCONT 18 103ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSTOP 19 104ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTSTP 20 105ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTTIN 21 106ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGTTOU 22 107ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGURG 23 108ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGXCPU 24 109ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGXFSZ 25 110ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGVTALRM 26 111ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGPROF 27 112ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGWINCH 28 113ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGIO 29 114ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGPWR 30 115ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGSYS 31 116ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGUNUSED 31 117ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 118ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGRTMIN 32 119ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIGRTMAX _VKI_NSIG 120ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 121ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NOCLDSTOP 0x00000001 122ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NOCLDWAIT 0x00000002 123ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_SIGINFO 0x00000004 124ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_ONSTACK 0x08000000 125ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_RESTART 0x10000000 126ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NODEFER 0x40000000 127ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_RESETHAND 0x80000000 128ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 129ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_NOMASK VKI_SA_NODEFER 130ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_ONESHOT VKI_SA_RESETHAND 131ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 132ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SA_RESTORER 0x04000000 133ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 134ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SS_ONSTACK 1 135ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SS_DISABLE 2 136ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 137ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MINSIGSTKSZ 2048 138ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 139ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_BLOCK 0 /* for blocking signals */ 140ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ 141ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ 142ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 143ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef void __vki_signalfn_t(int); 144ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __vki_signalfn_t __user *__vki_sighandler_t; 145ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 146ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef void __vki_restorefn_t(void); 147ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef __vki_restorefn_t __user *__vki_sigrestore_t; 148ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 149ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ 150ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ 151ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 152ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_sigaction_base { 153ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // [[Nb: a 'k' prefix is added to "sa_handler" because 154ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // bits/sigaction.h (which gets dragged in somehow via signal.h) 155ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // #defines it as something else. Since that is done for glibc's 156ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown // purposes, which we don't care about here, we use our own name.]] 157ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_sighandler_t ksa_handler; 158ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sa_flags; 159ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_sigrestore_t sa_restorer; 160ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_sigset_t sa_mask; /* mask last for extensibility */ 161ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 162ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 163ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* On Linux we use the same type for passing sigactions to 164ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown and from the kernel. Hence: */ 165ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_sigaction_base vki_sigaction_toK_t; 166ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_sigaction_base vki_sigaction_fromK_t; 167ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 168ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 169ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_sigaltstack { 170ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown void __user *ss_sp; 171ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int ss_flags; 172ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_size_t ss_size; 173ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown} vki_stack_t; 174ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 175ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 176ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/sigcontext.h 177ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 178ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 179ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct _vki_fpstate { 180ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u16 cwd; 181ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u16 swd; 182ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u16 twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */ 183ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u16 fop; 184ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u64 rip; 185ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u64 rdp; 186ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 mxcsr; 187ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 mxcsr_mask; 188ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 st_space[32]; /* 8*16 bytes for each FP-reg */ 189ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg */ 190ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 reserved2[24]; 191ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 192ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 193ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_sigcontext { 194ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r8; 195ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r9; 196ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r10; 197ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r11; 198ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r12; 199ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r13; 200ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r14; 201ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r15; 202ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rdi; 203ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rsi; 204ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rbp; 205ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rbx; 206ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rdx; 207ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rax; 208ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rcx; 209ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rsp; 210ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rip; 211ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long eflags; /* RFLAGS */ 212ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short cs; 213ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short gs; 214ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short fs; 215ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short __pad0; 216ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long err; 217ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long trapno; 218ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long oldmask; 219ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long cr2; 220ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct _vki_fpstate __user *fpstate; /* zero when no FPU context */ 221ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long reserved1[8]; 222ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 223ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 224ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 225ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/mman.h 226ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 227ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 228ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_READ 0x1 /* page can be read */ 229ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_WRITE 0x2 /* page can be written */ 230ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_EXEC 0x4 /* page can be executed */ 231ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_NONE 0x0 /* page can not be accessed */ 232ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ 233ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ 234ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 235ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_SHARED 0x01 /* Share changes */ 236ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ 237ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ 238ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ 239ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_MAP_NORESERVE 0x4000 /* don't check for reservations */ 240ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 241ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 242ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/fcntl.h 243ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 244ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 245ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_RDONLY 00 246ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_WRONLY 01 247ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_RDWR 02 248ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_CREAT 0100 /* not fcntl */ 249ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_EXCL 0200 /* not fcntl */ 250ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_TRUNC 01000 /* not fcntl */ 251ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_APPEND 02000 252ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_NONBLOCK 04000 253ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_O_LARGEFILE 0100000 254ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 255ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_AT_FDCWD -100 256ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 257ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_DUPFD 0 /* dup */ 258ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETFD 1 /* get close_on_exec */ 259ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETFD 2 /* set/clear close_on_exec */ 260ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETFL 3 /* get file->f_flags */ 261ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETFL 4 /* set file->f_flags */ 262ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETLK 5 263ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETLK 6 264ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETLKW 7 265ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 266ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETOWN 8 /* for sockets. */ 267ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETOWN 9 /* for sockets. */ 268ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_SETSIG 10 /* for sockets. */ 269ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_GETSIG 11 /* for sockets. */ 270ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 271663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_SETOWN_EX 15 272663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_GETOWN_EX 16 273663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 274663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_OWNER_TID 0 275663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_OWNER_PID 1 276663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng#define VKI_F_OWNER_PGRP 2 277663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 278663860b1408516d02ebfcb3a9999a134e6cfb223Ben Chengstruct vki_f_owner_ex { 279663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng int type; 280663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng __vki_kernel_pid_t pid; 281663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng}; 282663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng 283ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ 284ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 285ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_F_LINUX_SPECIFIC_BASE 1024 286ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 287ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 288ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/resource.h 289ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 290ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 291ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_DATA 2 /* max data size */ 292ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_STACK 3 /* max stack size */ 293ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_CORE 4 /* max core file size */ 294ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ 295ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 296ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 297ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/socket.h 298ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 299ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 300ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SOL_SOCKET 1 301ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 302ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SO_TYPE 3 303ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 304ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 305ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/sockios.h 306ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 307ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 308ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCSPGRP 0x8902 309ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCGPGRP 0x8904 310ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ 311ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ 312ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 313ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 314ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/stat.h 315ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 316ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 317ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_stat { 318ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_dev; 319ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ino; 320ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_nlink; 321ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 322ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int st_mode; 323ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int st_uid; 324ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int st_gid; 325ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int __pad0; 326ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_rdev; 327ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long st_size; 328ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long st_blksize; 329ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long st_blocks; /* Number 512-byte blocks allocated. */ 330ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 331ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_atime; 332ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_atime_nsec; 333ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_mtime; 334ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_mtime_nsec; 335ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ctime; 336ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long st_ctime_nsec; 337ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long __unused[3]; 338ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 339ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 340ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 341ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/statfs.h 342ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 343ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 344ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_statfs { 345ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_type; 346ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_bsize; 347ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_blocks; 348ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_bfree; 349ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_bavail; 350ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_files; 351ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_ffree; 352ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_fsid_t f_fsid; 353ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_namelen; 354ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_frsize; 355ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown long f_spare[5]; 356ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 357ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 358ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 359ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/termios.h 360ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 361ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 362ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_winsize { 363ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_row; 364ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_col; 365ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_xpixel; 366ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short ws_ypixel; 367ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 368ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 369ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_NCC 8 370ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_termio { 371ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_iflag; /* input mode flags */ 372ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_oflag; /* output mode flags */ 373ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_cflag; /* control mode flags */ 374ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short c_lflag; /* local mode flags */ 375ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char c_line; /* line discipline */ 376ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned char c_cc[VKI_NCC]; /* control characters */ 377ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 378ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 379ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 380ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/termbits.h 381ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 382ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 383ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned char vki_cc_t; 384ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned int vki_tcflag_t; 385ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 386ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_NCCS 19 387ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_termios { 388ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_iflag; /* input mode flags */ 389ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_oflag; /* output mode flags */ 390ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_cflag; /* control mode flags */ 391ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_tcflag_t c_lflag; /* local mode flags */ 392ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_cc_t c_line; /* line discipline */ 393ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_cc_t c_cc[VKI_NCCS]; /* control characters */ 394ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 395ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 396ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 397ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 398ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/ioctl.h 399ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 400ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 401ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NRBITS 8 402ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_TYPEBITS 8 403ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZEBITS 14 404ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIRBITS 2 405ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 406ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) 407ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) 408ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 409ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NRSHIFT 0 410ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) 411ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) 412ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) 413ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 414ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_NONE 0U 415ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_WRITE 1U 416ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_READ 2U 417ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 418ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC(dir,type,nr,size) \ 419ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown (((dir) << _VKI_IOC_DIRSHIFT) | \ 420ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ((type) << _VKI_IOC_TYPESHIFT) | \ 421ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ((nr) << _VKI_IOC_NRSHIFT) | \ 422ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown ((size) << _VKI_IOC_SIZESHIFT)) 423ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 424ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) 425ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size)) 426ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 427ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 428ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 429ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) 430ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) 431ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 432ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 433ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/ioctls.h 434ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 435ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 436ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCGETS 0x5401 437ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETS 0x5402 438ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETSW 0x5403 439ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETSF 0x5404 440ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCGETA 0x5405 441ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETA 0x5406 442ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETAW 0x5407 443ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSETAF 0x5408 444ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSBRK 0x5409 445ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCXONC 0x540A 446ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCFLSH 0x540B 447ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSCTTY 0x540E 448ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGPGRP 0x540F 449ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSPGRP 0x5410 450ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCOUTQ 0x5411 451ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGWINSZ 0x5413 452ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSWINSZ 0x5414 453ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMGET 0x5415 454ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMBIS 0x5416 455ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMBIC 0x5417 456ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCMSET 0x5418 457ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FIONREAD 0x541B 458ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCLINUX 0x541C 459ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FIONBIO 0x5421 460ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ 461ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 462ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ 463ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 464ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_FIOASYNC 0x5452 465ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ 466ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 467ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 468ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 469ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 470ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/poll.h 471ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 472ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 473ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_POLLIN 0x0001 474ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 475ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_pollfd { 476ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown int fd; 477ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown short events; 478ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown short revents; 479ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 480ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 481ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 482ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/user.h 483ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 484ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 485ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_i387_struct { 486ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short cwd; 487ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short swd; 488ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */ 489ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short fop; 490ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u64 rip; 491ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u64 rdp; 492ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 mxcsr; 493ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 mxcsr_mask; 494ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ 495ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */ 496ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_u32 padding[24]; 497ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 498ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 499ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_regs_struct { 500ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r15,r14,r13,r12,rbp,rbx,r11,r10; 501ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long r9,r8,rax,rcx,rdx,rsi,rdi,orig_rax; 502ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rip,cs,eflags; 503ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long rsp,ss; 504ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long fs_base, gs_base; 505ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long ds,es,fs,gs; 506ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 507ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 508ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 509ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/elf.h 510ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 511ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 512ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef unsigned long vki_elf_greg_t; 513ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 514ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t)) 515ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; 516ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 517ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_user_i387_struct vki_elf_fpregset_t; 518ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 519ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 520ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/ucontext.h 521ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 522ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 523ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_ucontext { 524ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long uc_flags; 525ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ucontext *uc_link; 526ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_stack_t uc_stack; 527ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_sigcontext uc_mcontext; 528ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_sigset_t uc_sigmask; /* mask last for extensibility */ 529ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 530ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 531ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 532ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/segment.h 533ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 534ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 535ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_GDT_ENTRY_TLS_ENTRIES 3 536ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 537ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_GDT_ENTRY_TLS_MIN 11 538ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_GDT_ENTRY_TLS_MAX 13 539ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 540ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 541ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.11.9/include/asm-x86_64/prctl.h 542ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 543ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 544ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_ARCH_SET_GS 0x1001 545ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_ARCH_SET_FS 0x1002 546ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_ARCH_GET_FS 0x1003 547ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_ARCH_GET_GS 0x1004 548ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 549ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 550ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.9/include/asm-x86_64/ldt.h 551ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 552ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 553ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// I think this LDT stuff will have to be reinstated for amd64, but I'm not 554ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// certain. (Nb: The sys_arch_prctl seems to have replaced 555ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// [gs]et_thread_area syscalls.) 556ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// 557ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// Note that the type here is very slightly different to the 558ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// type for x86 (the final 'lm' field is added); I'm not sure about the 559ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// significance of that... --njn 560ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 561ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/* [[Nb: This is the structure passed to the modify_ldt syscall. Just so as 562ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown to confuse and annoy everyone, this is _not_ the same as an 563ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown VgLdtEntry and has to be translated into such. The logic for doing 564ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown so, in vg_ldt.c, is copied from the kernel sources.]] */ 565663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng/* Note also that a comment in ldt.h indicates that the below 566663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng contains several fields ignored on 64bit, and that modify_ldt 567663860b1408516d02ebfcb3a9999a134e6cfb223Ben Cheng is rather for 32bit. */ 568ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_user_desc { 569ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int entry_number; 570ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long base_addr; 571ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int limit; 572ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int seg_32bit:1; 573ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int contents:2; 574ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int read_exec_only:1; 575ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int limit_in_pages:1; 576ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int seg_not_present:1; 577ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int useable:1; 578ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned int lm:1; 579ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 580ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 581ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// [[Nb: for our convenience within Valgrind, use a more specific name]] 582ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Browntypedef struct vki_user_desc vki_modify_ldt_t; 583ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 584ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 585ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h 586ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 587ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 588ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_ipc64_perm 589ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown{ 590ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_key_t key; 591ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_uid32_t uid; 592ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_gid32_t gid; 593ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_uid32_t cuid; 594ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_gid32_t cgid; 595ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_mode_t mode; 596ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short __pad1; 597ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short seq; 598ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned short __pad2; 599ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 600ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 601ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 602ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 603ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 604ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.11.2/include/asm-x86_64/sembuf.h 605ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 606ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 607ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_semid64_ds { 608ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ 609ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t sem_otime; /* last semop time */ 610ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 611ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t sem_ctime; /* last change time */ 612ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 613ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long sem_nsems; /* no. of semaphores in array */ 614ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused3; 615ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 616ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 617ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 618ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 619ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.11.2/include/asm-x86_64/msgbuf.h 620ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 621ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 622ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_msqid64_ds { 623ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ipc64_perm msg_perm; 624ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t msg_stime; /* last msgsnd time */ 625ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t msg_rtime; /* last msgrcv time */ 626ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t msg_ctime; /* last change time */ 627ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long msg_cbytes; /* current number of bytes on queue */ 628ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long msg_qnum; /* number of messages in queue */ 629ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long msg_qbytes; /* max number of bytes on queue */ 630ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ 631ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t msg_lrpid; /* last receive pid */ 632ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 633ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused5; 634ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 635ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 636ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 637ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.11.2/include/asm-x86_64/shmbuf.h 638ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 639ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 640ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_shmid64_ds { 641ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown struct vki_ipc64_perm shm_perm; /* operation perms */ 642ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown vki_size_t shm_segsz; /* size of segment (bytes) */ 643ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t shm_atime; /* last attach time */ 644ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t shm_dtime; /* last detach time */ 645ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_time_t shm_ctime; /* last change time */ 646ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t shm_cpid; /* pid of creator */ 647ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown __vki_kernel_pid_t shm_lpid; /* pid of last operator */ 648ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shm_nattch; /* no. of current attaches */ 649ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 650ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused5; 651ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 652ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 653ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brownstruct vki_shminfo64 { 654ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmmax; 655ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmmin; 656ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmmni; 657ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmseg; 658ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long shmall; 659ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused1; 660ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused2; 661ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused3; 662ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown unsigned long __unused4; 663ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown}; 664ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 665ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 666ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// From linux-2.6.12.2/include/asm-x86_64/ptrace.h 667ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 668ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 669ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_GETREGS 12 670ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_SETREGS 13 671ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_GETFPREGS 14 672ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#define VKI_PTRACE_SETFPREGS 15 673ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 674ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 675ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown// And that's it! 676ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown//---------------------------------------------------------------------- 677ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 678ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown#endif // __VKI_AMD64_LINUX_H 679ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown 680ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 681ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--- end ---*/ 682ed07e00d438c74b7a23c01bfffde77e3968305e4Jeff Brown/*--------------------------------------------------------------------*/ 683