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