vki-darwin.h revision 28a9e2368763bea0d29e556dedc6ba3146bca55a
1 2/*--------------------------------------------------------------------*/ 3/*--- Darwin-specific kernel interface. vki-darwin.h ---*/ 4/*--------------------------------------------------------------------*/ 5 6/* 7 This file is part of Valgrind, a dynamic binary instrumentation 8 framework. 9 10 Copyright (C) 2007-2009 Apple Inc. 11 Greg Parker gparker@apple.com 12 13 This program is free software; you can redistribute it and/or 14 modify it under the terms of the GNU General Public License as 15 published by the Free Software Foundation; either version 2 of the 16 License, or (at your option) any later version. 17 18 This program is distributed in the hope that it will be useful, but 19 WITHOUT ANY WARRANTY; without even the implied warranty of 20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21 General Public License for more details. 22 23 You should have received a copy of the GNU General Public License 24 along with this program; if not, write to the Free Software 25 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26 02111-1307, USA. 27 28 The GNU General Public License is contained in the file COPYING. 29*/ 30 31/* Unlike vki-linux, this Darwin kernel interface includes system headers 32 directly, to avoid copyright complexity. */ 33 34#ifndef __VKI_DARWIN_H 35#define __VKI_DARWIN_H 36 37#include <stdint.h> 38 39#define vki_int8_t int8_t 40#define vki_uint8_t uint8_t 41#define vki_int16_t int16_t 42#define vki_uint16_t uint16_t 43#define vki_int32_t int32_t 44#define vki_uint32_t uint32_t 45#define vki_int64_t int64_t 46#define vki_uint64_t uint64_t 47#define vki_intptr_t intptr_t 48#define vki_uintptr_t uintptr_t 49 50#include <sys/types.h> 51 52#define vki_dev_t dev_t 53#define vki_mode_t mode_t 54#define vki_ino_t ino_t 55#define vki_ino64_t ino64_t 56#define vki_nlink_t nlink_t 57#define vki_uid_t uid_t 58#define vki_gid_t gid_t 59#define vki_time_t time_t 60#define vki_off_t off_t 61#define vki_blkcnt_t blkcnt_t 62#define vki_blksize_t blksize_t 63#define vki_size_t size_t 64#define vki_ssize_t ssize_t 65#define vki_pid_t pid_t 66#define vki_socklen_t socklen_t 67#define vki_suseconds_t suseconds_t 68#define vki_caddr_t caddr_t 69#define vki_u_long u_long 70#define vki_u_short u_short 71#define vki_clock_t clock_t 72#define vki_u_int32_t u_int32_t 73#define vki_u_int16_t u_int16_t 74#define vki_pthread_t pthread_t 75 76 77// valgrind special 78 79// magic mmap() flags 80#define VKI_MAP_ANONYMOUS MAP_ANON // linux synonym 81 82// fds for mmap(MAP_ANON), displayed by vmmap 83#define VM_TAG_VALGRIND VM_MAKE_TAG(239) // SkAnonV 84 85// page sizes 86#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT 87#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE 88 89// types 90typedef uint32_t vki_u32; 91 92// linux-like ioctl flags 93#define _VKI_IOC_DIR(x) ((x) & IOC_DIRMASK) 94#define _VKI_IOC_SIZE(x) IOCPARM_LEN(x) 95#define _VKI_IOC_NONE IOC_VOID /* GrP fixme correct? */ 96#define _VKI_IOC_READ IOC_OUT 97#define _VKI_IOC_WRITE IOC_IN 98 99 100#include <malloc/malloc.h> 101 102#define vki_malloc_zone_t malloc_zone_t 103 104 105#include <sys/time.h> 106 107#define vki_timeval timeval 108#define vki_timeval32 timeval32 109#define vki_timespec timespec 110#define vki_itimerval itimerval 111#define vki_timezone timezone 112 113 114#include <sys/stat.h> 115 116#define VKI_S_ISBLK(m) S_ISBLK(m) 117#define VKI_S_ISCHR(m) S_ISCHR(m) 118#define VKI_S_ISDIR(m) S_ISDIR(m) 119#define VKI_S_ISFIFO(m) S_ISFIFO(m) 120#define VKI_S_ISREG(m) S_ISREG(m) 121#define VKI_S_ISLNK(m) S_ISLNK(m) 122#define VKI_S_ISSOCK(m) S_ISSOCK(m) 123#define VKI_S_ISWHT(m) S_ISWHT(m) 124#define VKI_S_ISXATTR(m) S_ISXATTR(m) 125 126#define VKI_S_IRWXU S_IRWXU 127#define VKI_S_IRUSR S_IRUSR 128#define VKI_S_IWUSR S_IWUSR 129#define VKI_S_IXUSR S_IXUSR 130#define VKI_S_IRWXG S_IRWXG 131#define VKI_S_IRGRP S_IRGRP 132#define VKI_S_IWGRP S_IWGRP 133#define VKI_S_IXGRP S_IXGRP 134#define VKI_S_IRWXO S_IRWXO 135#define VKI_S_IROTH S_IROTH 136#define VKI_S_IWOTH S_IWOTH 137#define VKI_S_IXOTH S_IXOTH 138#define VKI_S_ISUID S_ISUID 139#define VKI_S_ISGID S_ISGID 140#define VKI_S_ISVTX S_ISVTX 141 142#define vki_stat stat 143#define vki_stat64 stat64 144 145#define st_atime st_atimespec.tv_sec 146#define st_atime_nsec st_atimespec.tv_nsec 147#define st_mtime st_mtimespec.tv_sec 148#define st_mtime_nsec st_mtimespec.tv_nsec 149#define st_ctime st_ctimespec.tv_sec 150#define st_ctime_nsec st_ctimespec.tv_nsec 151 152 153#include <sys/dirent.h> 154 155#define VKI_MAXNAMLEN MAXNAMLEN 156#define vki_dirent dirent 157 158 159#include <sys/socket.h> 160#define VKI_SOCK_STREAM SOCK_STREAM 161#define VKI_SOCK_DGRAM SOCK_DGRAM 162#define VKI_SOCK_RAW SOCK_RAW 163 164#define VKI_AF_UNIX AF_UNIX 165#define VKI_AF_INET AF_INET 166#define VKI_AF_INET6 AF_INET6 167 168#define VKI_SOL_SOCKET SOL_SOCKET 169 170#define VKI_SO_REUSEADDR SO_REUSEADDR 171 172#define VKI_SO_SNDBUF SO_SNDBUF 173#define VKI_SO_RCVBUF SO_RCVBUF 174#define VKI_SO_SNDLOWAT SO_SNDLOWAT 175#define VKI_SO_RCVLOWAT SO_RCVLOWAT 176#define VKI_SO_SNDTIMEO SO_SNDTIMEO 177#define VKI_SO_RCVTIMEO SO_RCVTIMEO 178#define VKI_SO_ERROR SO_ERROR 179#define VKI_SO_TYPE SO_TYPE 180#define VKI_SO_NREAD SO_NREAD 181#define VKI_SO_NKE SO_NKE 182#define VKI_SO_NOSIGPIPE SO_NOSIGPIPE 183#define VKI_SO_NOADDRERR SO_NOADDRERR 184#define VKI_SO_NWRITE SO_NWRITE 185#define VKI_SO_LINGER_SEC SO_LINGER_SEC 186 187#define vki_sa_family_t sa_family_t 188#define vki_sockaddr sockaddr 189#define vki_iovec iovec 190#define vki_msghdr msghdr 191#define vki_cmsghdr cmsghdr 192 193 194#define VKI_CMSG_ALIGN(a) ALIGN(a) 195#define VKI_CMSG_DATA(cmsg) CMSG_DATA(cmsg) 196#define VKI_CMSG_FIRSTHDR(mhdr) CMSG_FIRSTHDR(mhdr) 197#define VKI_CMSG_NXTHDR(mhdr, cmsg) CMSG_NXTHDR(mhdr, cmsg) 198 199#define VKI_SCM_RIGHTS SCM_RIGHTS 200#define VKI_SCM_TIMESTAMP SCM_TIMESTAMP 201#define VKI_SCM_CREDS SCM_CREDS 202 203 204#include <sys/un.h> 205 206#define vki_sockaddr_un sockaddr_un 207 208 209#include <netinet/in.h> 210 211#define vki_in_addr_t in_addr_t 212#define vki_in_port_t in_port_t 213#define vki_in_addr in_addr 214#define vki_sockaddr_in sockaddr_in 215 216#define VKI_INADDR_LOOPBACK INADDR_LOOPBACK 217 218 219// #include <netinet6/in6.h> 220 221#define vki_in6_addr in6_addr 222#define vki_sockaddr_in6 sockaddr_in6 223 224 225#include <net/if.h> 226 227#define VKI_IFNAMSIZ IFNAMSIZ 228 229#define vki_ifdevmtu ifdevmtu 230#define vki_ifreq ifreq 231#define vki_ifr_name ifr_name 232#define vki_ifr_addr ifr_addr 233#define vki_ifr_dstaddr ifr_dstaddr 234#define vki_ifr_broadaddr ifr_broadaddr 235#define vki_ifr_flags ifr_flags 236#define vki_ifr_metric ifr_metric 237#define vki_ifr_mtu ifr_mtu 238#define vki_ifr_phys ifr_phys 239#define vki_ifr_media ifr_media 240#define vki_ifr_data ifr_data 241#define vki_ifr_devmtu ifr_devmtu 242#define vki_ifr_intval ifr_intval 243 244#define vki_ifconf ifconf 245#define vki_ifc_buf ifc_buf 246#define vki_ifc_req ifc_req 247 248 249#include <sys/fcntl.h> 250 251#define VKI_SEEK_SET SEEK_SET 252#define VKI_SEEK_CUR SEEK_CUR 253#define VKI_SEEK_END SEEK_END 254 255#define VKI_O_RDONLY O_RDONLY 256#define VKI_O_WRONLY O_WRONLY 257#define VKI_O_RDWR O_RDWR 258#define VKI_O_ACCMODE O_ACCMODE 259#define VKI_O_NONBLOCK O_NONBLOCK 260#define VKI_O_APPEND O_APPEND 261#define VKI_O_SYNC O_SYN 262#define VKI_O_SHLOCK O_SHLOCK 263#define VKI_O_EXLOCK O_EXLOCK 264#define VKI_O_ASYNC O_ASYNC 265#define VKI_O_NOFOLLOW O_NOFOLLOW 266#define VKI_O_CREAT O_CREAT 267#define VKI_O_TRUNC O_TRUNC 268#define VKI_O_EXCL O_EXCL 269#define VKI_O_EVTONLY O_EVTONLY 270 271#define VKI_F_DUPFD F_DUPFD 272#define VKI_F_GETFD F_GETFD 273#define VKI_F_SETFD F_SETFD 274#define VKI_F_GETFL F_GETFL 275#define VKI_F_SETFL F_SETFL 276#define VKI_F_GETOWN F_GETOWN 277#define VKI_F_SETOWN F_SETOWN 278#define VKI_F_GETLK F_GETLK 279#define VKI_F_SETLK F_SETLK 280#define VKI_F_SETLKW F_SETLKW 281 282#define VKI_F_CHKCLEAN F_CHKCLEAN 283#define VKI_F_PREALLOCATE F_PREALLOCATE 284#define VKI_F_SETSIZE F_SETSIZE 285#define VKI_F_RDADVISE F_RDADVISE 286#define VKI_F_RDAHEAD F_RDAHEAD 287#define VKI_F_READBOOTSTRAP F_READBOOTSTRAP 288#define VKI_F_WRITEBOOTSTRAP F_WRITEBOOTSTRAP 289#define VKI_F_NOCACHE F_NOCACHE 290#define VKI_F_LOG2PHYS F_LOG2PHYS 291#define VKI_F_GETPATH F_GETPATH 292#define VKI_F_ADDSIGS F_ADDSIGS 293#define VKI_F_FULLFSYNC F_FULLFSYNC 294#define VKI_F_PATHPKG_CHECK F_PATHPKG_CHECK 295#define VKI_F_FREEZE_FS F_FREEZE_FS 296#define VKI_F_THAW_FS F_THAW_FS 297#define VKI_F_GLOBAL_NOCACHE F_GLOBAL_NOCACHE 298 299#define VKI_FD_CLOEXEC FD_CLOEXEC 300 301#define vki_radvisory radvisory 302#define vki_fstore fstore 303#define vki_fbootstraptransfer fbootstraptransfer 304#define vki_log2phys log2phys 305#define vki_fsignatures_t fsignatures_t 306 307// These constants aren't in a standard header, they are from the kernel code: 308// xnu-1228.3.13/bsd/sys/codesign.h 309// Mac OS X 10.5.6 - Darwin 9.6 310#define VKI_CS_OPS_STATUS 0 /* return status */ 311#define VKI_CS_OPS_MARKINVALID 1 /* invalidate process */ 312#define VKI_CS_OPS_MARKHARD 2 /* set HARD flag */ 313#define VKI_CS_OPS_MARKKILL 3 /* set KILL flag (sticky) */ 314#define VKI_CS_OPS_PIDPATH 4 /* get executable's pathname */ 315#define VKI_CS_OPS_CDHASH 5 /* get code directory hash */ 316 317#include <sys/mman.h> 318 319#define VKI_PROT_NONE PROT_NONE 320#define VKI_PROT_READ PROT_READ 321#define VKI_PROT_WRITE PROT_WRITE 322#define VKI_PROT_EXEC PROT_EXEC 323 324#define VKI_MAP_SHARED MAP_SHARED 325#define VKI_MAP_PRIVATE MAP_PRIVATE 326#define VKI_MAP_FIXED MAP_FIXED 327#define VKI_MAP_RENAME MAP_RENAME 328#define VKI_MAP_NORESERVE MAP_NORESERVE 329#define VKI_MAP_RESERVED0080 MAP_RESERVED0080 330#define VKI_MAP_NOEXTEND MAP_NOEXTEND 331#define VKI_MAP_HASSEMAPHORE MAP_HASSEMAPHORE 332#define VKI_MAP_FILE MAP_FILE 333#define VKI_MAP_ANON MAP_ANON 334#define VKI_MAP_FAILED MAP_FAILED 335 336 337#include <mach/vm_param.h> 338 339#define VKI_PAGE_SHIFT PAGE_SHIFT 340#define VKI_PAGE_SIZE PAGE_SIZE 341#define VKI_PAGE_MASK PAGE_MASK 342 343 344#include <sys/vmparam.h> 345 346#define VKI_USRSTACK USRSTACK 347#define VKI_USRSTACK64 USRSTACK64 348 349 350#include <mach/mach_time.h> 351 352#define vki_mach_timebase_info mach_timebase_info 353 354 355#include <sys/syslimits.h> 356 357#define VKI_PATH_MAX PATH_MAX 358 359 360#include <sys/param.h> 361 362#define VKI_MAXPATHLEN MAXPATHLEN 363 364 365#include <sys/signal.h> 366 367/* While we fully intend to make 'vki_sigset_t' match the native 368 Darwin 'sigset_t', we can't just clone the Darwin sigset_t type, 369 because it isn't an array, and the VG_(sigfillset) etc functions 370 assume it is. So instead define another isomorphic type, and check 371 in VG_(vki_do_initial_consistency_checks) that it really is 372 correct. */ 373/* #define vki_sigset_t sigset_t */ 374#define _VKI_NSIG_BPW 32 375#define _VKI_NSIG 32 376#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 377typedef struct { 378 UInt sig[_VKI_NSIG_WORDS]; 379} vki_sigset_t; 380/* and now let VG_(vki_do_initial_consistency_checks) make sure it 381 matches 'sigset_t'. */ 382 383 384#define VKI_SS_ONSTACK SS_ONSTACK 385#define VKI_SS_DISABLE SS_DISABLE 386#define VKI_MINSIGSTKSZ MINSIGSTKSZ 387#define VKI_SIGSTKSZ SIGSTKSZ 388 389#define vki_stack_t stack_t 390#define vki_siginfo_t siginfo_t 391 392/* There are two versions of this. 'struct __sigaction' is used for 393 passing sigactions to the kernel interface, and has the added 394 complexity of requiring an extra pointer to a new demultiplexing 395 function to be run in user space. 'struct sigaction' is used for 396 receiving old sigactions from the kernel, and lacks this 397 demux-function pointer. So the type of the second and third 398 parameters in Darwin's sys_sigaction appear to be different, 399 respectively 'struct __sigaction*' and 'struct sigaction*'. 400*/ 401//#define vki_sigaction __sigaction 402//#define vki_user_sigaction sigaction 403//#define vki_sigaltstack sigaltstack 404//#define vki_sigval sigval 405//#define vki_sigaction_u sigaction_u 406//#define vki_sigaction sigaction 407 408//typedef struct __sigaction vki_sigaction_toK_t; 409//typedef struct sigaction vki_sigaction_fromK_t; 410 411typedef 412 struct { 413 void* ksa_handler; 414 void (*sa_tramp)(void*,UWord,UWord,void*,void*); 415 vki_sigset_t sa_mask; 416 int sa_flags; 417 } 418 vki_sigaction_toK_t; 419 420typedef 421 struct { 422 void* ksa_handler; 423 vki_sigset_t sa_mask; 424 int sa_flags; 425 } 426 vki_sigaction_fromK_t; 427 428 429 430/* and /usr/include/sys/signal.c in turn defines 'sa_handler' to 431 be '__sigaction_u.__sa_handler' */ 432//#define ksa_handler sa_handler 433 434//#define vki_sa_sigaction sa_sigaction 435 436#define VKI_SA_ONSTACK SA_ONSTACK 437#define VKI_SA_RESTART SA_RESTART 438#define VKI_SA_DISABLE SA_DISABLE 439#define VKI_SA_RESETHAND SA_RESETHAND 440#define VKI_SA_NOCLDSTOP SA_NOCLDSTOP 441#define VKI_SA_NODEFER SA_NODEFER 442#define VKI_SA_NOCLDWAIT SA_NOCLDWAIT 443#define VKI_SA_SIGINFO SA_SIGINFO 444#define VKI_SA_USERTRAMP SA_USERTRAMP 445#define VKI_SA_64REGSET SA_64REGSET 446#define VKI_SA_RESTORER 0 /* Darwin doesn't have this */ 447 448#define VKI_SIG_BLOCK SIG_BLOCK 449#define VKI_SIG_UNBLOCK SIG_UNBLOCK 450#define VKI_SIG_SETMASK SIG_SETMASK 451 452#define VKI_SIGHUP SIGHUP 453#define VKI_SIGINT SIGINT 454#define VKI_SIGQUIT SIGQUIT 455#define VKI_SIGILL SIGILL 456#define VKI_SIGTRAP SIGTRAP 457#define VKI_SIGABRT SIGABRT 458#define VKI_SIGPOLL SIGPOLL 459#define VKI_SIGFPE SIGFPE 460#define VKI_SIGKILL SIGKILL 461#define VKI_SIGBUS SIGBUS 462#define VKI_SIGSEGV SIGSEGV 463#define VKI_SIGSYS SIGSYS 464#define VKI_SIGPIPE SIGPIPE 465#define VKI_SIGALRM SIGALRM 466#define VKI_SIGTERM SIGTERM 467#define VKI_SIGURG SIGURG 468#define VKI_SIGSTOP SIGSTOP 469#define VKI_SIGTSTP SIGTSTP 470#define VKI_SIGCONT SIGCONT 471#define VKI_SIGCHLD SIGCHLD 472#define VKI_SIGTTIN SIGTTIN 473#define VKI_SIGTTOU SIGTTOU 474#define VKI_SIGIO SIGIO 475#define VKI_SIGXCPU SIGXCPU 476#define VKI_SIGXFSZ SIGXFSZ 477#define VKI_SIGVTALRM SIGVTALRM 478#define VKI_SIGPROF SIGPROF 479#define VKI_SIGWINCH SIGWINCH 480#define VKI_SIGINFO SIGINFO 481#define VKI_SIGUSR1 SIGUSR1 482#define VKI_SIGUSR2 SIGUSR2 483 484#define VKI_SIG_DFL SIG_DFL 485#define VKI_SIG_IGN SIG_IGN 486 487 488#define VKI_SI_USER SI_USER 489#define VKI_SEGV_MAPERR SEGV_MAPERR 490#define VKI_SEGV_ACCERR SEGV_ACCERR 491#define VKI_ILL_ILLOPC ILL_ILLOPC 492#define VKI_ILL_ILLOPN ILL_ILLOPN 493#define VKI_ILL_ILLADR ILL_ILLADR 494#define VKI_ILL_ILLTRP ILL_ILLTRP 495#define VKI_ILL_PRVOPC ILL_PRVOPC 496#define VKI_ILL_PRVREG ILL_PRVREG 497#define VKI_ILL_COPROC ILL_COPROC 498#define VKI_ILL_BADSTK ILL_BADSTK 499#define VKI_FPE_INTDIV FPE_INTDIV 500#define VKI_FPE_INTOVF FPE_INTOVF 501#define VKI_FPE_FLTDIV FPE_FLTDIV 502#define VKI_FPE_FLTOVF FPE_FLTOVF 503#define VKI_FPE_FLTUND FPE_FLTUND 504#define VKI_FPE_FLTRES FPE_FLTRES 505#define VKI_FPE_FLTINV FPE_FLTINV 506#define VKI_FPE_FLTSUB FPE_FLTSUB 507#define VKI_BUS_ADRALN BUS_ADRALN 508#define VKI_BUS_ADRERR BUS_ADRERR 509#define VKI_BUS_OBJERR BUS_OBJERR 510#define VKI_TRAP_BRKPT TRAP_BRKPT 511 512/* JRS: not 100% sure, but I think these two are correct */ 513#define VKI_SA_ONESHOT SA_RESETHAND 514#define VKI_SA_NOMASK SA_NODEFER 515 516#define VKI_UC_SET_ALT_STACK 0x40000000 517#define VKI_UC_RESET_ALT_STACK 0x80000000 518 519 520#include <sys/errno.h> 521 522#define VKI_EPERM EPERM 523#define VKI_ENOENT ENOENT 524#define VKI_ESRCH ESRCH 525#define VKI_EINTR EINTR 526#define VKI_EIO EIO 527#define VKI_ENXIO ENXIO 528#define VKI_E2BIG E2BIG 529#define VKI_ENOEXEC ENOEXEC 530#define VKI_EBADF EBADF 531#define VKI_ECHILD ECHILD 532#define VKI_EDEADLK EDEADLK 533#define VKI_ENOMEM ENOMEM 534#define VKI_EACCES EACCES 535#define VKI_EFAULT EFAULT 536#define VKI_ENOTBLK ENOTBLK 537#define VKI_EBUSY EBUSY 538#define VKI_EEXIST EEXIST 539#define VKI_EXDEV EXDEV 540#define VKI_ENODEV ENODEV 541#define VKI_ENOTDIR ENOTDIR 542#define VKI_EISDIR EISDIR 543#define VKI_EINVAL EINVAL 544#define VKI_ENFILE ENFILE 545#define VKI_EMFILE EMFILE 546#define VKI_ENOTTY ENOTTY 547#define VKI_ETXTBSY ETXTBSY 548#define VKI_EFBIG EFBIG 549#define VKI_ENOSPC ENOSPC 550#define VKI_ESPIPE ESPIPE 551#define VKI_EROFS EROFS 552#define VKI_EMLINK EMLINK 553#define VKI_EPIPE EPIPE 554#define VKI_EDOM EDOM 555#define VKI_ERANGE ERANGE 556#define VKI_EAGAIN EAGAIN 557#define VKI_EWOULDBLOCK EAGAIN 558#define VKI_EINPROGRESS EINPROGRESS 559#define VKI_EALREADY EALREADY 560#define VKI_ENOTSOCK ENOTSOCK 561#define VKI_EDESTADDRREQ EDESTADDRREQ 562#define VKI_EMSGSIZE EMSGSIZE 563#define VKI_EPROTOTYPE EPROTOTYPE 564#define VKI_ENOPROTOOPT ENOPROTOOPT 565#define VKI_EPROTONOSUPPORT EPROTONOSUPPORT 566#define VKI_ESOCKTNOSUPPORT ESOCKTNOSUPPORT 567#define VKI_ENOTSUP ENOTSUP 568#define VKI_EPFNOSUPPORT EPFNOSUPPORT 569#define VKI_EAFNOSUPPORT EAFNOSUPPORT 570#define VKI_EADDRINUSE EADDRINUSE 571#define VKI_EADDRNOTAVAIL EADDRNOTAVAIL 572#define VKI_ENETDOWN ENETDOWN 573#define VKI_ENETUNREACH ENETUNREACH 574#define VKI_ENETRESET ENETRESET 575#define VKI_ECONNABORTED ECONNABORTED 576#define VKI_ECONNRESET ECONNRESET 577#define VKI_ENOBUFS ENOBUFS 578#define VKI_EISCONN EISCONN 579#define VKI_ENOTCONN ENOTCONN 580#define VKI_ESHUTDOWN ESHUTDOWN 581#define VKI_ETOOMANYREFS ETOOMANYREFS 582#define VKI_ETIMEDOUT ETIMEDOUT 583#define VKI_ECONNREFUSED ECONNREFUSED 584#define VKI_ELOOP ELOOP 585#define VKI_ENAMETOOLONG ENAMETOOLONG 586#define VKI_EHOSTDOWN EHOSTDOWN 587#define VKI_EHOSTUNREACH EHOSTUNREACH 588#define VKI_ENOTEMPTY ENOTEMPTY 589#define VKI_EPROCLIM EPROCLIM 590#define VKI_EUSERS EUSERS 591#define VKI_EDQUOT EDQUOT 592#define VKI_ESTALE ESTALE 593#define VKI_EREMOTE EREMOTE 594#define VKI_EBADRPC EBADRPC 595#define VKI_ERPCMISMATCH ERPCMISMATCH 596#define VKI_EPROGUNAVAIL EPROGUNAVAIL 597#define VKI_EPROGMISMATCH EPROGMISMATCH 598#define VKI_EPROCUNAVAIL EPROCUNAVAIL 599#define VKI_ENOLCK ENOLCK 600#define VKI_ENOSYS ENOSYS 601#define VKI_EFTYPE EFTYPE 602#define VKI_EAUTH EAUTH 603#define VKI_ENEEDAUTH ENEEDAUTH 604#define VKI_EPWROFF EPWROFF 605#define VKI_EDEVERR EDEVERR 606#define VKI_EOVERFLOW EOVERFLOW 607#define VKI_EBADEXEC EBADEXEC 608#define VKI_EBADARCH EBADARCH 609#define VKI_ESHLIBVERS ESHLIBVERS 610#define VKI_EBADMACHO EBADMACHO 611#define VKI_ECANCELED ECANCELED 612#define VKI_EIDRM EIDRM 613#define VKI_ENOMSG ENOMSG 614#define VKI_EILSEQ EILSEQ 615#define VKI_ENOATTR ENOATTR 616#define VKI_EBADMSG EBADMSG 617#define VKI_EMULTIHOP EMULTIHOP 618#define VKI_ENODATA ENODATA 619#define VKI_ENOLINK ENOLINK 620#define VKI_ENOSR ENOSR 621#define VKI_ENOSTR ENOSTR 622#define VKI_EPROTO EPROTO 623#define VKI_ETIME ETIME 624#define VKI_EOPNOTSUPP EOPNOTSUPP 625#define VKI_ELAST ELAST 626 627 628#include <sys/resource.h> 629 630#define VKI_RLIMIT_CPU RLIMIT_CPU 631#define VKI_RLIMIT_FSIZE RLIMIT_FSIZE 632#define VKI_RLIMIT_DATA RLIMIT_DATA 633#define VKI_RLIMIT_STACK RLIMIT_STACK 634#define VKI_RLIMIT_CORE RLIMIT_CORE 635#define VKI_RLIMIT_AS RLIMIT_AD 636#define VKI_RLIMIT_RSS RLIMIT_AS 637#define VKI_RLIMIT_MEMLOCK RLIMIT_MEMLOCK 638#define VKI_RLIMIT_NPROC RLIMIT_NPROC 639#define VKI_RLIMIT_NOFILE RLIMIT_NOFILE 640#define VKI_RLIM_NLIMITS RLIM_NLIMITS 641 642#define vki_rlim_t rlim_t 643#define vki_rlimit rlimit 644#define vki_rusage rusage 645 646 647#include <sys/poll.h> 648 649#define vki_pollfd pollfd 650 651 652#include <sys/ipc.h> 653 654#define VKI_IPC_RMID IPC_RMID 655#define VKI_IPC_SET IPC_SET 656#define VKI_IPC_STAT IPC_STAT 657 658#define vki_key_t key_t 659#define vki_ipc_perm ipc_perm 660 661 662#include <sys/sem.h> 663 664#define VKI_GETNCNT GETNCNT 665#define VKI_GETPID GETPID 666#define VKI_GETVAL GETVAL 667#define VKI_GETALL GETALL 668#define VKI_GETZCNT GETZCNT 669#define VKI_SETVAL SETVAL 670#define VKI_SETALL SETALL 671 672#define vki_sembuf sembuf 673#define vki_semid_ds semid_ds 674#define vki_semun semun 675 676 677#include <sys/semaphore.h> 678 679#define vki_sem_t sem_t 680 681 682#include <sys/mount.h> 683 684#define VKI_MFSNAMELEN MFSNAMELEN 685#define VKI_MNAMELEN MNAMELEN 686 687#define vki_fsid fsid 688#define vki_fsid_t fsid_t 689#define vki_statfs statfs 690#define vki_statfs64 statfs64 691 692 693#include <sys/select.h> 694 695#define vki_fd_set fd_set 696 697 698#include <sys/msgbuf.h> 699 700#define VKI_MSG_BSIZE MSG_BSIZE 701#define VKI_MSG_MAGIC MSG_MAGIC 702#define vki_msgbuf msgbuf 703 704 705#include <sys/shm.h> 706 707#define VKI_SHM_RDONLY SHM_RDONLY 708#define VKI_SHM_RND SHM_RND 709 710#define vki_shmid_ds shmid_ds 711 712 713#include <sys/times.h> 714 715#define vki_tms tms 716 717 718#include <sys/utsname.h> 719 720#define _VKI_SYS_NAMELEN _SYS_NAMELEN 721#define vki_new_utsname utsname 722 723 724#include <sys/unistd.h> 725 726#define VKI_F_OK F_OK 727#define VKI_X_OK X_OK 728#define VKI_W_OK W_OK 729#define VKI_R_OK R_OK 730 731 732#include <sys/sysctl.h> 733 734#define VKI_CTL_MAXNAME CTL_MAXNAME 735 736#define VKI_CTL_UNSPEC CTL_UNSPEC 737#define VKI_CTL_KERN CTL_KERN 738#define VKI_CTL_VM CTL_VM 739#define VKI_CTL_VFS CTL_VFS 740#define VKI_CTL_NET CTL_NET 741#define VKI_CTL_DEBUG CTL_DEBUG 742#define VKI_CTL_HW CTL_HW 743#define VKI_CTL_MACHDEP CTL_MACHDEP 744#define VKI_CTL_USER CTL_USER 745#define VKI_CTL_MAXID CTL_MAXID 746 747#define VKI_HW_MACHINE HW_MACHINE 748#define VKI_HW_MODEL HW_MODEL 749#define VKI_HW_NCPU HW_NCPU 750#define VKI_HW_BYTEORDER HW_BYTEORDER 751#define VKI_HW_PHYSMEM HW_PHYSMEM 752#define VKI_HW_USERMEM HW_USERMEM 753#define VKI_HW_PAGESIZE HW_PAGESIZE 754#define VKI_HW_DISKNAMES HW_DISKNAMES 755#define VKI_HW_DISKSTATS HW_DISKSTATS 756#define VKI_HW_EPOCH HW_EPOCH 757#define VKI_HW_FLOATINGPT HW_FLOATINGPT 758#define VKI_HW_MACHINE_ARCH HW_MACHINE_ARCH 759#define VKI_HW_VECTORUNIT HW_VECTORUNIT 760#define VKI_HW_BUS_FREQ HW_BUS_FREQ 761#define VKI_HW_CPU_FREQ HW_CPU_FREQ 762#define VKI_HW_CACHELINE HW_CACHELINE 763#define VKI_HW_L1ICACHESIZE HW_L1ICACHESIZE 764#define VKI_HW_L1DCACHESIZE HW_L1DCACHESIZE 765#define VKI_HW_L2SETTINGS HW_L2SETTINGS 766#define VKI_HW_L2CACHESIZE HW_L2CACHESIZE 767#define VKI_HW_L3SETTINGS HW_L3SETTINGS 768#define VKI_HW_L3CACHESIZE HW_L3CACHESIZE 769#define VKI_HW_TB_FREQ HW_TB_FREQ 770#define VKI_HW_MEMSIZE HW_MEMSIZE 771#define VKI_HW_AVAILCPU MW_AVAILCPU 772#define VKI_HW_MAXID MW_MAXID 773 774#define VKI_KERN_USRSTACK32 KERN_USRSTACK32 775#define VKI_KERN_USRSTACK64 KERN_USRSTACK64 776 777 778#include <sys/attr.h> 779 780#define vki_attrlist attrlist 781 782 783#include <sys/event.h> 784 785#define vki_kevent kevent 786 787 788#include <sys/ev.h> 789 790typedef struct eventreq vki_eventreq; 791 792 793#include <sys/ptrace.h> 794 795#define VKI_PTRACE_TRACEME PT_TRACE_ME 796#define VKI_PTRACE_DETACH PT_DETACH 797 798 799// sqlite/src/os_unix.c 800 801struct ByteRangeLockPB2 802{ 803 unsigned long long offset; /* offset to first byte to lock */ 804 unsigned long long length; /* nbr of bytes to lock */ 805 unsigned long long retRangeStart; /* nbr of 1st byte locked if successful */ 806 unsigned char unLockFlag; /* 1 = unlock, 0 = lock */ 807 unsigned char startEndFlag; /* 1=rel to end of fork, 0=rel to start */ 808 int fd; /* file desc to assoc this lock with */ 809}; 810 811#define afpfsByteRangeLock2FSCTL _IOWR('z', 23, struct ByteRangeLockPB2) 812 813#define vki_ByteRangeLockPB2 ByteRangeLockPB2 814#define VKI_afpfsByteRangeLock2FSCTL afpfsByteRangeLock2FSCTL 815 816 817// xnu/bsd/sys/fsctl.h 818 819#define VKI_FSIOC_SYNC_VOLUME _IOW('A', 1, uint32_t) 820 821 822// Libc/pthreads/pthread.c 823 824#define VKI_WQOPS_QUEUE_ADD 1 825#define VKI_WQOPS_QUEUE_REMOVE 2 826#define VKI_WQOPS_THREAD_RETURN 4 827 828 829#include <sys/ttycom.h> 830 831#define vki_winsize winsize 832 833#define VKI_TIOCMODG TIOCMODG 834#define VKI_TIOCMODS TIOCMODS 835#define VKI_TIOCEXCL TIOCEXCL 836#define VKI_TIOCNXCL TIOCNXCL 837#define VKI_TIOCFLUSH TIOCFLUSH 838#define VKI_TIOCGETA TIOCGETA 839#define VKI_TIOCSETA TIOCSETA 840#define VKI_TIOCSETAW TIOCSETAW 841#define VKI_TIOCSETAF TIOCSETAF 842#define VKI_TIOCGETD TIOCGETD 843#define VKI_TIOCSETD TIOCSETD 844#define VKI_TIOCSBRK TIOCSBRK 845#define VKI_TIOCCBRK TIOCCBRK 846#define VKI_TIOCSDTR TIOCSDTR 847#define VKI_TIOCCDTR TIOCCDTR 848#define VKI_TIOCGPGRP TIOCGPGRP 849#define VKI_TIOCSPGRP TIOCSPGRP 850#define VKI_TIOCOUTQ TIOCOUTQ 851#define VKI_TIOCSTI TIOCSTI 852#define VKI_TIOCNOTTY TIOCNOTTY 853#define VKI_TIOCPKT TIOCPKT 854#define VKI_TIOCSTOP TIOCSTOP 855#define VKI_TIOCSTART TIOCSTART 856#define VKI_TIOCMSET TIOCMSET 857#define VKI_TIOCMBIS TIOCMBIS 858#define VKI_TIOCMBIC TIOCMBIC 859#define VKI_TIOCMGET TIOCMGET 860#define VKI_TIOCREMOTE TIOCREMOTE 861#define VKI_TIOCGWINSZ TIOCGWINSZ 862#define VKI_TIOCSWINSZ TIOCSWINSZ 863#define VKI_TIOCUCNTL TIOCUCNTL 864#define VKI_TIOCSTAT TIOCSTAT 865#define VKI_UIOCCMD(n) UIOCCMD(n) 866#define VKI_TIOCSCONS TIOCSCONS 867#define VKI_TIOCCONS TIOCCONS 868#define VKI_TIOCSCTTY TIOCSCTTY 869#define VKI_TIOCEXT TIOCEXT 870#define VKI_TIOCSIG TIOCSIG 871#define VKI_TIOCDRAIN TIOCDRAIN 872#define VKI_TIOCMSDTRWAIT TIOCMSDTRWAIT 873#define VKI_TIOCMGDTRWAIT TIOCMGDTRWAIT 874#define VKI_TIOCTIMESTAMP TIOCTIMESTAMP 875#define VKI_TIOCDCDTIMESTAMP TIOCDCDTIMESTAMP 876#define VKI_TIOCSDRAINWAIT TIOCSDRAINWAIT 877#define VKI_TIOCGDRAINWAIT TIOCGDRAINWAIT 878#define VKI_TIOCDSIMICROCODE TIOCDSIMICROCODE 879#define VKI_TIOCPTYGRANT TIOCPTYGRANT 880#define VKI_TIOCPTYGNAME TIOCPTYGNAME 881#define VKI_TIOCPTYUNLK TIOCPTYUNLK 882 883 884#include <sys/filio.h> 885 886#define VKI_FIOCLEX FIOCLEX 887#define VKI_FIONCLEX FIONCLEX 888#define VKI_FIONREAD FIONREAD 889#define VKI_FIONBIO FIONBIO 890#define VKI_FIOASYNC FIOASYNC 891#define VKI_FIOSETOWN FIOSETOWN 892#define VKI_FIOGETOWN FIOGETOWN 893#define VKI_FIODTYPE FIODTYPE 894 895 896#include <sys/sockio.h> 897 898#define VKI_SIOCSHIWAT SIOCSHIWAT 899#define VKI_SIOCGHIWAT SIOCGHIWAT 900#define VKI_SIOCSLOWAT SIOCSLOWAT 901#define VKI_SIOCGLOWAT SIOCGLOWAT 902#define VKI_SIOCATMARK SIOCATMARK 903#define VKI_SIOCSPGRP SIOCSPGRP 904#define VKI_SIOCGPGRP SIOCGPGRP 905 906#define VKI_SIOCSIFADDR SIOCSIFADDR 907#define VKI_OSIOCGIFADDR OSIOCGIFADDR 908#define VKI_SIOCSIFDSTADDR SIOCSIFDSTADDR 909#define VKI_OSIOCGIFDSTADDR OSIOCGIFDSTADDR 910#define VKI_SIOCSIFFLAGS SIOCSIFFLAGS 911#define VKI_SIOCGIFFLAGS SIOCGIFFLAGS 912#define VKI_OSIOCGIFBRDADDR OSIOCGIFBRDADDR 913#define VKI_SIOCSIFBRDADDR SIOCSIFBRDADDR 914#define VKI_OSIOCGIFCONF OSIOCGIFCONF 915#define VKI_OSIOCGIFNETMASK OSIOCGIFNETMASK 916#define VKI_SIOCSIFNETMASK SIOCSIFNETMASK 917#define VKI_SIOCGIFMETRIC SIOCGIFMETRIC 918#define VKI_SIOCSIFMETRIC SIOCSIFMETRIC 919#define VKI_SIOCDIFADDR SIOCDIFADDR 920#define VKI_SIOCAIFADDR SIOCAIFADDR 921#define VKI_SIOCGETVIFCNT SIOCGETVIFCNT 922#define VKI_SIOCGETSGCNT SIOCGETSGCNT 923#define VKI_SIOCALIFADDR SIOCALIFADDR 924#define VKI_SIOCGLIFADDR SIOCGLIFADDR 925#define VKI_SIOCDLIFADDR SIOCDLIFADDR 926 927#define VKI_SIOCGIFADDR SIOCGIFADDR 928#define VKI_SIOCGIFDSTADDR SIOCGIFDSTADDR 929#define VKI_SIOCGIFBRDADDR SIOCGIFBRDADDR 930#define VKI_SIOCGIFCONF SIOCGIFCONF 931#define VKI_SIOCGIFNETMASK SIOCGIFNETMASK 932#define VKI_SIOCAUTOADDR SIOCAUTOADDR 933#define VKI_SIOCAUTONETMASK SIOCAUTONETMASK 934#define VKI_SIOCARPIPLL SIOCARPIPLL 935 936#define VKI_SIOCADDMULTI SIOCADDMULTI 937#define VKI_SIOCDELMULTI SIOCDELMULTI 938#define VKI_SIOCGIFMTU SIOCGIFMTU 939#define VKI_SIOCSIFMTU SIOCSIFMTU 940#define VKI_SIOCGIFPHYS SIOCGIFPHYS 941#define VKI_SIOCSIFPHYS SIOCSIFPHYS 942#define VKI_SIOCSIFMEDIA SIOCSIFMEDIA 943#define VKI_SIOCGIFMEDIA SIOCGIFMEDIA 944#define VKI_SIOCSIFGENERIC SIOCSIFGENERIC 945#define VKI_SIOCGIFGENERIC SIOCGIFGENERIC 946#define VKI_SIOCRSLVMULTI SIOCRSLVMULTI 947 948#define VKI_SIOCSIFLLADDR SIOCSIFLLADDR 949#define VKI_SIOCGIFSTATUS SIOCGIFSTATUS 950#define VKI_SIOCSIFPHYADDR SIOCSIFPHYADDR 951#define VKI_SIOCGIFPSRCADDR SIOCGIFPSRCADDR 952#define VKI_SIOCGIFPDSTADDR SIOCGIFPDSTADDR 953#define VKI_SIOCDIFPHYADDR SIOCDIFPHYADDR 954#define VKI_SIOCSLIFPHYADDR SIOCSLIFPHYADDR 955#define VKI_SIOCGLIFPHYADDR SIOCGLIFPHYADDR 956 957#define VKI_SIOCGIFDEVMTU SIOCGIFDEVMTU 958#define VKI_SIOCSIFALTMTU SIOCSIFALTMTU 959#define VKI_SIOCGIFALTMTU SIOCGIFALTMTU 960#define VKI_SIOCSIFBOND SIOCSIFBOND 961#define VKI_SIOCGIFBOND SIOCGIFBOND 962#define VKI_SIOCIFCREATE SIOCIFCREATE 963#define VKI_SIOCIFDESTROY SIOCIFDESTROY 964#define VKI_SIOCSIFVLAN SIOCSIFVLAN 965#define VKI_SIOCGIFVLAN SIOCGIFVLAN 966 967#define VKI_SIOCSETVLAN SIOCSIFVLAN 968#define VKI_SIOCGETVLAN SIOCGIFVLAN 969 970#define VKI_SIOCGIFASYNCMAP SIOCGIFASYNCMAP 971#define VKI_SIOCSIFASYNCMAP SIOCSIGASYNCMAP 972 973 974#include <sys/dtrace.h> 975 976#define VKI_DTRACEHIOC_REMOVE DTRACEHIOC_REMOVE 977#define VKI_DTRACEHIOC_ADDDOF DTRACEHIOC_ADDDOF 978 979 980#include <sys/ucontext.h> 981 982/* quite why sys/ucontext.h provides a 'struct __darwin_ucontext' 983 but no 'struct ucontext' beats me. -- JRS */ 984#define vki_ucontext __darwin_ucontext 985 986 987#include <sys/termios.h> 988 989#define vki_termios termios 990 991 992#include <uuid/uuid.h> 993 994#define vki_uuid_t uuid_t 995 996 997#include <bsm/audit.h> 998 999#define VKI_A_GETPOLICY A_GETPOLICY 1000#define VKI_A_SETPOLICY A_SETPOLICY 1001#define VKI_A_GETKMASK A_GETKMASK 1002#define VKI_A_SETKMASK A_SETKMASK 1003#define VKI_A_GETQCTRL A_GETQCTRL 1004#define VKI_A_SETQCTRL A_SETQCTRL 1005#define VKI_A_GETCWD A_GETCWD 1006#define VKI_A_GETCAR A_GETCAR 1007#define VKI_A_GETSTAT A_GETSTAT 1008#define VKI_A_SETSTAT A_SETSTAT 1009#define VKI_A_SETUMASK A_SETUMASK 1010#define VKI_A_SETSMASK A_SETSMASK 1011#define VKI_A_GETCOND A_GETCOND 1012#define VKI_A_SETCOND A_SETCOND 1013#define VKI_A_GETCLASS A_GETCLASS 1014#define VKI_A_SETCLASS A_SETCLASS 1015#define VKI_A_GETPINFO A_GETPINFO 1016#define VKI_A_SETPMASK A_SETPMASK 1017#define VKI_A_SETFSIZE A_SETFSIZE 1018#define VKI_A_GETFSIZE A_GETFSIZE 1019#define VKI_A_GETPINFO_ADDR A_GETPINFO_ADDR 1020#define VKI_A_GETKAUDIT A_GETKAUDIT 1021#define VKI_A_SETKAUDIT A_SETKAUDIT 1022 1023 1024#include <sys/aio.h> 1025 1026#define vki_aiocb aiocb 1027 1028#endif 1029