159570ffbe31930ab4d678754daaeec0715117a3dsewardj 259570ffbe31930ab4d678754daaeec0715117a3dsewardj/*--------------------------------------------------------------------*/ 359570ffbe31930ab4d678754daaeec0715117a3dsewardj/*--- arm/Linux-specific kernel interface. vki-arm-linux.h ---*/ 459570ffbe31930ab4d678754daaeec0715117a3dsewardj/*--------------------------------------------------------------------*/ 559570ffbe31930ab4d678754daaeec0715117a3dsewardj 659570ffbe31930ab4d678754daaeec0715117a3dsewardj/* 759570ffbe31930ab4d678754daaeec0715117a3dsewardj This file is part of Valgrind, a dynamic binary instrumentation 859570ffbe31930ab4d678754daaeec0715117a3dsewardj framework. 959570ffbe31930ab4d678754daaeec0715117a3dsewardj 10b3a1e4bffbdbbf38304f216af405009868f43628sewardj Copyright (C) 2000-2015 Julian Seward 1159570ffbe31930ab4d678754daaeec0715117a3dsewardj jseward@acm.org 1259570ffbe31930ab4d678754daaeec0715117a3dsewardj 1359570ffbe31930ab4d678754daaeec0715117a3dsewardj This program is free software; you can redistribute it and/or 1459570ffbe31930ab4d678754daaeec0715117a3dsewardj modify it under the terms of the GNU General Public License as 1559570ffbe31930ab4d678754daaeec0715117a3dsewardj published by the Free Software Foundation; either version 2 of the 1659570ffbe31930ab4d678754daaeec0715117a3dsewardj License, or (at your option) any later version. 1759570ffbe31930ab4d678754daaeec0715117a3dsewardj 1859570ffbe31930ab4d678754daaeec0715117a3dsewardj This program is distributed in the hope that it will be useful, but 1959570ffbe31930ab4d678754daaeec0715117a3dsewardj WITHOUT ANY WARRANTY; without even the implied warranty of 2059570ffbe31930ab4d678754daaeec0715117a3dsewardj MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2159570ffbe31930ab4d678754daaeec0715117a3dsewardj General Public License for more details. 2259570ffbe31930ab4d678754daaeec0715117a3dsewardj 2359570ffbe31930ab4d678754daaeec0715117a3dsewardj You should have received a copy of the GNU General Public License 2459570ffbe31930ab4d678754daaeec0715117a3dsewardj along with this program; if not, write to the Free Software 2559570ffbe31930ab4d678754daaeec0715117a3dsewardj Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 2659570ffbe31930ab4d678754daaeec0715117a3dsewardj 02111-1307, USA. 2759570ffbe31930ab4d678754daaeec0715117a3dsewardj 2859570ffbe31930ab4d678754daaeec0715117a3dsewardj The GNU General Public License is contained in the file COPYING. 2959570ffbe31930ab4d678754daaeec0715117a3dsewardj*/ 3059570ffbe31930ab4d678754daaeec0715117a3dsewardj 3159570ffbe31930ab4d678754daaeec0715117a3dsewardj#ifndef __VKI_ARM_LINUX_H 3259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define __VKI_ARM_LINUX_H 3359570ffbe31930ab4d678754daaeec0715117a3dsewardj 3459570ffbe31930ab4d678754daaeec0715117a3dsewardj// arm is little-endian. 3559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_LITTLE_ENDIAN 1 3659570ffbe31930ab4d678754daaeec0715117a3dsewardj 37e61a62846b628d1df4211eadd14eff64cca9645bsewardj// The various comments below indicating i386-ness should be regarded 38e61a62846b628d1df4211eadd14eff64cca9645bsewardj// with great skepticism -- they are quite possibly wrong. But see 39e61a62846b628d1df4211eadd14eff64cca9645bsewardj// also bug 269079 comment 0. 40e61a62846b628d1df4211eadd14eff64cca9645bsewardj 4159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 4259570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/types.h 4359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 4459570ffbe31930ab4d678754daaeec0715117a3dsewardj 4559570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned char __vki_u8; 4659570ffbe31930ab4d678754daaeec0715117a3dsewardj 4759570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef __signed__ short __vki_s16; 4859570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned short __vki_u16; 4959570ffbe31930ab4d678754daaeec0715117a3dsewardj 5059570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef __signed__ int __vki_s32; 5159570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned int __vki_u32; 5259570ffbe31930ab4d678754daaeec0715117a3dsewardj 5359570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef __signed__ long long __vki_s64; 5459570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned long long __vki_u64; 5559570ffbe31930ab4d678754daaeec0715117a3dsewardj 5659570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned short vki_u16; 5759570ffbe31930ab4d678754daaeec0715117a3dsewardj 5859570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned int vki_u32; 5959570ffbe31930ab4d678754daaeec0715117a3dsewardj 6059570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 6159570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/page.h 6259570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 6359570ffbe31930ab4d678754daaeec0715117a3dsewardj 6459570ffbe31930ab4d678754daaeec0715117a3dsewardj/* PAGE_SHIFT determines the page size */ 6559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PAGE_SHIFT 12 6659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) 6759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT 6859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE 6959570ffbe31930ab4d678754daaeec0715117a3dsewardj 7059570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 71a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj// From linux-2.6.35.4/arch/arm/include/asm/shmparam.h 72a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj//---------------------------------------------------------------------- 73a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj 74a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) 75a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj 76a69c2def56fbfa9212f804b265ec2650b6e97c23sewardj//---------------------------------------------------------------------- 7759570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/signal.h 7859570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 7959570ffbe31930ab4d678754daaeec0715117a3dsewardj 8059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MINSIGSTKSZ 2048 8159570ffbe31930ab4d678754daaeec0715117a3dsewardj 8259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIG_BLOCK 0 /* for blocking signals */ 8359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ 8459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ 8559570ffbe31930ab4d678754daaeec0715117a3dsewardj 8659570ffbe31930ab4d678754daaeec0715117a3dsewardj/* Type of a signal handler. */ 8759570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef void __vki_signalfn_t(int); 8859570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef __vki_signalfn_t __user *__vki_sighandler_t; 8959570ffbe31930ab4d678754daaeec0715117a3dsewardj 9059570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef void __vki_restorefn_t(void); 9159570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef __vki_restorefn_t __user *__vki_sigrestore_t; 9259570ffbe31930ab4d678754daaeec0715117a3dsewardj 9359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ 9459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ 9559570ffbe31930ab4d678754daaeec0715117a3dsewardj 9659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_NSIG 64 9759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_NSIG_BPW 32 9859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 9959570ffbe31930ab4d678754daaeec0715117a3dsewardj 10059570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned long vki_old_sigset_t; /* at least 32 bits */ 10159570ffbe31930ab4d678754daaeec0715117a3dsewardj 10259570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef struct { 10359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long sig[_VKI_NSIG_WORDS]; 10459570ffbe31930ab4d678754daaeec0715117a3dsewardj} vki_sigset_t; 10559570ffbe31930ab4d678754daaeec0715117a3dsewardj 10659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGHUP 1 10759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGINT 2 10859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGQUIT 3 10959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGILL 4 11059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGTRAP 5 11159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGABRT 6 11259570ffbe31930ab4d678754daaeec0715117a3dsewardj//#define VKI_SIGIOT 6 11359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGBUS 7 11459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGFPE 8 11559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGKILL 9 11659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGUSR1 10 11759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGSEGV 11 11859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGUSR2 12 11959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGPIPE 13 12059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGALRM 14 12159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGTERM 15 12259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGSTKFLT 16 12359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGCHLD 17 12459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGCONT 18 12559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGSTOP 19 12659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGTSTP 20 12759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGTTIN 21 12859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGTTOU 22 12959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGURG 23 13059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGXCPU 24 13159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGXFSZ 25 13259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGVTALRM 26 13359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGPROF 27 13459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGWINCH 28 13559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGIO 29 13659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGPWR 30 13759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGSYS 31 13859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGUNUSED 31 13959570ffbe31930ab4d678754daaeec0715117a3dsewardj 14059570ffbe31930ab4d678754daaeec0715117a3dsewardj/* These should not be considered constants from userland. */ 14159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGRTMIN 32 14259570ffbe31930ab4d678754daaeec0715117a3dsewardj// [[This was (_NSIG-1) in 2.4.X... not sure if it matters.]] 14359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIGRTMAX _VKI_NSIG 14459570ffbe31930ab4d678754daaeec0715117a3dsewardj 14559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_NOCLDSTOP 0x00000001u 14659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_NOCLDWAIT 0x00000002u 14759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_SIGINFO 0x00000004u 14859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_ONSTACK 0x08000000u 14959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_RESTART 0x10000000u 15059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_NODEFER 0x40000000u 15159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_RESETHAND 0x80000000u 15259570ffbe31930ab4d678754daaeec0715117a3dsewardj 15359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_NOMASK VKI_SA_NODEFER 15459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_ONESHOT VKI_SA_RESETHAND 15559570ffbe31930ab4d678754daaeec0715117a3dsewardj//#define VKI_SA_INTERRUPT 0x20000000 /* dummy -- ignored */ 15659570ffbe31930ab4d678754daaeec0715117a3dsewardj 15759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SA_RESTORER 0x04000000 15859570ffbe31930ab4d678754daaeec0715117a3dsewardj 15959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SS_ONSTACK 1 16059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SS_DISABLE 2 16159570ffbe31930ab4d678754daaeec0715117a3dsewardj 16259570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_old_sigaction { 16359570ffbe31930ab4d678754daaeec0715117a3dsewardj // [[Nb: a 'k' prefix is added to "sa_handler" because 16459570ffbe31930ab4d678754daaeec0715117a3dsewardj // bits/sigaction.h (which gets dragged in somehow via signal.h) 16559570ffbe31930ab4d678754daaeec0715117a3dsewardj // #defines it as something else. Since that is done for glibc's 16659570ffbe31930ab4d678754daaeec0715117a3dsewardj // purposes, which we don't care about here, we use our own name.]] 16759570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_sighandler_t ksa_handler; 16859570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_old_sigset_t sa_mask; 16959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long sa_flags; 17059570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_sigrestore_t sa_restorer; 17159570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 17259570ffbe31930ab4d678754daaeec0715117a3dsewardj 17359570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_sigaction_base { 17459570ffbe31930ab4d678754daaeec0715117a3dsewardj // [[See comment about extra 'k' above]] 17559570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_sighandler_t ksa_handler; 17659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long sa_flags; 17759570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_sigrestore_t sa_restorer; 17859570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_sigset_t sa_mask; /* mask last for extensibility */ 17959570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 18059570ffbe31930ab4d678754daaeec0715117a3dsewardj 18159570ffbe31930ab4d678754daaeec0715117a3dsewardj/* On Linux we use the same type for passing sigactions to 18259570ffbe31930ab4d678754daaeec0715117a3dsewardj and from the kernel. Hence: */ 18359570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef struct vki_sigaction_base vki_sigaction_toK_t; 18459570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef struct vki_sigaction_base vki_sigaction_fromK_t; 18559570ffbe31930ab4d678754daaeec0715117a3dsewardj 18659570ffbe31930ab4d678754daaeec0715117a3dsewardj 18759570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef struct vki_sigaltstack { 18859570ffbe31930ab4d678754daaeec0715117a3dsewardj void __user *ss_sp; 18959570ffbe31930ab4d678754daaeec0715117a3dsewardj int ss_flags; 19059570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_size_t ss_size; 19159570ffbe31930ab4d678754daaeec0715117a3dsewardj} vki_stack_t; 19259570ffbe31930ab4d678754daaeec0715117a3dsewardj 19359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 19459570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/sigcontext.h 19559570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 19659570ffbe31930ab4d678754daaeec0715117a3dsewardj 19759570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_sigcontext { 19859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long trap_no; 19959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long error_code; 20059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long oldmask; 20159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r0; 20259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r1; 20359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r2; 20459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r3; 20559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r4; 20659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r5; 20759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r6; 20859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r7; 20959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r8; 21059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r9; 21159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_r10; 21259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_fp; 21359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_ip; 21459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_sp; 21559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_lr; 21659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_pc; 21759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long arm_cpsr; 21859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long fault_address; 21959570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 22059570ffbe31930ab4d678754daaeec0715117a3dsewardj 22159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 22259570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/mman.h 22359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 22459570ffbe31930ab4d678754daaeec0715117a3dsewardj 22559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PROT_NONE 0x0 /* No page permissions */ 22659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PROT_READ 0x1 /* page can be read */ 22759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PROT_WRITE 0x2 /* page can be written */ 22859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PROT_EXEC 0x4 /* page can be executed */ 22959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ 23059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ 23159570ffbe31930ab4d678754daaeec0715117a3dsewardj 23259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAP_SHARED 0x01 /* Share changes */ 23359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ 23459570ffbe31930ab4d678754daaeec0715117a3dsewardj//#define VKI_MAP_TYPE 0x0f /* Mask for type of mapping */ 23559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ 23659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ 23759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MAP_NORESERVE 0x4000 /* don't check for reservations */ 23859570ffbe31930ab4d678754daaeec0715117a3dsewardj 23959570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 24059570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/fcntl.h 24159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 24259570ffbe31930ab4d678754daaeec0715117a3dsewardj 24391a16b78d3de85e68c5c5e2c13d2bf52d4676f5etom#define VKI_O_ACCMODE 03 24459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_RDONLY 00 24559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_WRONLY 01 24659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_RDWR 02 24759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_CREAT 0100 /* not fcntl */ 24859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_EXCL 0200 /* not fcntl */ 24959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_TRUNC 01000 /* not fcntl */ 25059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_APPEND 02000 25159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_NONBLOCK 04000 25259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_O_LARGEFILE 0100000 25359570ffbe31930ab4d678754daaeec0715117a3dsewardj 25459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_AT_FDCWD -100 25559570ffbe31930ab4d678754daaeec0715117a3dsewardj 25659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_DUPFD 0 /* dup */ 25759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_GETFD 1 /* get close_on_exec */ 25859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETFD 2 /* set/clear close_on_exec */ 25959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_GETFL 3 /* get file->f_flags */ 26059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETFL 4 /* set file->f_flags */ 26159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_GETLK 5 26259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETLK 6 26359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETLKW 7 26459570ffbe31930ab4d678754daaeec0715117a3dsewardj 26559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETOWN 8 /* for sockets. */ 26659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_GETOWN 9 /* for sockets. */ 26759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETSIG 10 /* for sockets. */ 26859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_GETSIG 11 /* for sockets. */ 26959570ffbe31930ab4d678754daaeec0715117a3dsewardj 27059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_GETLK64 12 /* using 'struct flock64' */ 27159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETLK64 13 27259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_SETLKW64 14 27359570ffbe31930ab4d678754daaeec0715117a3dsewardj 274835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_SETOWN_EX 15 275835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_GETOWN_EX 16 276835a714e35b6ce920b1abbd338547fa0b4a7601etom 277f77df946e65783c2bc727807e508fa1af04f0da8tom#define VKI_F_OFD_GETLK 36 278f77df946e65783c2bc727807e508fa1af04f0da8tom#define VKI_F_OFD_SETLK 37 279f77df946e65783c2bc727807e508fa1af04f0da8tom#define VKI_F_OFD_SETLKW 38 280f77df946e65783c2bc727807e508fa1af04f0da8tom 281835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_OWNER_TID 0 282835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_OWNER_PID 1 283835a714e35b6ce920b1abbd338547fa0b4a7601etom#define VKI_F_OWNER_PGRP 2 284835a714e35b6ce920b1abbd338547fa0b4a7601etom 285835a714e35b6ce920b1abbd338547fa0b4a7601etomstruct vki_f_owner_ex { 286835a714e35b6ce920b1abbd338547fa0b4a7601etom int type; 287835a714e35b6ce920b1abbd338547fa0b4a7601etom __vki_kernel_pid_t pid; 288835a714e35b6ce920b1abbd338547fa0b4a7601etom}; 289835a714e35b6ce920b1abbd338547fa0b4a7601etom 29059570ffbe31930ab4d678754daaeec0715117a3dsewardj/* for F_[GET|SET]FL */ 29159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ 29259570ffbe31930ab4d678754daaeec0715117a3dsewardj 29359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_F_LINUX_SPECIFIC_BASE 1024 29459570ffbe31930ab4d678754daaeec0715117a3dsewardj 29559570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 29659570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/resource.h 29759570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 29859570ffbe31930ab4d678754daaeec0715117a3dsewardj 29959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_RLIMIT_DATA 2 /* max data size */ 30059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_RLIMIT_STACK 3 /* max stack size */ 30159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_RLIMIT_CORE 4 /* max core file size */ 30259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ 30359570ffbe31930ab4d678754daaeec0715117a3dsewardj 30459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 30559570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/socket.h 30659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 30759570ffbe31930ab4d678754daaeec0715117a3dsewardj 30859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SOL_SOCKET 1 30959570ffbe31930ab4d678754daaeec0715117a3dsewardj 31059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SO_TYPE 3 31159570ffbe31930ab4d678754daaeec0715117a3dsewardj 3128f420f1a5d392c461def7e5578d84fc39029dbc6tom#define VKI_SO_ATTACH_FILTER 26 3138f420f1a5d392c461def7e5578d84fc39029dbc6tom 31459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 31559570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/sockios.h 31659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 31759570ffbe31930ab4d678754daaeec0715117a3dsewardj 31859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIOCSPGRP 0x8902 31959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIOCGPGRP 0x8904 3204f17e600c7f0a697a964eb7083627b6d759401b6tom#define VKI_SIOCATMARK 0x8905 32159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ 32259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ 32359570ffbe31930ab4d678754daaeec0715117a3dsewardj 32459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 32559570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/stat.h 32659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 32759570ffbe31930ab4d678754daaeec0715117a3dsewardj 32859570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_stat { 32959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_dev; 33059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_ino; 33159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short st_mode; 33259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short st_nlink; 33359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short st_uid; 33459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short st_gid; 33559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_rdev; 33659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_size; 33759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_blksize; 33859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_blocks; 33959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_atime; 34059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_atime_nsec; 34159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_mtime; 34259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_mtime_nsec; 34359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_ctime; 34459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_ctime_nsec; 34559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused4; 34659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused5; 34759570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 34859570ffbe31930ab4d678754daaeec0715117a3dsewardj 34959570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_stat64 { 35059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long long st_dev; 35159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned char __pad0[4]; 35259570ffbe31930ab4d678754daaeec0715117a3dsewardj 35359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define STAT64_HAS_BROKEN_ST_INO 1 35459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __st_ino; 35559570ffbe31930ab4d678754daaeec0715117a3dsewardj 35659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int st_mode; 35759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int st_nlink; 35859570ffbe31930ab4d678754daaeec0715117a3dsewardj 35959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_uid; 36059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_gid; 36159570ffbe31930ab4d678754daaeec0715117a3dsewardj 36259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long long st_rdev; 36359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned char __pad3[4]; 36459570ffbe31930ab4d678754daaeec0715117a3dsewardj 36559570ffbe31930ab4d678754daaeec0715117a3dsewardj long long st_size; 36659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_blksize; 36759570ffbe31930ab4d678754daaeec0715117a3dsewardj 36859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_blocks; /* Number 512-byte blocks allocated. */ 36959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __pad4; /* future possible st_blocks high bits */ 37059570ffbe31930ab4d678754daaeec0715117a3dsewardj 37159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_atime; 37259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_atime_nsec; 37359570ffbe31930ab4d678754daaeec0715117a3dsewardj 37459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_mtime; 37559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int st_mtime_nsec; 37659570ffbe31930ab4d678754daaeec0715117a3dsewardj 37759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_ctime; 37859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long st_ctime_nsec; 37959570ffbe31930ab4d678754daaeec0715117a3dsewardj 38059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long long st_ino; 38159570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 38259570ffbe31930ab4d678754daaeec0715117a3dsewardj 38359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 38459570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/statfs.h 38559570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 38659570ffbe31930ab4d678754daaeec0715117a3dsewardj 38759570ffbe31930ab4d678754daaeec0715117a3dsewardj// [[Nb: asm-i386/statfs.h just #include asm-generic/statfs.h directly]] 38859570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_statfs { 38959570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_type; 39059570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_bsize; 39159570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_blocks; 39259570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_bfree; 39359570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_bavail; 39459570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_files; 39559570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_ffree; 39659570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_fsid_t f_fsid; 39759570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_namelen; 39859570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_frsize; 39959570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_u32 f_spare[5]; 40059570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 40159570ffbe31930ab4d678754daaeec0715117a3dsewardj 40259570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 40359570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/termios.h 40459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 40559570ffbe31930ab4d678754daaeec0715117a3dsewardj 40659570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_winsize { 40759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short ws_row; 40859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short ws_col; 40959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short ws_xpixel; 41059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short ws_ypixel; 41159570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 41259570ffbe31930ab4d678754daaeec0715117a3dsewardj 41359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_NCC 8 41459570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_termio { 41559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short c_iflag; /* input mode flags */ 41659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short c_oflag; /* output mode flags */ 41759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short c_cflag; /* control mode flags */ 41859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short c_lflag; /* local mode flags */ 41959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned char c_line; /* line discipline */ 42059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned char c_cc[VKI_NCC]; /* control characters */ 42159570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 42259570ffbe31930ab4d678754daaeec0715117a3dsewardj 42359570ffbe31930ab4d678754daaeec0715117a3dsewardj 42459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 42559570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/termbits.h 42659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 42759570ffbe31930ab4d678754daaeec0715117a3dsewardj 42859570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned char vki_cc_t; 42959570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned int vki_tcflag_t; 43059570ffbe31930ab4d678754daaeec0715117a3dsewardj 43159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_NCCS 19 43259570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_termios { 43359570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_tcflag_t c_iflag; /* input mode flags */ 43459570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_tcflag_t c_oflag; /* output mode flags */ 43559570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_tcflag_t c_cflag; /* control mode flags */ 43659570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_tcflag_t c_lflag; /* local mode flags */ 43759570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_cc_t c_line; /* line discipline */ 43859570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_cc_t c_cc[VKI_NCCS]; /* control characters */ 43959570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 44059570ffbe31930ab4d678754daaeec0715117a3dsewardj 44159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 44259570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/ioctl.h 44359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 44459570ffbe31930ab4d678754daaeec0715117a3dsewardj 44559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_NRBITS 8 44659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_TYPEBITS 8 44759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_SIZEBITS 14 44859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_DIRBITS 2 44959570ffbe31930ab4d678754daaeec0715117a3dsewardj 45059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_NRMASK ((1 << _VKI_IOC_NRBITS)-1) 45159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_TYPEMASK ((1 << _VKI_IOC_TYPEBITS)-1) 45259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) 45359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) 45459570ffbe31930ab4d678754daaeec0715117a3dsewardj 45559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_NRSHIFT 0 45659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) 45759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) 45859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) 45959570ffbe31930ab4d678754daaeec0715117a3dsewardj 46059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_NONE 0U 46159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_WRITE 1U 46259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_READ 2U 46359570ffbe31930ab4d678754daaeec0715117a3dsewardj 46459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC(dir,type,nr,size) \ 46559570ffbe31930ab4d678754daaeec0715117a3dsewardj (((dir) << _VKI_IOC_DIRSHIFT) | \ 46659570ffbe31930ab4d678754daaeec0715117a3dsewardj ((type) << _VKI_IOC_TYPESHIFT) | \ 46759570ffbe31930ab4d678754daaeec0715117a3dsewardj ((nr) << _VKI_IOC_NRSHIFT) | \ 46859570ffbe31930ab4d678754daaeec0715117a3dsewardj ((size) << _VKI_IOC_SIZESHIFT)) 46959570ffbe31930ab4d678754daaeec0715117a3dsewardj 47059570ffbe31930ab4d678754daaeec0715117a3dsewardj/* used to create numbers */ 47159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) 47259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),(_VKI_IOC_TYPECHECK(size))) 47359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) 47459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),(_VKI_IOC_TYPECHECK(size))) 47559570ffbe31930ab4d678754daaeec0715117a3dsewardj 47659570ffbe31930ab4d678754daaeec0715117a3dsewardj/* used to decode ioctl numbers.. */ 47759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) 47859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_TYPE(nr) (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK) 47959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_NR(nr) (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK) 48059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) 48159570ffbe31930ab4d678754daaeec0715117a3dsewardj 48259570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 48359570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/ioctls.h 48459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 48559570ffbe31930ab4d678754daaeec0715117a3dsewardj 48659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCGETS 0x5401 48759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSETS 0x5402 /* Clashes with SNDCTL_TMR_START sound ioctl */ 48859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSETSW 0x5403 48959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSETSF 0x5404 49059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCGETA 0x5405 49159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSETA 0x5406 49259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSETAW 0x5407 49359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSETAF 0x5408 49459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSBRK 0x5409 49559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCXONC 0x540A 49659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCFLSH 0x540B 49759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCSCTTY 0x540E 49859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCGPGRP 0x540F 49959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCSPGRP 0x5410 50059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCOUTQ 0x5411 50159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCGWINSZ 0x5413 50259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCSWINSZ 0x5414 50359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCMGET 0x5415 50459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCMBIS 0x5416 50559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCMBIC 0x5417 50659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCMSET 0x5418 50759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_FIONREAD 0x541B 50859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCLINUX 0x541C 50959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_FIONBIO 0x5421 5104efdae1b2143692687d1e062ac336255898e7359tom#define VKI_TIOCNOTTY 0x5422 51159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ 51259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 51359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ 51459570ffbe31930ab4d678754daaeec0715117a3dsewardj 515a52c83526a1bb0a4e3223e56ddb096258fc5e422tom#define VKI_FIONCLEX 0x5450 516a52c83526a1bb0a4e3223e56ddb096258fc5e422tom#define VKI_FIOCLEX 0x5451 51759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_FIOASYNC 0x5452 51859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ 51959570ffbe31930ab4d678754daaeec0715117a3dsewardj 52059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 52159570ffbe31930ab4d678754daaeec0715117a3dsewardj 52259570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 5236bf71ef1f168feb8e014ce2d7c63594eb4a4bc1btom// From linux-2.6.39-rc2/arch/arm/include/asm/ioctls.h 5246bf71ef1f168feb8e014ce2d7c63594eb4a4bc1btom//---------------------------------------------------------------------- 5256bf71ef1f168feb8e014ce2d7c63594eb4a4bc1btom 5266bf71ef1f168feb8e014ce2d7c63594eb4a4bc1btom#define VKI_FIOQSIZE 0x545E 5276bf71ef1f168feb8e014ce2d7c63594eb4a4bc1btom 5286bf71ef1f168feb8e014ce2d7c63594eb4a4bc1btom//---------------------------------------------------------------------- 52959570ffbe31930ab4d678754daaeec0715117a3dsewardj// From asm-generic/poll.h 53059570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 53159570ffbe31930ab4d678754daaeec0715117a3dsewardj 53259570ffbe31930ab4d678754daaeec0715117a3dsewardj/* These are specified by iBCS2 */ 53359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_POLLIN 0x0001 53459570ffbe31930ab4d678754daaeec0715117a3dsewardj 53559570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_pollfd { 53659570ffbe31930ab4d678754daaeec0715117a3dsewardj int fd; 53759570ffbe31930ab4d678754daaeec0715117a3dsewardj short events; 53859570ffbe31930ab4d678754daaeec0715117a3dsewardj short revents; 53959570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 54059570ffbe31930ab4d678754daaeec0715117a3dsewardj 54159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 54259570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/user.h 54359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 54459570ffbe31930ab4d678754daaeec0715117a3dsewardj 545e61a62846b628d1df4211eadd14eff64cca9645bsewardjstruct vki_user_fp { 546e61a62846b628d1df4211eadd14eff64cca9645bsewardj struct vki_fp_reg { 547e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int sign1:1; 548e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int unused:15; 549e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int sign2:1; 550e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int exponent:14; 551e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int j:1; 552e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int mantissa1:31; 553e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int mantissa0:32; 554e61a62846b628d1df4211eadd14eff64cca9645bsewardj } fpregs[8]; 555e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int fpsr:32; 556e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int fpcr:32; 557e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned char ftype[8]; 558e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int init_flag; 559e61a62846b628d1df4211eadd14eff64cca9645bsewardj}; 560e61a62846b628d1df4211eadd14eff64cca9645bsewardj 561e61a62846b628d1df4211eadd14eff64cca9645bsewardjstruct vki_user_vfp { 562e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned long long fpregs[32]; 563e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned long fpscr; 56459570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 56559570ffbe31930ab4d678754daaeec0715117a3dsewardj 566e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_IWMMXT_SIZE 0x98 567e61a62846b628d1df4211eadd14eff64cca9645bsewardj 568e61a62846b628d1df4211eadd14eff64cca9645bsewardjstruct vki_iwmmxt_struct { 569e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int save[VKI_IWMMXT_SIZE / sizeof(unsigned int)]; 57059570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 57159570ffbe31930ab4d678754daaeec0715117a3dsewardj 572e61a62846b628d1df4211eadd14eff64cca9645bsewardjstruct vki_crunch_state { 573e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int mvdx[16][2]; 574e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int mvax[4][3]; 575e61a62846b628d1df4211eadd14eff64cca9645bsewardj unsigned int dspsc[2]; 576e61a62846b628d1df4211eadd14eff64cca9645bsewardj}; 577e61a62846b628d1df4211eadd14eff64cca9645bsewardj 578e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_CRUNCH_SIZE sizeof(struct vki_crunch_state) 579e61a62846b628d1df4211eadd14eff64cca9645bsewardj 58059570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_user_regs_struct { 58159570ffbe31930ab4d678754daaeec0715117a3dsewardj long uregs[18]; 58259570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 58359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_cpsr uregs[16] 58459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_pc uregs[15] 58559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_lr uregs[14] 58659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_sp uregs[13] 58759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_ip uregs[12] 58859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_fp uregs[11] 58959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r10 uregs[10] 59059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r9 uregs[9] 59159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r8 uregs[8] 59259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r7 uregs[7] 59359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r6 uregs[6] 59459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r5 uregs[5] 59559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r4 uregs[4] 59659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r3 uregs[3] 59759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r2 uregs[2] 59859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r1 uregs[1] 59959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_r0 uregs[0] 60059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define ARM_ORIG_r0 uregs[17] 60159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 60259570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/elf.h 60359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 60459570ffbe31930ab4d678754daaeec0715117a3dsewardj 60559570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef unsigned long vki_elf_greg_t; 60659570ffbe31930ab4d678754daaeec0715117a3dsewardj 60759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t)) 60859570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; 60959570ffbe31930ab4d678754daaeec0715117a3dsewardj 610e61a62846b628d1df4211eadd14eff64cca9645bsewardjtypedef struct vki_user_fp vki_elf_fpregset_t; 61159570ffbe31930ab4d678754daaeec0715117a3dsewardj 61259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_AT_SYSINFO 32 61359570ffbe31930ab4d678754daaeec0715117a3dsewardj 61459570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 61559570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/ucontext.h 61659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 61759570ffbe31930ab4d678754daaeec0715117a3dsewardj 61859570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_ucontext { 61959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long uc_flags; 62059570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_ucontext *uc_link; 62159570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_stack_t uc_stack; 62259570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_sigcontext uc_mcontext; 62359570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_sigset_t uc_sigmask; /* mask last for extensibility */ 6247b634085c095fbb2c9d2c2470d81aa3bd684a115sewardj int __unused0[32 - (sizeof (vki_sigset_t) / sizeof (int))]; 62559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long uc_regspace[128] __attribute__((__aligned__(8))); 62659570ffbe31930ab4d678754daaeec0715117a3dsewardj 62759570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 62859570ffbe31930ab4d678754daaeec0715117a3dsewardj 62959570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 63059570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/segment.h 63159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 63259570ffbe31930ab4d678754daaeec0715117a3dsewardj 63359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_GDT_ENTRY_TLS_ENTRIES 3 63459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_GDT_ENTRY_TLS_MIN 6 63559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_GDT_ENTRY_TLS_MAX (VKI_GDT_ENTRY_TLS_MIN + VKI_GDT_ENTRY_TLS_ENTRIES - 1) 63659570ffbe31930ab4d678754daaeec0715117a3dsewardj 63759570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 63859570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/ldt.h 63959570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 64059570ffbe31930ab4d678754daaeec0715117a3dsewardj 64159570ffbe31930ab4d678754daaeec0715117a3dsewardj/* [[Nb: This is the structure passed to the modify_ldt syscall. Just so as 64259570ffbe31930ab4d678754daaeec0715117a3dsewardj to confuse and annoy everyone, this is _not_ the same as an 64359570ffbe31930ab4d678754daaeec0715117a3dsewardj VgLdtEntry and has to be translated into such. The logic for doing 64459570ffbe31930ab4d678754daaeec0715117a3dsewardj so, in vg_ldt.c, is copied from the kernel sources.]] */ 64559570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_user_desc { 64659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int entry_number; 64759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long base_addr; 64859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int limit; 64959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int seg_32bit:1; 65059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int contents:2; 65159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int read_exec_only:1; 65259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int limit_in_pages:1; 65359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int seg_not_present:1; 65459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int useable:1; 65559570ffbe31930ab4d678754daaeec0715117a3dsewardj // [[Nb: this field is not in the kernel sources, but it has always 65659570ffbe31930ab4d678754daaeec0715117a3dsewardj // been in the Valgrind sources so I will keep it there in case it's 65759570ffbe31930ab4d678754daaeec0715117a3dsewardj // important... this is an x86-defined data structure so who 65859570ffbe31930ab4d678754daaeec0715117a3dsewardj // knows; maybe it's important to set this field to zero at some 65959570ffbe31930ab4d678754daaeec0715117a3dsewardj // point. --njn]] 66059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned int reserved:25; 66159570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 66259570ffbe31930ab4d678754daaeec0715117a3dsewardj 66359570ffbe31930ab4d678754daaeec0715117a3dsewardj// [[Nb: for our convenience within Valgrind, use a more specific name]] 66459570ffbe31930ab4d678754daaeec0715117a3dsewardjtypedef struct vki_user_desc vki_modify_ldt_t; 66559570ffbe31930ab4d678754daaeec0715117a3dsewardj 66659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 66759570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/ipcbuf.h 66859570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 66959570ffbe31930ab4d678754daaeec0715117a3dsewardj 67059570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_ipc64_perm 67159570ffbe31930ab4d678754daaeec0715117a3dsewardj{ 67259570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_key_t key; 67359570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_uid32_t uid; 67459570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_gid32_t gid; 67559570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_uid32_t cuid; 67659570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_gid32_t cgid; 67759570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_mode_t mode; 67859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short __pad1; 67959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short seq; 68059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short __pad2; 68159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused1; 68259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused2; 68359570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 68459570ffbe31930ab4d678754daaeec0715117a3dsewardj 68559570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 68659570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/sembuf.h 68759570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 68859570ffbe31930ab4d678754daaeec0715117a3dsewardj 68959570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_semid64_ds { 69059570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ 69159570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t sem_otime; /* last semop time */ 69259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused1; 69359570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t sem_ctime; /* last change time */ 69459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused2; 69559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long sem_nsems; /* no. of semaphores in array */ 69659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused3; 69759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused4; 69859570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 69959570ffbe31930ab4d678754daaeec0715117a3dsewardj 70059570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 70159570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/msgbuf.h 70259570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 70359570ffbe31930ab4d678754daaeec0715117a3dsewardj 70459570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_msqid64_ds { 70559570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_ipc64_perm msg_perm; 70659570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t msg_stime; /* last msgsnd time */ 70759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused1; 70859570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t msg_rtime; /* last msgrcv time */ 70959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused2; 71059570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t msg_ctime; /* last change time */ 71159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused3; 71259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long msg_cbytes; /* current number of bytes on queue */ 71359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long msg_qnum; /* number of messages in queue */ 71459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long msg_qbytes; /* max number of bytes on queue */ 71559570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ 71659570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_pid_t msg_lrpid; /* last receive pid */ 71759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused4; 71859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused5; 71959570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 72059570ffbe31930ab4d678754daaeec0715117a3dsewardj 72159570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 72259570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/ipc.h 72359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 72459570ffbe31930ab4d678754daaeec0715117a3dsewardj 72559570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_ipc_kludge { 72659570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_msgbuf __user *msgp; 72759570ffbe31930ab4d678754daaeec0715117a3dsewardj long msgtyp; 72859570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 72959570ffbe31930ab4d678754daaeec0715117a3dsewardj 73059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SEMOP 1 73159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SEMGET 2 73259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SEMCTL 3 73359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SEMTIMEDOP 4 73459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MSGSND 11 73559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MSGRCV 12 73659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MSGGET 13 73759570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_MSGCTL 14 73859570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SHMAT 21 73959570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SHMDT 22 74059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SHMGET 23 74159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_SHMCTL 24 74259570ffbe31930ab4d678754daaeec0715117a3dsewardj 74359570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 74459570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.8.1/include/asm-i386/shmbuf.h 74559570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 74659570ffbe31930ab4d678754daaeec0715117a3dsewardj 74759570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_shmid64_ds { 74859570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_ipc64_perm shm_perm; /* operation perms */ 74959570ffbe31930ab4d678754daaeec0715117a3dsewardj vki_size_t shm_segsz; /* size of segment (bytes) */ 75059570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t shm_atime; /* last attach time */ 75159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused1; 75259570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t shm_dtime; /* last detach time */ 75359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused2; 75459570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_time_t shm_ctime; /* last change time */ 75559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused3; 75659570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_pid_t shm_cpid; /* pid of creator */ 75759570ffbe31930ab4d678754daaeec0715117a3dsewardj __vki_kernel_pid_t shm_lpid; /* pid of last operator */ 75859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long shm_nattch; /* no. of current attaches */ 75959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused4; 76059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused5; 76159570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 76259570ffbe31930ab4d678754daaeec0715117a3dsewardj 76359570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_shminfo64 { 76459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long shmmax; 76559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long shmmin; 76659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long shmmni; 76759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long shmseg; 76859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long shmall; 76959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused1; 77059570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused2; 77159570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused3; 77259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __unused4; 77359570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 77459570ffbe31930ab4d678754daaeec0715117a3dsewardj 77559570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 77659570ffbe31930ab4d678754daaeec0715117a3dsewardj// DRM ioctls 77759570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 77859570ffbe31930ab4d678754daaeec0715117a3dsewardj 77959570ffbe31930ab4d678754daaeec0715117a3dsewardj// jrs 20050207: where did all this stuff come from? Is it really 78059570ffbe31930ab4d678754daaeec0715117a3dsewardj// i386 specific, or should it go into the linux-generic category? 78159570ffbe31930ab4d678754daaeec0715117a3dsewardj//struct vki_drm_buf_pub { 78259570ffbe31930ab4d678754daaeec0715117a3dsewardj// Int idx; /**< Index into the master buffer list */ 78359570ffbe31930ab4d678754daaeec0715117a3dsewardj// Int total; /**< Buffer size */ 78459570ffbe31930ab4d678754daaeec0715117a3dsewardj// Int used; /**< Amount of buffer in use (for DMA) */ 78559570ffbe31930ab4d678754daaeec0715117a3dsewardj// void __user *address; /**< Address of buffer */ 78659570ffbe31930ab4d678754daaeec0715117a3dsewardj//}; 78759570ffbe31930ab4d678754daaeec0715117a3dsewardj// 78859570ffbe31930ab4d678754daaeec0715117a3dsewardj//struct vki_drm_buf_map { 78959570ffbe31930ab4d678754daaeec0715117a3dsewardj// Int count; /**< Length of the buffer list */ 79059570ffbe31930ab4d678754daaeec0715117a3dsewardj// void __user *virtual; /**< Mmap'd area in user-virtual */ 79159570ffbe31930ab4d678754daaeec0715117a3dsewardj// struct vki_drm_buf_pub __user *list; /**< Buffer information */ 79259570ffbe31930ab4d678754daaeec0715117a3dsewardj//}; 79359570ffbe31930ab4d678754daaeec0715117a3dsewardj// 79459570ffbe31930ab4d678754daaeec0715117a3dsewardj///* We need to pay attention to this, because it mmaps memory */ 79559570ffbe31930ab4d678754daaeec0715117a3dsewardj//#define VKI_DRM_IOCTL_MAP_BUFS _VKI_IOWR('d', 0x19, struct vki_drm_buf_map) 79659570ffbe31930ab4d678754daaeec0715117a3dsewardj 79759570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 79859570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.9/include/asm-i386/ptrace.h 79959570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 80059570ffbe31930ab4d678754daaeec0715117a3dsewardj 80159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PTRACE_GETREGS 12 80259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PTRACE_SETREGS 13 80359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PTRACE_GETFPREGS 14 80459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_PTRACE_SETFPREGS 15 805e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_GETWMMXREGS 18 806e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_SETWMMXREGS 19 807e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_GET_THREAD_AREA 22 808e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_SET_SYSCALL 23 809e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_GETCRUNCHREGS 25 810e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_SETCRUNCHREGS 26 811e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_GETVFPREGS 27 812e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_SETVFPREGS 28 813e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_GETHBPREGS 29 814e61a62846b628d1df4211eadd14eff64cca9645bsewardj#define VKI_PTRACE_SETHBPREGS 30 81559570ffbe31930ab4d678754daaeec0715117a3dsewardj 81659570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 81759570ffbe31930ab4d678754daaeec0715117a3dsewardj// From linux-2.6.15.4/include/asm-i386/vm86.h 81859570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 81959570ffbe31930ab4d678754daaeec0715117a3dsewardj 82059570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_PLUS_INSTALL_CHECK 0 82159570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_ENTER 1 82259570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_ENTER_NO_BYPASS 2 82359570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_REQUEST_IRQ 3 82459570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_FREE_IRQ 4 82559570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_GET_IRQ_BITS 5 82659570ffbe31930ab4d678754daaeec0715117a3dsewardj#define VKI_VM86_GET_AND_RESET_IRQ 6 82759570ffbe31930ab4d678754daaeec0715117a3dsewardj 82859570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_vm86_regs { 82959570ffbe31930ab4d678754daaeec0715117a3dsewardj/* 83059570ffbe31930ab4d678754daaeec0715117a3dsewardj * normal regs, with special meaning for the segment descriptors.. 83159570ffbe31930ab4d678754daaeec0715117a3dsewardj */ 83259570ffbe31930ab4d678754daaeec0715117a3dsewardj long ebx; 83359570ffbe31930ab4d678754daaeec0715117a3dsewardj long ecx; 83459570ffbe31930ab4d678754daaeec0715117a3dsewardj long edx; 83559570ffbe31930ab4d678754daaeec0715117a3dsewardj long esi; 83659570ffbe31930ab4d678754daaeec0715117a3dsewardj long edi; 83759570ffbe31930ab4d678754daaeec0715117a3dsewardj long ebp; 83859570ffbe31930ab4d678754daaeec0715117a3dsewardj long eax; 83959570ffbe31930ab4d678754daaeec0715117a3dsewardj long __null_ds; 84059570ffbe31930ab4d678754daaeec0715117a3dsewardj long __null_es; 84159570ffbe31930ab4d678754daaeec0715117a3dsewardj long __null_fs; 84259570ffbe31930ab4d678754daaeec0715117a3dsewardj long __null_gs; 84359570ffbe31930ab4d678754daaeec0715117a3dsewardj long orig_eax; 84459570ffbe31930ab4d678754daaeec0715117a3dsewardj long eip; 84559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short cs, __csh; 84659570ffbe31930ab4d678754daaeec0715117a3dsewardj long eflags; 84759570ffbe31930ab4d678754daaeec0715117a3dsewardj long esp; 84859570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short ss, __ssh; 84959570ffbe31930ab4d678754daaeec0715117a3dsewardj/* 85059570ffbe31930ab4d678754daaeec0715117a3dsewardj * these are specific to v86 mode: 85159570ffbe31930ab4d678754daaeec0715117a3dsewardj */ 85259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short es, __esh; 85359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short ds, __dsh; 85459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short fs, __fsh; 85559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned short gs, __gsh; 85659570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 85759570ffbe31930ab4d678754daaeec0715117a3dsewardj 85859570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_revectored_struct { 85959570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long __map[8]; /* 256 bits */ 86059570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 86159570ffbe31930ab4d678754daaeec0715117a3dsewardj 86259570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_vm86_struct { 86359570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_vm86_regs regs; 86459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long flags; 86559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long screen_bitmap; 86659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long cpu_type; 86759570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_revectored_struct int_revectored; 86859570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_revectored_struct int21_revectored; 86959570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 87059570ffbe31930ab4d678754daaeec0715117a3dsewardj 87159570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_vm86plus_info_struct { 87259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long force_return_for_pic:1; 87359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long vm86dbg_active:1; /* for debugger */ 87459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long vm86dbg_TFpendig:1; /* for debugger */ 87559570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long unused:28; 87659570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long is_vm86pus:1; /* for vm86 internal use */ 87759570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned char vm86dbg_intxxtab[32]; /* for debugger */ 87859570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 87959570ffbe31930ab4d678754daaeec0715117a3dsewardj 88059570ffbe31930ab4d678754daaeec0715117a3dsewardjstruct vki_vm86plus_struct { 88159570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_vm86_regs regs; 88259570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long flags; 88359570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long screen_bitmap; 88459570ffbe31930ab4d678754daaeec0715117a3dsewardj unsigned long cpu_type; 88559570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_revectored_struct int_revectored; 88659570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_revectored_struct int21_revectored; 88759570ffbe31930ab4d678754daaeec0715117a3dsewardj struct vki_vm86plus_info_struct vm86plus; 88859570ffbe31930ab4d678754daaeec0715117a3dsewardj}; 88959570ffbe31930ab4d678754daaeec0715117a3dsewardj 89059570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 891a3551be497f6c4afc5dfbbbcd7c7a955a68fb22bsewardj// From linux-2.6.35.4/arch/arm/include/asm/hwcap.h 892a3551be497f6c4afc5dfbbbcd7c7a955a68fb22bsewardj//---------------------------------------------------------------------- 893a3551be497f6c4afc5dfbbbcd7c7a955a68fb22bsewardj 894a3551be497f6c4afc5dfbbbcd7c7a955a68fb22bsewardj#define VKI_HWCAP_NEON 4096 895a3551be497f6c4afc5dfbbbcd7c7a955a68fb22bsewardj 896a3551be497f6c4afc5dfbbbcd7c7a955a68fb22bsewardj//---------------------------------------------------------------------- 8970c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj// From linux-2.6.8.1/include/asm-generic/errno.h 8980c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj//---------------------------------------------------------------------- 8990c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj 9000c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj#define VKI_ENOSYS 38 /* Function not implemented */ 9010c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj#define VKI_EOVERFLOW 75 /* Value too large for defined data type */ 9020c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj 9030c0793c2f74526a0fd8e25db28149a5eb94fd62adejanj//---------------------------------------------------------------------- 90455895379b090d4db5d39013e1a9859714ac3e0d8sewardj// From linux-3.19.0/include/uapi/asm-generic/ioctls.h 90555895379b090d4db5d39013e1a9859714ac3e0d8sewardj//---------------------------------------------------------------------- 90655895379b090d4db5d39013e1a9859714ac3e0d8sewardj 90755895379b090d4db5d39013e1a9859714ac3e0d8sewardj#define VKI_TIOCGSERIAL 0x541E 90855895379b090d4db5d39013e1a9859714ac3e0d8sewardj#define VKI_TIOCSSERIAL 0x541F 90955895379b090d4db5d39013e1a9859714ac3e0d8sewardj 91055895379b090d4db5d39013e1a9859714ac3e0d8sewardj//---------------------------------------------------------------------- 91159570ffbe31930ab4d678754daaeec0715117a3dsewardj// And that's it! 91259570ffbe31930ab4d678754daaeec0715117a3dsewardj//---------------------------------------------------------------------- 91359570ffbe31930ab4d678754daaeec0715117a3dsewardj 91459570ffbe31930ab4d678754daaeec0715117a3dsewardj#endif // __VKI_ARM_LINUX_H 91559570ffbe31930ab4d678754daaeec0715117a3dsewardj 91659570ffbe31930ab4d678754daaeec0715117a3dsewardj/*--------------------------------------------------------------------*/ 91759570ffbe31930ab4d678754daaeec0715117a3dsewardj/*--- end vki-arm-linux.h ---*/ 91859570ffbe31930ab4d678754daaeec0715117a3dsewardj/*--------------------------------------------------------------------*/ 919