1436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 2436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/ 3436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- ARM64/Linux-specific kernel interface. vki-arm64-linux.h ---*/ 4436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/ 5436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 6436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* 7436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov This file is part of Valgrind, a dynamic binary instrumentation 8436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov framework. 9436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 10436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov Copyright (C) 2013-2013 OpenWorks 11436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov info@open-works.net 12436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 13436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov This program is free software; you can redistribute it and/or 14436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov modify it under the terms of the GNU General Public License as 15436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov published by the Free Software Foundation; either version 2 of the 16436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov License, or (at your option) any later version. 17436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 18436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov This program is distributed in the hope that it will be useful, but 19436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov WITHOUT ANY WARRANTY; without even the implied warranty of 20436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov General Public License for more details. 22436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 23436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov You should have received a copy of the GNU General Public License 24436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov along with this program; if not, write to the Free Software 25436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 02111-1307, USA. 27436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 28436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov The GNU General Public License is contained in the file COPYING. 29436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov*/ 30436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 31436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#ifndef __VKI_ARM64_LINUX_H 32436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define __VKI_ARM64_LINUX_H 33436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 34436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// ARM64 is little-endian. 35436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_LITTLE_ENDIAN 1 36436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 37436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 38436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.9.9/include/uapi/asm-generic/int-ll64.h 39436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 40436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 41436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned char __vki_u8; 42436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 43436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ short __vki_s16; 44436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned short __vki_u16; 45436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 46436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ int __vki_s32; 47436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned int __vki_u32; 48436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 49436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __signed__ long long __vki_s64; 50436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long long __vki_u64; 51436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 52436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned short vki_u16; 53436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 54436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned int vki_u32; 55436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 56436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 57436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.9.9/arch/arm64/include/asm/page.h 58436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 59436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 60436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* Looks like arm64 can do both 4k and 64k pages, so we 61436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov use the at-startup detection scheme that ppc32/64 do. */ 62436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovextern UWord VKI_PAGE_SHIFT; 63436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovextern UWord VKI_PAGE_SIZE; 64436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAX_PAGE_SHIFT 16 65436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAX_PAGE_SIZE (1UL << VKI_MAX_PAGE_SHIFT) 66436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 67436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 68436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/arch/arm64/include/asm/shmparam.h 69436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 70436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 71436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// Trying to make sense of this .. it seems as if, for doing 72436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// shared memory with 64 bit processes, VKI_PAGE_SIZE is good 73436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// enough. But if sharing with a 32 bit process then we need 74436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// the old-style 16k value (4 * VKI_PAGE_SIZE) to be safe. 75436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// (From reading between the lines of arch/arm64/include/asm/shmparam.h) 76436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SHMLBA (4 * VKI_PAGE_SIZE) 77436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 78436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 79436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/signal.h 80436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 81436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 82436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_NSIG 64 83436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_NSIG_BPW 64 84436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 85436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 86436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long vki_old_sigset_t; 87436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 88436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct { 89436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long sig[_VKI_NSIG_WORDS]; 90436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} vki_sigset_t; 91436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 92436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGHUP 1 93436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGINT 2 94436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGQUIT 3 95436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGILL 4 96436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTRAP 5 97436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGABRT 6 98436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGBUS 7 99436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGFPE 8 100436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGKILL 9 101436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGUSR1 10 102436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSEGV 11 103436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGUSR2 12 104436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPIPE 13 105436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGALRM 14 106436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTERM 15 107436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSTKFLT 16 108436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGCHLD 17 109436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGCONT 18 110436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSTOP 19 111436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTSTP 20 112436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTTIN 21 113436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGTTOU 22 114436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGURG 23 115436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGXCPU 24 116436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGXFSZ 25 117436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGVTALRM 26 118436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPROF 27 119436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGWINCH 28 120436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGIO 29 121436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGPWR 30 122436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGSYS 31 123436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGUNUSED 31 124436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 125436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGRTMIN 32 126436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIGRTMAX _VKI_NSIG 127436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 128436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NOCLDSTOP 0x00000001 129436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NOCLDWAIT 0x00000002 130436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_SIGINFO 0x00000004 131436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_ONSTACK 0x08000000 132436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_RESTART 0x10000000 133436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NODEFER 0x40000000 134436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_RESETHAND 0x80000000 135436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 136436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_NOMASK VKI_SA_NODEFER 137436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_ONESHOT VKI_SA_RESETHAND 138436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 139436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// This is obsolete and should not be defined for new archs 140436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SA_RESTORER 0x04000000 141436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 142436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SS_ONSTACK 1 143436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SS_DISABLE 2 144436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 145436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MINSIGSTKSZ 2048 146436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 147436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_BLOCK 0 /* for blocking signals */ 148436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ 149436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ 150436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 151436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef void __vki_signalfn_t(int); 152436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __vki_signalfn_t __user *__vki_sighandler_t; 153436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 154436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef void __vki_restorefn_t(void); 155436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef __vki_restorefn_t __user *__vki_sigrestore_t; 156436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 157436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ 158436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ 159436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 160436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_sigaction_base { 161436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // [[Nb: a 'k' prefix is added to "sa_handler" because 162436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // bits/sigaction.h (which gets dragged in somehow via signal.h) 163436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // #defines it as something else. Since that is done for glibc's 164436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov // purposes, which we don't care about here, we use our own name.]] 165436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_sighandler_t ksa_handler; 166436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long sa_flags; 167436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_sigrestore_t sa_restorer; // I don't think arm64 has this 168436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_sigset_t sa_mask; /* mask last for extensibility */ 169436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 170436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 171436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* On Linux we use the same type for passing sigactions to 172436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov and from the kernel. Hence: */ 173436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_sigaction_base vki_sigaction_toK_t; 174436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_sigaction_base vki_sigaction_fromK_t; 175436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 176436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 177436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_sigaltstack { 178436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov void __user *ss_sp; 179436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov int ss_flags; 180436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_size_t ss_size; 181436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov} vki_stack_t; 182436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 183436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 184436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/arch/arm64/include/uapi/asm/sigcontext.h 185436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 186436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 187436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_sigcontext { 188436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 fault_address; 189436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* AArch64 registers */ 190436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 regs[31]; 191436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 sp; 192436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 pc; 193436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 pstate; 194436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* 4K reserved for FP/SIMD state and future expansion */ 195436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u8 __reserved[4096] __attribute__((__aligned__(16))); 196436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 197436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 198436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 199436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/uapi/include/asm-generic/mman-common.h 200436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 201436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 202436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_READ 0x1 /* page can be read */ 203436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_WRITE 0x2 /* page can be written */ 204436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_EXEC 0x4 /* page can be executed */ 205436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_NONE 0x0 /* page can not be accessed */ 206436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ 207436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ 208436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 209436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_SHARED 0x01 /* Share changes */ 210436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ 211436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ 212436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ 213436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_MAP_NORESERVE 0x4000 /* don't check for reservations */ 214436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 215436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 216436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/uapi/include/asm-generic/fcntl.h 217436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 218436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 219436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_ACCMODE 03 220436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_RDONLY 00 221436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_WRONLY 01 222436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_RDWR 02 223436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_CREAT 0100 /* not fcntl */ 224436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_EXCL 0200 /* not fcntl */ 225436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_TRUNC 01000 /* not fcntl */ 226436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_APPEND 02000 227436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_NONBLOCK 04000 228436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_O_LARGEFILE 0100000 229436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 230436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_AT_FDCWD -100 231436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 232436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_DUPFD 0 /* dup */ 233436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETFD 1 /* get close_on_exec */ 234436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETFD 2 /* set/clear close_on_exec */ 235436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETFL 3 /* get file->f_flags */ 236436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETFL 4 /* set file->f_flags */ 237436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETLK 5 238436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETLK 6 239436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETLKW 7 240436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 241436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETOWN 8 /* for sockets. */ 242436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETOWN 9 /* for sockets. */ 243436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETSIG 10 /* for sockets. */ 244436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETSIG 11 /* for sockets. */ 245436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 246436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_SETOWN_EX 15 247436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_GETOWN_EX 16 248436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 249436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_OWNER_TID 0 250436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_OWNER_PID 1 251436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_OWNER_PGRP 2 252436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 253436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_f_owner_ex { 254436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov int type; 255436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_pid_t pid; 256436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 257436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 258436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ 259436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 260436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_F_LINUX_SPECIFIC_BASE 1024 261436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 262436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 263436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/resource.h 264436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 265436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 266436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_DATA 2 /* max data size */ 267436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_STACK 3 /* max stack size */ 268436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_CORE 4 /* max core file size */ 269436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ 270436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 271436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 272436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/socket.h 273436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 274436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 275436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SOL_SOCKET 1 276436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 277436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SO_TYPE 3 278436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 279436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SO_ATTACH_FILTER 26 280436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 281436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 282436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/sockios.h 283436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 284436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 285436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCSPGRP 0x8902 286436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCGPGRP 0x8904 287436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ 288436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ 289436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 290436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 291436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/stat.h 292436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 293436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 294436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_stat { 295436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long st_dev; 296436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long st_ino; 297436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned int st_mode; 298436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned int st_nlink; 299436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned int st_uid; 300436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned int st_gid; 301436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long st_rdev; 302436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __pad1; 303436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long st_size; 304436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov int st_blksize; 305436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov int __pad2; 306436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long st_blocks; 307436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long st_atime; 308436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long st_atime_nsec; 309436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long st_mtime; 310436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long st_mtime_nsec; 311436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long st_ctime; 312436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long st_ctime_nsec; 313436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned int __unused4; 314436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned int __unused5; 315436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 316436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 317436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 318436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/statfs.h 319436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 320436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 321436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_statfs { 322436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_type; 323436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_bsize; 324436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_blocks; 325436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_bfree; 326436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_bavail; 327436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_files; 328436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_ffree; 329436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_fsid_t f_fsid; 330436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_namelen; 331436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_frsize; 332436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_flags; 333436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov long f_spare[4]; 334436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 335436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 336436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 337436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/termios.h 338436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 339436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 340436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_winsize { 341436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short ws_row; 342436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short ws_col; 343436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short ws_xpixel; 344436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short ws_ypixel; 345436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 346436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 347436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_NCC 8 348436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_termio { 349436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short c_iflag; /* input mode flags */ 350436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short c_oflag; /* output mode flags */ 351436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short c_cflag; /* control mode flags */ 352436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short c_lflag; /* local mode flags */ 353436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned char c_line; /* line discipline */ 354436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned char c_cc[VKI_NCC]; /* control characters */ 355436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 356436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 357436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 358436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/termbits.h 359436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 360436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 361436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned char vki_cc_t; 362436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned int vki_tcflag_t; 363436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 364436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_NCCS 19 365436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_termios { 366436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_tcflag_t c_iflag; /* input mode flags */ 367436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_tcflag_t c_oflag; /* output mode flags */ 368436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_tcflag_t c_cflag; /* control mode flags */ 369436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_tcflag_t c_lflag; /* local mode flags */ 370436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_cc_t c_line; /* line discipline */ 371436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_cc_t c_cc[VKI_NCCS]; /* control characters */ 372436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 373436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 374436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 375436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.9.9/include/uapi/asm-generic/ioctl.h 376436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 377436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 378436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NRBITS 8 379436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_TYPEBITS 8 380436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZEBITS 14 381436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIRBITS 2 382436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 383436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) 384436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) 385436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 386436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NRSHIFT 0 387436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) 388436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) 389436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) 390436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 391436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_NONE 0U 392436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_WRITE 1U 393436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_READ 2U 394436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 395436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC(dir,type,nr,size) \ 396436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov (((dir) << _VKI_IOC_DIRSHIFT) | \ 397436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov ((type) << _VKI_IOC_TYPESHIFT) | \ 398436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov ((nr) << _VKI_IOC_NRSHIFT) | \ 399436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov ((size) << _VKI_IOC_SIZESHIFT)) 400436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 401436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) 402436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size)) 403436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 404436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 405436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 406436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) 407436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) 408436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 409436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 410436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/ioctls.h 411436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 412436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 413436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCGETS 0x5401 414436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETS 0x5402 415436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETSW 0x5403 416436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETSF 0x5404 417436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCGETA 0x5405 418436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETA 0x5406 419436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETAW 0x5407 420436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSETAF 0x5408 421436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSBRK 0x5409 422436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCXONC 0x540A 423436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCFLSH 0x540B 424436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSCTTY 0x540E 425436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGPGRP 0x540F 426436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSPGRP 0x5410 427436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCOUTQ 0x5411 428436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGWINSZ 0x5413 429436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSWINSZ 0x5414 430436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMGET 0x5415 431436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMBIS 0x5416 432436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMBIC 0x5417 433436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCMSET 0x5418 434436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIONREAD 0x541B 435436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCLINUX 0x541C 436436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIONBIO 0x5421 437436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TCSBRKP 0x5425 438436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) 439436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) 440436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 441436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIONCLEX 0x5450 442436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIOCLEX 0x5451 443436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_FIOASYNC 0x5452 444436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCSERGETLSR 0x5459 445436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 446436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_TIOCGICOUNT 0x545D 447436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 448436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 449436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.9.9/include/uapi/asm-generic/poll.h 450436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 451436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 452436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_POLLIN 0x0001 453436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 454436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_pollfd { 455436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov int fd; 456436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov short events; 457436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov short revents; 458436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 459436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 460436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 461436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/arch/arm64/include/uapi/asm/ptrace.h 462436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 463436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 464436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ struct vki_user_i387_struct { 465436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned short cwd; 466436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned short swd; 467436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned short twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */ 468436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned short fop; 469436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u64 rip; 470436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u64 rdp; 471436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u32 mxcsr; 472436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u32 mxcsr_mask; 473436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ 474436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */ 475436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ __vki_u32 padding[24]; 476436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ }; 477436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 478436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ struct vki_user_regs_struct { 479436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long r15,r14,r13,r12,rbp,rbx,r11,r10; 480436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long r9,r8,rax,rcx,rdx,rsi,rdi,orig_rax; 481436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long rip,cs,eflags; 482436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long rsp,ss; 483436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long fs_base, gs_base; 484436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long ds,es,fs,gs; 485436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ }; 486436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 487436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_user_pt_regs { 488436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 regs[31]; 489436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 sp; 490436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 pc; 491436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u64 pstate; 492436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 493436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 494436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/* I think that the new name in the kernel for these is "user_pt_regs" 495436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov and the old name is "user_regs_struct". Unfortunately can't clone 496436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov a 'struct' type using 'typedef' and still have a 'struct' type, so 497436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov use a blunter instrument instead. */ 498436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define vki_user_regs_struct vki_user_pt_regs 499436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 500436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_user_fpsimd_state { 501436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __uint128_t vregs[32]; 502436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u32 fpsr; 503436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u32 fpcr; 504436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 505436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 506436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 507436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.9.9/arch/arm64/include/asm/elf.h 508436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 509436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 510436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef unsigned long vki_elf_greg_t; 511436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 512436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_ELF_NGREG (sizeof (struct vki_user_pt_regs) / sizeof(vki_elf_greg_t)) 513436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; 514436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 515436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovtypedef struct vki_user_fpsimd_state vki_elf_fpregset_t; 516436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 517436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 518436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/arch/arm64/include/asm/ucontext.h 519436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 520436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 521436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_ucontext { 522436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long uc_flags; 523436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov struct vki_ucontext *uc_link; 524436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_stack_t uc_stack; 525436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_sigset_t uc_sigmask; 526436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* glibc uses a 1024-bit sigset_t */ 527436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_u8 __unused[1024 / 8 - sizeof(vki_sigset_t)]; 528436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov /* last for future expansion */ 529436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov struct vki_sigcontext uc_mcontext; 530436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 531436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 532436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ //---------------------------------------------------------------------- 533436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // From linux-2.6.9/include/asm-x86_64/segment.h 534436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ //---------------------------------------------------------------------- 535436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 536436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_GDT_ENTRY_TLS_ENTRIES 3 537436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 538436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_GDT_ENTRY_TLS_MIN 11 539436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_GDT_ENTRY_TLS_MAX 13 540436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 541436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ //---------------------------------------------------------------------- 542436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // From linux-2.6.11.9/include/asm-x86_64/prctl.h 543436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ //---------------------------------------------------------------------- 544436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 545436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_ARCH_SET_GS 0x1001 546436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_ARCH_SET_FS 0x1002 547436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_ARCH_GET_FS 0x1003 548436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ #define VKI_ARCH_GET_GS 0x1004 549436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 550436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ //---------------------------------------------------------------------- 551436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // From linux-2.6.9/include/asm-x86_64/ldt.h 552436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ //---------------------------------------------------------------------- 553436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 554436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // I think this LDT stuff will have to be reinstated for amd64, but I'm not 555436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // certain. (Nb: The sys_arch_prctl seems to have replaced 556436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // [gs]et_thread_area syscalls.) 557436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // 558436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // Note that the type here is very slightly different to the 559436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // type for x86 (the final 'lm' field is added); I'm not sure about the 560436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // significance of that... --njn 561436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 562436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ /* [[Nb: This is the structure passed to the modify_ldt syscall. Just so as 563436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ to confuse and annoy everyone, this is _not_ the same as an 564436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ VgLdtEntry and has to be translated into such. The logic for doing 565436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ so, in vg_ldt.c, is copied from the kernel sources.]] */ 566436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ /* Note also that a comment in ldt.h indicates that the below 567436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ contains several fields ignored on 64bit, and that modify_ldt 568436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ is rather for 32bit. */ 569436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ struct vki_user_desc { 570436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int entry_number; 571436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned long base_addr; 572436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int limit; 573436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int seg_32bit:1; 574436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int contents:2; 575436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int read_exec_only:1; 576436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int limit_in_pages:1; 577436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int seg_not_present:1; 578436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int useable:1; 579436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ unsigned int lm:1; 580436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ }; 581436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ 582436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ // [[Nb: for our convenience within Valgrind, use a more specific name]] 583436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//ZZ typedef struct vki_user_desc vki_modify_ldt_t; 584436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 585436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 586436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/asm-generic/ipcbuf.h 587436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 588436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 589436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_ipc64_perm 590436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov{ 591436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_key_t key; 592436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_uid32_t uid; 593436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_gid32_t gid; 594436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_uid32_t cuid; 595436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_gid32_t cgid; 596436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_mode_t mode; 597436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned char __pad1[4 - sizeof(__vki_kernel_mode_t)]; 598436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short seq; 599436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned short __pad2; 600436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused1; 601436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused2; 602436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 603436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 604436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 605436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/sembuf.h 606436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 607436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 608436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_semid64_ds { 609436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ 610436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t sem_otime; /* last semop time */ 611436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t sem_ctime; /* last change time */ 612436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long sem_nsems; /* no. of semaphores in array */ 613436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused3; 614436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused4; 615436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 616436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 617436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 618436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/msgbuf.h 619436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 620436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 621436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_msqid64_ds { 622436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov struct vki_ipc64_perm msg_perm; 623436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t msg_stime; /* last msgsnd time */ 624436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t msg_rtime; /* last msgrcv time */ 625436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t msg_ctime; /* last change time */ 626436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long msg_cbytes; /* current number of bytes on queue */ 627436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long msg_qnum; /* number of messages in queue */ 628436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long msg_qbytes; /* max number of bytes on queue */ 629436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ 630436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_pid_t msg_lrpid; /* last receive pid */ 631436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused4; 632436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused5; 633436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 634436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 635436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 636436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.10.5/include/uapi/asm-generic/shmbuf.h 637436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 638436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 639436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_shmid64_ds { 640436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov struct vki_ipc64_perm shm_perm; /* operation perms */ 641436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov vki_size_t shm_segsz; /* size of segment (bytes) */ 642436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t shm_atime; /* last attach time */ 643436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t shm_dtime; /* last detach time */ 644436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_time_t shm_ctime; /* last change time */ 645436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_pid_t shm_cpid; /* pid of creator */ 646436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov __vki_kernel_pid_t shm_lpid; /* pid of last operator */ 647436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long shm_nattch; /* no. of current attaches */ 648436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused4; 649436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused5; 650436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 651436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 652436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanovstruct vki_shminfo64 { 653436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long shmmax; 654436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long shmmin; 655436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long shmmni; 656436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long shmseg; 657436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long shmall; 658436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused1; 659436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused2; 660436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused3; 661436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov unsigned long __unused4; 662436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov}; 663436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 664436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 665436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-3.9.9/arch/arm64/include/asm/ptrace.h 666436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 667436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 668436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_GETREGS 12 669436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_PTRACE_SETREGS 13 670436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//#define VKI_PTRACE_GETFPREGS 14 671436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//#define VKI_PTRACE_SETFPREGS 15 672346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov#define VKI_PTRACE_GET_THREAD_AREA 22 673346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov#define VKI_PTRACE_SET_SYSCALL 23 674346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov#define VKI_PTRACE_GETVFPREGS 27 675346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov#define VKI_PTRACE_SETVFPREGS 28 676346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov#define VKI_PTRACE_GETHBPREGS 29 677346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov#define VKI_PTRACE_SETHBPREGS 30 678346e8e970c8b76ed70a8afcf23f8532a592ff73eDmitriy Ivanov 679436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 680436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 681436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// From linux-2.6.8.1/include/asm-generic/errno.h 682436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 683436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 684436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_ENOSYS 38 /* Function not implemented */ 685436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#define VKI_EOVERFLOW 75 /* Value too large for defined data type */ 686436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 687436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 688436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov// And that's it! 689436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov//---------------------------------------------------------------------- 690436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 691436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov#endif // __VKI_ARM64_LINUX_H 692436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov 693436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/ 694436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--- end ---*/ 695436e89c602e787e7a27dd6624b09beed41a0da8aDmitriy Ivanov/*--------------------------------------------------------------------*/ 696