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