Illumos regtest: x86 mdb diffs wrt Solaris
[valgrind.git] / include / vki / vki-darwin.h
blobf7fcac60c653161f29aea97b3ddf2f60c09b1962
2 /*--------------------------------------------------------------------*/
3 /*--- Darwin-specific kernel interface. vki-darwin.h ---*/
4 /*--------------------------------------------------------------------*/
6 /*
7 This file is part of Valgrind, a dynamic binary instrumentation
8 framework.
10 Copyright (C) 2007-2017 Apple Inc.
11 Greg Parker gparker@apple.com
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.
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.
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, see <http://www.gnu.org/licenses/>.
26 The GNU General Public License is contained in the file COPYING.
29 /* Unlike vki-linux, this Darwin kernel interface includes system headers
30 directly, to avoid copyright complexity. */
32 #ifndef __VKI_DARWIN_H
33 #define __VKI_DARWIN_H
35 /* struct __darwin_ucontext isn't fully declared without
36 * this definition. It's crazy but there it is. */
37 #ifndef _XOPEN_SOURCE
38 #define _XOPEN_SOURCE 0500
39 #endif
41 #include <stdint.h>
43 #define vki_int8_t int8_t
44 #define vki_uint8_t uint8_t
45 #define vki_int16_t int16_t
46 #define vki_uint16_t uint16_t
47 #define vki_int32_t int32_t
48 #define vki_uint32_t uint32_t
49 #define vki_int64_t int64_t
50 #define vki_uint64_t uint64_t
51 #define vki_intptr_t intptr_t
52 #define vki_uintptr_t uintptr_t
54 #include <sys/types.h>
56 #define vki_dev_t dev_t
57 #define vki_mode_t mode_t
58 #define vki_ino_t ino_t
59 #define vki_ino64_t ino64_t
60 #define vki_nlink_t nlink_t
61 #define vki_uid_t uid_t
62 #define vki_gid_t gid_t
63 #define vki_time_t time_t
64 #define vki_off_t off_t
65 #define vki_blkcnt_t blkcnt_t
66 #define vki_blksize_t blksize_t
67 #define vki_size_t size_t
68 #define vki_ssize_t ssize_t
69 #define vki_pid_t pid_t
70 #define vki_socklen_t socklen_t
71 #define vki_suseconds_t suseconds_t
72 #define vki_caddr_t caddr_t
73 #define vki_u_long u_long
74 #define vki_u_short u_short
75 #define vki_clock_t clock_t
76 #define vki_u_int32_t u_int32_t
77 #define vki_u_int16_t u_int16_t
78 #define vki_pthread_t pthread_t
81 // valgrind special
83 // magic mmap() flags
84 #define VKI_MAP_ANONYMOUS MAP_ANON // linux synonym
86 // fds for mmap(MAP_ANON), displayed by vmmap
87 #define VM_TAG_VALGRIND VM_MAKE_TAG(239) // SkAnonV
89 // page sizes
90 #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
91 #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE
93 // types
94 typedef uint32_t vki_u32;
96 // linux-like ioctl flags
97 #define _VKI_IOC_DIR(x) ((x) & IOC_DIRMASK)
98 #define _VKI_IOC_SIZE(x) IOCPARM_LEN(x)
99 #define _VKI_IOC_NONE IOC_VOID /* GrP fixme correct? */
100 #define _VKI_IOC_READ IOC_OUT
101 #define _VKI_IOC_WRITE IOC_IN
104 #include <malloc/malloc.h>
106 #define vki_malloc_zone_t malloc_zone_t
109 #include <sys/time.h>
111 #define vki_timeval timeval
112 #define vki_timeval32 timeval32
113 #define vki_tv_sec tv_sec
114 #define vki_tv_usec tv_usec
115 #define vki_timespec timespec
116 #define vki_itimerval itimerval
117 #define vki_timezone timezone
120 #include <sys/stat.h>
122 #define VKI_S_ISBLK(m) S_ISBLK(m)
123 #define VKI_S_ISCHR(m) S_ISCHR(m)
124 #define VKI_S_ISDIR(m) S_ISDIR(m)
125 #define VKI_S_ISFIFO(m) S_ISFIFO(m)
126 #define VKI_S_ISREG(m) S_ISREG(m)
127 #define VKI_S_ISLNK(m) S_ISLNK(m)
128 #define VKI_S_ISSOCK(m) S_ISSOCK(m)
129 #define VKI_S_ISWHT(m) S_ISWHT(m)
130 #define VKI_S_ISXATTR(m) S_ISXATTR(m)
132 #define VKI_S_IRWXU S_IRWXU
133 #define VKI_S_IRUSR S_IRUSR
134 #define VKI_S_IWUSR S_IWUSR
135 #define VKI_S_IXUSR S_IXUSR
136 #define VKI_S_IRWXG S_IRWXG
137 #define VKI_S_IRGRP S_IRGRP
138 #define VKI_S_IWGRP S_IWGRP
139 #define VKI_S_IXGRP S_IXGRP
140 #define VKI_S_IRWXO S_IRWXO
141 #define VKI_S_IROTH S_IROTH
142 #define VKI_S_IWOTH S_IWOTH
143 #define VKI_S_IXOTH S_IXOTH
144 #define VKI_S_ISUID S_ISUID
145 #define VKI_S_ISGID S_ISGID
146 #define VKI_S_ISVTX S_ISVTX
148 #define vki_stat stat
149 #define vki_stat64 stat64
151 #define st_atime st_atimespec.tv_sec
152 #define st_atime_nsec st_atimespec.tv_nsec
153 #define st_mtime st_mtimespec.tv_sec
154 #define st_mtime_nsec st_mtimespec.tv_nsec
155 #define st_ctime st_ctimespec.tv_sec
156 #define st_ctime_nsec st_ctimespec.tv_nsec
159 #include <sys/dirent.h>
161 #define VKI_MAXNAMLEN MAXNAMLEN
162 #define vki_dirent dirent
165 #include <sys/socket.h>
166 #define VKI_SOCK_STREAM SOCK_STREAM
167 #define VKI_SOCK_DGRAM SOCK_DGRAM
168 #define VKI_SOCK_RAW SOCK_RAW
170 #define VKI_AF_UNIX AF_UNIX
171 #define VKI_AF_INET AF_INET
172 #define VKI_AF_INET6 AF_INET6
174 #define VKI_SOL_SOCKET SOL_SOCKET
176 #define VKI_SO_REUSEADDR SO_REUSEADDR
178 #define VKI_SO_SNDBUF SO_SNDBUF
179 #define VKI_SO_RCVBUF SO_RCVBUF
180 #define VKI_SO_SNDLOWAT SO_SNDLOWAT
181 #define VKI_SO_RCVLOWAT SO_RCVLOWAT
182 #define VKI_SO_SNDTIMEO SO_SNDTIMEO
183 #define VKI_SO_RCVTIMEO SO_RCVTIMEO
184 #define VKI_SO_ERROR SO_ERROR
185 #define VKI_SO_TYPE SO_TYPE
186 #define VKI_SO_NREAD SO_NREAD
187 #define VKI_SO_NKE SO_NKE
188 #define VKI_SO_NOSIGPIPE SO_NOSIGPIPE
189 #define VKI_SO_NOADDRERR SO_NOADDRERR
190 #define VKI_SO_NWRITE SO_NWRITE
191 #define VKI_SO_LINGER_SEC SO_LINGER_SEC
193 #define vki_sa_family_t sa_family_t
194 #define vki_sockaddr sockaddr
195 #define vki_iovec iovec
196 #define vki_msghdr msghdr
197 #define vki_cmsghdr cmsghdr
200 #define VKI_CMSG_ALIGN(a) ALIGN(a)
201 #define VKI_CMSG_DATA(cmsg) CMSG_DATA(cmsg)
202 #define VKI_CMSG_FIRSTHDR(mhdr) CMSG_FIRSTHDR(mhdr)
203 #define VKI_CMSG_NXTHDR(mhdr, cmsg) CMSG_NXTHDR(mhdr, cmsg)
205 #define VKI_SCM_RIGHTS SCM_RIGHTS
206 #define VKI_SCM_TIMESTAMP SCM_TIMESTAMP
207 #define VKI_SCM_CREDS SCM_CREDS
210 #include <sys/un.h>
212 #define vki_sockaddr_un sockaddr_un
215 #include <netinet/in.h>
217 #define vki_in_addr_t in_addr_t
218 #define vki_in_port_t in_port_t
219 #define vki_in_addr in_addr
220 #define vki_sockaddr_in sockaddr_in
222 #define VKI_INADDR_LOOPBACK INADDR_LOOPBACK
225 // #include <netinet6/in6.h>
227 #define vki_in6_addr in6_addr
228 #define vki_sockaddr_in6 sockaddr_in6
231 #include <net/if.h>
233 #define VKI_IFNAMSIZ IFNAMSIZ
235 #define vki_ifdevmtu ifdevmtu
236 #define vki_ifreq ifreq
237 #define vki_ifr_name ifr_name
238 #define vki_ifr_addr ifr_addr
239 #define vki_ifr_dstaddr ifr_dstaddr
240 #define vki_ifr_broadaddr ifr_broadaddr
241 #define vki_ifr_flags ifr_flags
242 #define vki_ifr_metric ifr_metric
243 #define vki_ifr_mtu ifr_mtu
244 #define vki_ifr_phys ifr_phys
245 #define vki_ifr_media ifr_media
246 #define vki_ifr_data ifr_data
247 #define vki_ifr_devmtu ifr_devmtu
248 #define vki_ifr_intval ifr_intval
250 #define vki_ifconf ifconf
251 #define vki_ifc_buf ifc_buf
252 #define vki_ifc_req ifc_req
255 #include <sys/fcntl.h>
257 #define VKI_SEEK_SET SEEK_SET
258 #define VKI_SEEK_CUR SEEK_CUR
259 #define VKI_SEEK_END SEEK_END
261 #define VKI_O_RDONLY O_RDONLY
262 #define VKI_O_WRONLY O_WRONLY
263 #define VKI_O_RDWR O_RDWR
264 #define VKI_O_ACCMODE O_ACCMODE
265 #define VKI_O_NONBLOCK O_NONBLOCK
266 #define VKI_O_APPEND O_APPEND
267 #define VKI_O_SYNC O_SYN
268 #define VKI_O_SHLOCK O_SHLOCK
269 #define VKI_O_EXLOCK O_EXLOCK
270 #define VKI_O_ASYNC O_ASYNC
271 #define VKI_O_NOFOLLOW O_NOFOLLOW
272 #define VKI_O_CREAT O_CREAT
273 #define VKI_O_TRUNC O_TRUNC
274 #define VKI_O_EXCL O_EXCL
275 #define VKI_O_EVTONLY O_EVTONLY
277 #define VKI_AT_FDCWD AT_FDCWD
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
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
318 #define VKI_FD_CLOEXEC FD_CLOEXEC
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
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 */
336 #include <sys/mman.h>
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
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
356 #include <mach/vm_param.h>
358 #define VKI_PAGE_SHIFT PAGE_SHIFT
359 #define VKI_PAGE_SIZE PAGE_SIZE
360 #define VKI_PAGE_MASK PAGE_MASK
363 #include <sys/vmparam.h>
365 #define VKI_USRSTACK USRSTACK
366 #define VKI_USRSTACK64 USRSTACK64
369 #include <mach/mach_time.h>
371 #define vki_mach_timebase_info mach_timebase_info
374 #include <sys/syslimits.h>
376 #define VKI_PATH_MAX PATH_MAX
379 #include <sys/param.h>
381 #define VKI_MAXPATHLEN MAXPATHLEN
384 #include <sys/signal.h>
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)
396 typedef 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'. */
403 #define VKI_SS_ONSTACK SS_ONSTACK
404 #define VKI_SS_DISABLE SS_DISABLE
405 #define VKI_MINSIGSTKSZ MINSIGSTKSZ
406 #define VKI_SIGSTKSZ SIGSTKSZ
408 #define vki_stack_t stack_t
409 #define vki_siginfo_t siginfo_t
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*'.
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
427 //typedef struct __sigaction vki_sigaction_toK_t;
428 //typedef struct sigaction vki_sigaction_fromK_t;
430 typedef
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;
437 vki_sigaction_toK_t;
439 typedef
440 struct {
441 void* ksa_handler;
442 vki_sigset_t sa_mask;
443 int sa_flags;
445 vki_sigaction_fromK_t;
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
453 //#define vki_sa_sigaction sa_sigaction
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 */
467 #define VKI_SIG_BLOCK SIG_BLOCK
468 #define VKI_SIG_UNBLOCK SIG_UNBLOCK
469 #define VKI_SIG_SETMASK SIG_SETMASK
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
503 #define VKI_SIG_DFL SIG_DFL
504 #define VKI_SIG_IGN SIG_IGN
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 #define VKI_CLD_EXITED CLD_EXITED
531 #define VKI_CLD_KILLED CLD_KILLED
532 #define VKI_CLD_DUMPED CLD_DUMPED
533 #define VKI_CLD_TRAPPED CLD_TRAPPED
534 #define VKI_CLD_STOPPED CLD_STOPPED
535 #define VKI_CLD_CONTINUED CLD_CONTINUED
537 /* JRS: not 100% sure, but I think these two are correct */
538 #define VKI_SA_ONESHOT SA_RESETHAND
539 #define VKI_SA_NOMASK SA_NODEFER
541 #define VKI_UC_SET_ALT_STACK 0x40000000
542 #define VKI_UC_RESET_ALT_STACK 0x80000000
545 #include <sys/errno.h>
547 #define VKI_EPERM EPERM
548 #define VKI_ENOENT ENOENT
549 #define VKI_ESRCH ESRCH
550 #define VKI_EINTR EINTR
551 #define VKI_EIO EIO
552 #define VKI_ENXIO ENXIO
553 #define VKI_E2BIG E2BIG
554 #define VKI_ENOEXEC ENOEXEC
555 #define VKI_EBADF EBADF
556 #define VKI_ECHILD ECHILD
557 #define VKI_EDEADLK EDEADLK
558 #define VKI_ENOMEM ENOMEM
559 #define VKI_EACCES EACCES
560 #define VKI_EFAULT EFAULT
561 #define VKI_ENOTBLK ENOTBLK
562 #define VKI_EBUSY EBUSY
563 #define VKI_EEXIST EEXIST
564 #define VKI_EXDEV EXDEV
565 #define VKI_ENODEV ENODEV
566 #define VKI_ENOTDIR ENOTDIR
567 #define VKI_EISDIR EISDIR
568 #define VKI_EINVAL EINVAL
569 #define VKI_ENFILE ENFILE
570 #define VKI_EMFILE EMFILE
571 #define VKI_ENOTTY ENOTTY
572 #define VKI_ETXTBSY ETXTBSY
573 #define VKI_EFBIG EFBIG
574 #define VKI_ENOSPC ENOSPC
575 #define VKI_ESPIPE ESPIPE
576 #define VKI_EROFS EROFS
577 #define VKI_EMLINK EMLINK
578 #define VKI_EPIPE EPIPE
579 #define VKI_EDOM EDOM
580 #define VKI_ERANGE ERANGE
581 #define VKI_EAGAIN EAGAIN
582 #define VKI_EWOULDBLOCK EAGAIN
583 #define VKI_EINPROGRESS EINPROGRESS
584 #define VKI_EALREADY EALREADY
585 #define VKI_ENOTSOCK ENOTSOCK
586 #define VKI_EDESTADDRREQ EDESTADDRREQ
587 #define VKI_EMSGSIZE EMSGSIZE
588 #define VKI_EPROTOTYPE EPROTOTYPE
589 #define VKI_ENOPROTOOPT ENOPROTOOPT
590 #define VKI_EPROTONOSUPPORT EPROTONOSUPPORT
591 #define VKI_ESOCKTNOSUPPORT ESOCKTNOSUPPORT
592 #define VKI_ENOTSUP ENOTSUP
593 #define VKI_EPFNOSUPPORT EPFNOSUPPORT
594 #define VKI_EAFNOSUPPORT EAFNOSUPPORT
595 #define VKI_EADDRINUSE EADDRINUSE
596 #define VKI_EADDRNOTAVAIL EADDRNOTAVAIL
597 #define VKI_ENETDOWN ENETDOWN
598 #define VKI_ENETUNREACH ENETUNREACH
599 #define VKI_ENETRESET ENETRESET
600 #define VKI_ECONNABORTED ECONNABORTED
601 #define VKI_ECONNRESET ECONNRESET
602 #define VKI_ENOBUFS ENOBUFS
603 #define VKI_EISCONN EISCONN
604 #define VKI_ENOTCONN ENOTCONN
605 #define VKI_ESHUTDOWN ESHUTDOWN
606 #define VKI_ETOOMANYREFS ETOOMANYREFS
607 #define VKI_ETIMEDOUT ETIMEDOUT
608 #define VKI_ECONNREFUSED ECONNREFUSED
609 #define VKI_ELOOP ELOOP
610 #define VKI_ENAMETOOLONG ENAMETOOLONG
611 #define VKI_EHOSTDOWN EHOSTDOWN
612 #define VKI_EHOSTUNREACH EHOSTUNREACH
613 #define VKI_ENOTEMPTY ENOTEMPTY
614 #define VKI_EPROCLIM EPROCLIM
615 #define VKI_EUSERS EUSERS
616 #define VKI_EDQUOT EDQUOT
617 #define VKI_ESTALE ESTALE
618 #define VKI_EREMOTE EREMOTE
619 #define VKI_EBADRPC EBADRPC
620 #define VKI_ERPCMISMATCH ERPCMISMATCH
621 #define VKI_EPROGUNAVAIL EPROGUNAVAIL
622 #define VKI_EPROGMISMATCH EPROGMISMATCH
623 #define VKI_EPROCUNAVAIL EPROCUNAVAIL
624 #define VKI_ENOLCK ENOLCK
625 #define VKI_ENOSYS ENOSYS
626 #define VKI_EFTYPE EFTYPE
627 #define VKI_EAUTH EAUTH
628 #define VKI_ENEEDAUTH ENEEDAUTH
629 #define VKI_EPWROFF EPWROFF
630 #define VKI_EDEVERR EDEVERR
631 #define VKI_EOVERFLOW EOVERFLOW
632 #define VKI_EBADEXEC EBADEXEC
633 #define VKI_EBADARCH EBADARCH
634 #define VKI_ESHLIBVERS ESHLIBVERS
635 #define VKI_EBADMACHO EBADMACHO
636 #define VKI_ECANCELED ECANCELED
637 #define VKI_EIDRM EIDRM
638 #define VKI_ENOMSG ENOMSG
639 #define VKI_EILSEQ EILSEQ
640 #define VKI_ENOATTR ENOATTR
641 #define VKI_EBADMSG EBADMSG
642 #define VKI_EMULTIHOP EMULTIHOP
643 #define VKI_ENODATA ENODATA
644 #define VKI_ENOLINK ENOLINK
645 #define VKI_ENOSR ENOSR
646 #define VKI_ENOSTR ENOSTR
647 #define VKI_EPROTO EPROTO
648 #define VKI_ETIME ETIME
649 #define VKI_EOPNOTSUPP EOPNOTSUPP
650 #define VKI_ELAST ELAST
653 #include <sys/resource.h>
655 #define VKI_RLIMIT_CPU RLIMIT_CPU
656 #define VKI_RLIMIT_FSIZE RLIMIT_FSIZE
657 #define VKI_RLIMIT_DATA RLIMIT_DATA
658 #define VKI_RLIMIT_STACK RLIMIT_STACK
659 #define VKI_RLIMIT_CORE RLIMIT_CORE
660 #define VKI_RLIMIT_AS RLIMIT_AD
661 #define VKI_RLIMIT_RSS RLIMIT_AS
662 #define VKI_RLIMIT_MEMLOCK RLIMIT_MEMLOCK
663 #define VKI_RLIMIT_NPROC RLIMIT_NPROC
664 #define VKI_RLIMIT_NOFILE RLIMIT_NOFILE
665 #define VKI_RLIM_NLIMITS RLIM_NLIMITS
667 #define vki_rlim_t rlim_t
668 #define vki_rlimit rlimit
669 #define vki_rusage rusage
672 #include <sys/poll.h>
674 #define vki_pollfd pollfd
677 #include <sys/ipc.h>
679 #define VKI_IPC_RMID IPC_RMID
680 #define VKI_IPC_SET IPC_SET
681 #define VKI_IPC_STAT IPC_STAT
683 #define vki_key_t key_t
684 #define vki_ipc_perm ipc_perm
687 #include <sys/sem.h>
689 #define VKI_GETNCNT GETNCNT
690 #define VKI_GETPID GETPID
691 #define VKI_GETVAL GETVAL
692 #define VKI_GETALL GETALL
693 #define VKI_GETZCNT GETZCNT
694 #define VKI_SETVAL SETVAL
695 #define VKI_SETALL SETALL
697 #define vki_sembuf sembuf
698 #define vki_semid_ds semid_ds
699 #define vki_semun semun
702 #include <sys/semaphore.h>
704 #define vki_sem_t sem_t
707 #include <sys/mount.h>
709 #define VKI_MFSNAMELEN MFSNAMELEN
710 #define VKI_MNAMELEN MNAMELEN
712 #define vki_fsid fsid
713 #define vki_fsid_t fsid_t
714 #define vki_statfs statfs
715 #define vki_statfs64 statfs64
718 #include <sys/select.h>
720 #define vki_fd_set fd_set
723 #include <sys/msgbuf.h>
725 #define VKI_MSG_BSIZE MSG_BSIZE
726 #define VKI_MSG_MAGIC MSG_MAGIC
727 #define vki_msgbuf msgbuf
730 #include <sys/shm.h>
732 #define VKI_SHM_RDONLY SHM_RDONLY
733 #define VKI_SHM_RND SHM_RND
734 #define VKI_SHMLBA SHMLBA
736 #define vki_shmid_ds shmid_ds
739 #include <sys/times.h>
741 #define vki_tms tms
744 #include <sys/utsname.h>
746 #define _VKI_SYS_NAMELEN _SYS_NAMELEN
747 #define vki_new_utsname utsname
750 #include <sys/unistd.h>
752 #define VKI_F_OK F_OK
753 #define VKI_X_OK X_OK
754 #define VKI_W_OK W_OK
755 #define VKI_R_OK R_OK
757 #define vki_accessx_descriptor accessx_descriptor
758 #define VKI_ACCESSX_MAX_DESCRIPTORS ACCESSX_MAX_DESCRIPTORS
760 #include <sys/sysctl.h>
762 #define VKI_CTL_MAXNAME CTL_MAXNAME
764 #define VKI_CTL_UNSPEC CTL_UNSPEC
765 #define VKI_CTL_KERN CTL_KERN
766 #define VKI_CTL_VM CTL_VM
767 #define VKI_CTL_VFS CTL_VFS
768 #define VKI_CTL_NET CTL_NET
769 #define VKI_CTL_DEBUG CTL_DEBUG
770 #define VKI_CTL_HW CTL_HW
771 #define VKI_CTL_MACHDEP CTL_MACHDEP
772 #define VKI_CTL_USER CTL_USER
773 #define VKI_CTL_MAXID CTL_MAXID
775 #define VKI_HW_MACHINE HW_MACHINE
776 #define VKI_HW_MODEL HW_MODEL
777 #define VKI_HW_NCPU HW_NCPU
778 #define VKI_HW_BYTEORDER HW_BYTEORDER
779 #define VKI_HW_PHYSMEM HW_PHYSMEM
780 #define VKI_HW_USERMEM HW_USERMEM
781 #define VKI_HW_PAGESIZE HW_PAGESIZE
782 #define VKI_HW_DISKNAMES HW_DISKNAMES
783 #define VKI_HW_DISKSTATS HW_DISKSTATS
784 #define VKI_HW_EPOCH HW_EPOCH
785 #define VKI_HW_FLOATINGPT HW_FLOATINGPT
786 #define VKI_HW_MACHINE_ARCH HW_MACHINE_ARCH
787 #define VKI_HW_VECTORUNIT HW_VECTORUNIT
788 #define VKI_HW_BUS_FREQ HW_BUS_FREQ
789 #define VKI_HW_CPU_FREQ HW_CPU_FREQ
790 #define VKI_HW_CACHELINE HW_CACHELINE
791 #define VKI_HW_L1ICACHESIZE HW_L1ICACHESIZE
792 #define VKI_HW_L1DCACHESIZE HW_L1DCACHESIZE
793 #define VKI_HW_L2SETTINGS HW_L2SETTINGS
794 #define VKI_HW_L2CACHESIZE HW_L2CACHESIZE
795 #define VKI_HW_L3SETTINGS HW_L3SETTINGS
796 #define VKI_HW_L3CACHESIZE HW_L3CACHESIZE
797 #define VKI_HW_TB_FREQ HW_TB_FREQ
798 #define VKI_HW_MEMSIZE HW_MEMSIZE
799 #define VKI_HW_AVAILCPU MW_AVAILCPU
800 #define VKI_HW_MAXID MW_MAXID
802 #define VKI_KERN_USRSTACK32 KERN_USRSTACK32
803 #define VKI_KERN_USRSTACK64 KERN_USRSTACK64
806 #include <sys/attr.h>
808 #define vki_attrlist attrlist
811 #include <sys/event.h>
813 #define vki_kevent kevent
814 #define vki_kevent64 kevent64_s
816 // xnu_root/bsd/sys/event.h
818 struct vki_kevent_qos_s {
819 uint64_t ident; /* identifier for this event */
820 int16_t filter; /* filter for event */
821 uint16_t flags; /* general flags */
822 int32_t qos; /* quality of service */
823 uint64_t udata; /* opaque user data identifier */
824 uint32_t fflags; /* filter-specific flags */
825 uint32_t xflags; /* extra filter-specific flags */
826 int64_t data; /* filter-specific data */
827 uint64_t ext[4]; /* filter-specific extensions */
830 #include <sys/ev.h>
832 typedef struct eventreq vki_eventreq;
835 #include <sys/acl.h>
837 #define vki_kauth_filesec kauth_filesec
840 #include <sys/ptrace.h>
842 #define VKI_PTRACE_TRACEME PT_TRACE_ME
843 #define VKI_PTRACE_DETACH PT_DETACH
846 // sqlite/src/os_unix.c
848 struct ByteRangeLockPB2
850 unsigned long long offset; /* offset to first byte to lock */
851 unsigned long long length; /* nbr of bytes to lock */
852 unsigned long long retRangeStart; /* nbr of 1st byte locked if successful */
853 unsigned char unLockFlag; /* 1 = unlock, 0 = lock */
854 unsigned char startEndFlag; /* 1=rel to end of fork, 0=rel to start */
855 int fd; /* file desc to assoc this lock with */
858 #define afpfsByteRangeLock2FSCTL _IOWR('z', 23, struct ByteRangeLockPB2)
860 #define vki_ByteRangeLockPB2 ByteRangeLockPB2
861 #define VKI_afpfsByteRangeLock2FSCTL afpfsByteRangeLock2FSCTL
864 // xnu/bsd/sys/fsctl.h
866 #define VKI_FSIOC_SYNC_VOLUME _IOW('A', 1, uint32_t)
869 // libpthread/kern/workqueue_internal.h
871 #define VKI_WQOPS_QUEUE_ADD 1
872 #define VKI_WQOPS_QUEUE_REMOVE 2
873 #define VKI_WQOPS_THREAD_RETURN 4 /* parks the thread back into the kernel */
874 #define VKI_WQOPS_THREAD_SETCONC 8
875 #define VKI_WQOPS_QUEUE_NEWSPISUPP 16 /* check for newer SPI support */
876 #define VKI_WQOPS_QUEUE_REQTHREADS 32 /* request number of threads of a prio */
877 #define VKI_WQOPS_QUEUE_REQTHREADS2 48 /* request a number of threads in a given priority bucket */
878 #define VKI_WQOPS_THREAD_KEVENT_RETURN 64 /* parks the thread after delivering the passed kevent array */
879 #define VKI_WQOPS_SET_EVENT_MANAGER_PRIORITY 128 /* max() in the provided priority in the the priority of the event manager */
880 #define VKI_WQOPS_THREAD_WORKLOOP_RETURN 256 /* parks the thread after delivering the passed kevent array */
881 #define VKI_WQOPS_SHOULD_NARROW 512 /* checks whether we should narrow our concurrency */
884 #include <sys/ttycom.h>
886 #define vki_winsize winsize
888 #define VKI_TIOCMODG TIOCMODG
889 #define VKI_TIOCMODS TIOCMODS
890 #define VKI_TIOCEXCL TIOCEXCL
891 #define VKI_TIOCNXCL TIOCNXCL
892 #define VKI_TIOCFLUSH TIOCFLUSH
893 #define VKI_TIOCGETA TIOCGETA
894 #define VKI_TIOCSETA TIOCSETA
895 #define VKI_TIOCSETAW TIOCSETAW
896 #define VKI_TIOCSETAF TIOCSETAF
897 #define VKI_TIOCGETD TIOCGETD
898 #define VKI_TIOCSETD TIOCSETD
899 #define VKI_TIOCSBRK TIOCSBRK
900 #define VKI_TIOCCBRK TIOCCBRK
901 #define VKI_TIOCSDTR TIOCSDTR
902 #define VKI_TIOCCDTR TIOCCDTR
903 #define VKI_TIOCGPGRP TIOCGPGRP
904 #define VKI_TIOCSPGRP TIOCSPGRP
905 #define VKI_TIOCOUTQ TIOCOUTQ
906 #define VKI_TIOCSTI TIOCSTI
907 #define VKI_TIOCNOTTY TIOCNOTTY
908 #define VKI_TIOCPKT TIOCPKT
909 #define VKI_TIOCSTOP TIOCSTOP
910 #define VKI_TIOCSTART TIOCSTART
911 #define VKI_TIOCMSET TIOCMSET
912 #define VKI_TIOCMBIS TIOCMBIS
913 #define VKI_TIOCMBIC TIOCMBIC
914 #define VKI_TIOCMGET TIOCMGET
915 #define VKI_TIOCREMOTE TIOCREMOTE
916 #define VKI_TIOCGWINSZ TIOCGWINSZ
917 #define VKI_TIOCSWINSZ TIOCSWINSZ
918 #define VKI_TIOCUCNTL TIOCUCNTL
919 #define VKI_TIOCSTAT TIOCSTAT
920 #define VKI_UIOCCMD(n) UIOCCMD(n)
921 #define VKI_TIOCSCONS TIOCSCONS
922 #define VKI_TIOCCONS TIOCCONS
923 #define VKI_TIOCSCTTY TIOCSCTTY
924 #define VKI_TIOCEXT TIOCEXT
925 #define VKI_TIOCSIG TIOCSIG
926 #define VKI_TIOCDRAIN TIOCDRAIN
927 #define VKI_TIOCMSDTRWAIT TIOCMSDTRWAIT
928 #define VKI_TIOCMGDTRWAIT TIOCMGDTRWAIT
929 #define VKI_TIOCTIMESTAMP TIOCTIMESTAMP
930 #define VKI_TIOCDCDTIMESTAMP TIOCDCDTIMESTAMP
931 #define VKI_TIOCSDRAINWAIT TIOCSDRAINWAIT
932 #define VKI_TIOCGDRAINWAIT TIOCGDRAINWAIT
933 #define VKI_TIOCDSIMICROCODE TIOCDSIMICROCODE
934 #define VKI_TIOCPTYGRANT TIOCPTYGRANT
935 #define VKI_TIOCPTYGNAME TIOCPTYGNAME
936 #define VKI_TIOCPTYUNLK TIOCPTYUNLK
939 #include <sys/filio.h>
941 #define VKI_FIOCLEX FIOCLEX
942 #define VKI_FIONCLEX FIONCLEX
943 #define VKI_FIONREAD FIONREAD
944 #define VKI_FIONBIO FIONBIO
945 #define VKI_FIOASYNC FIOASYNC
946 #define VKI_FIOSETOWN FIOSETOWN
947 #define VKI_FIOGETOWN FIOGETOWN
948 #define VKI_FIODTYPE FIODTYPE
951 #include <sys/sockio.h>
953 #define VKI_SIOCSHIWAT SIOCSHIWAT
954 #define VKI_SIOCGHIWAT SIOCGHIWAT
955 #define VKI_SIOCSLOWAT SIOCSLOWAT
956 #define VKI_SIOCGLOWAT SIOCGLOWAT
957 #define VKI_SIOCATMARK SIOCATMARK
958 #define VKI_SIOCSPGRP SIOCSPGRP
959 #define VKI_SIOCGPGRP SIOCGPGRP
961 #define VKI_SIOCSIFADDR SIOCSIFADDR
962 #define VKI_OSIOCGIFADDR OSIOCGIFADDR
963 #define VKI_SIOCSIFDSTADDR SIOCSIFDSTADDR
964 #define VKI_OSIOCGIFDSTADDR OSIOCGIFDSTADDR
965 #define VKI_SIOCSIFFLAGS SIOCSIFFLAGS
966 #define VKI_SIOCGIFFLAGS SIOCGIFFLAGS
967 #define VKI_OSIOCGIFBRDADDR OSIOCGIFBRDADDR
968 #define VKI_SIOCSIFBRDADDR SIOCSIFBRDADDR
969 #define VKI_OSIOCGIFCONF OSIOCGIFCONF
970 #define VKI_OSIOCGIFNETMASK OSIOCGIFNETMASK
971 #define VKI_SIOCSIFNETMASK SIOCSIFNETMASK
972 #define VKI_SIOCGIFMETRIC SIOCGIFMETRIC
973 #define VKI_SIOCSIFMETRIC SIOCSIFMETRIC
974 #define VKI_SIOCDIFADDR SIOCDIFADDR
975 #define VKI_SIOCAIFADDR SIOCAIFADDR
976 #define VKI_SIOCGETVIFCNT SIOCGETVIFCNT
977 #define VKI_SIOCGETSGCNT SIOCGETSGCNT
978 #define VKI_SIOCALIFADDR SIOCALIFADDR
979 #define VKI_SIOCGLIFADDR SIOCGLIFADDR
980 #define VKI_SIOCDLIFADDR SIOCDLIFADDR
982 #define VKI_SIOCGIFADDR SIOCGIFADDR
983 #define VKI_SIOCGIFDSTADDR SIOCGIFDSTADDR
984 #define VKI_SIOCGIFBRDADDR SIOCGIFBRDADDR
985 #define VKI_SIOCGIFCONF SIOCGIFCONF
986 #define VKI_SIOCGIFNETMASK SIOCGIFNETMASK
987 #define VKI_SIOCAUTOADDR SIOCAUTOADDR
988 #define VKI_SIOCAUTONETMASK SIOCAUTONETMASK
989 #define VKI_SIOCARPIPLL SIOCARPIPLL
991 #define VKI_SIOCADDMULTI SIOCADDMULTI
992 #define VKI_SIOCDELMULTI SIOCDELMULTI
993 #define VKI_SIOCGIFMTU SIOCGIFMTU
994 #define VKI_SIOCSIFMTU SIOCSIFMTU
995 #define VKI_SIOCGIFPHYS SIOCGIFPHYS
996 #define VKI_SIOCSIFPHYS SIOCSIFPHYS
997 #define VKI_SIOCSIFMEDIA SIOCSIFMEDIA
998 #define VKI_SIOCGIFMEDIA SIOCGIFMEDIA
999 #define VKI_SIOCSIFGENERIC SIOCSIFGENERIC
1000 #define VKI_SIOCGIFGENERIC SIOCGIFGENERIC
1001 #define VKI_SIOCRSLVMULTI SIOCRSLVMULTI
1003 #define VKI_SIOCSIFLLADDR SIOCSIFLLADDR
1004 #define VKI_SIOCGIFSTATUS SIOCGIFSTATUS
1005 #define VKI_SIOCSIFPHYADDR SIOCSIFPHYADDR
1006 #define VKI_SIOCGIFPSRCADDR SIOCGIFPSRCADDR
1007 #define VKI_SIOCGIFPDSTADDR SIOCGIFPDSTADDR
1008 #define VKI_SIOCDIFPHYADDR SIOCDIFPHYADDR
1009 #define VKI_SIOCSLIFPHYADDR SIOCSLIFPHYADDR
1010 #define VKI_SIOCGLIFPHYADDR SIOCGLIFPHYADDR
1012 #define VKI_SIOCGIFDEVMTU SIOCGIFDEVMTU
1013 #define VKI_SIOCSIFALTMTU SIOCSIFALTMTU
1014 #define VKI_SIOCGIFALTMTU SIOCGIFALTMTU
1015 #define VKI_SIOCSIFBOND SIOCSIFBOND
1016 #define VKI_SIOCGIFBOND SIOCGIFBOND
1017 #define VKI_SIOCIFCREATE SIOCIFCREATE
1018 #define VKI_SIOCIFDESTROY SIOCIFDESTROY
1019 #define VKI_SIOCSIFVLAN SIOCSIFVLAN
1020 #define VKI_SIOCGIFVLAN SIOCGIFVLAN
1022 #define VKI_SIOCSETVLAN SIOCSIFVLAN
1023 #define VKI_SIOCGETVLAN SIOCGIFVLAN
1025 #define VKI_SIOCGIFASYNCMAP SIOCGIFASYNCMAP
1026 #define VKI_SIOCSIFASYNCMAP SIOCSIGASYNCMAP
1029 #include <sys/dtrace.h>
1031 #define VKI_DTRACEHIOC_REMOVE DTRACEHIOC_REMOVE
1032 #define VKI_DTRACEHIOC_ADDDOF DTRACEHIOC_ADDDOF
1035 #include <net/bpf.h>
1037 #define vki_bpf_program bpf_program
1038 #define vki_bf_len bf_len
1039 #define vki_bf_insns bf_insns
1040 #define vki_bpf_dltlist bpf_dltlist
1041 #define vki_bfl_len bfl_len
1042 #define vki_bfl_list bfl_list
1044 #define VKI_BIOCSETF BIOCSETF
1045 #define VKI_BIOCFLUSH BIOCFLUSH
1046 #define VKI_BIOCPROMISC BIOCPROMISC
1047 #define VKI_BIOCSETIF BIOCSETIF
1048 #define VKI_BIOCSRTIMEOUT BIOCSRTIMEOUT
1049 #define VKI_BIOCGDLTLIST BIOCGDLTLIST
1052 #include <sys/ucontext.h>
1054 /* quite why sys/ucontext.h provides a 'struct __darwin_ucontext'
1055 but no 'struct ucontext' beats me. -- JRS */
1056 #define vki_ucontext __darwin_ucontext
1059 #include <sys/termios.h>
1061 #define vki_termios termios
1064 #include <uuid/uuid.h>
1066 #define vki_uuid_t uuid_t
1069 #include <bsm/audit.h>
1071 #define VKI_A_GETPOLICY A_GETPOLICY
1072 #define VKI_A_SETPOLICY A_SETPOLICY
1073 #define VKI_A_GETKMASK A_GETKMASK
1074 #define VKI_A_SETKMASK A_SETKMASK
1075 #define VKI_A_GETQCTRL A_GETQCTRL
1076 #define VKI_A_SETQCTRL A_SETQCTRL
1077 #define VKI_A_GETCWD A_GETCWD
1078 #define VKI_A_GETCAR A_GETCAR
1079 #define VKI_A_GETSTAT A_GETSTAT
1080 #define VKI_A_SETSTAT A_SETSTAT
1081 #define VKI_A_SETUMASK A_SETUMASK
1082 #define VKI_A_SETSMASK A_SETSMASK
1083 #define VKI_A_GETCOND A_GETCOND
1084 #define VKI_A_SETCOND A_SETCOND
1085 #define VKI_A_GETCLASS A_GETCLASS
1086 #define VKI_A_SETCLASS A_SETCLASS
1087 #define VKI_A_GETPINFO A_GETPINFO
1088 #define VKI_A_SETPMASK A_SETPMASK
1089 #define VKI_A_SETFSIZE A_SETFSIZE
1090 #define VKI_A_GETFSIZE A_GETFSIZE
1091 #define VKI_A_GETPINFO_ADDR A_GETPINFO_ADDR
1092 #define VKI_A_GETKAUDIT A_GETKAUDIT
1093 #define VKI_A_SETKAUDIT A_SETKAUDIT
1094 #if DARWIN_VERS >= DARWIN_10_6
1095 #define VKI_A_SENDTRIGGER A_SENDTRIGGER
1096 #define VKI_A_GETSINFO_ADDR A_GETSINFO_ADDR
1097 #endif
1100 #include <sys/aio.h>
1102 #define vki_aiocb aiocb
1105 #include <netinet/tcp.h>
1107 #define VKI_TCP_NODELAY TCP_NODELAY
1110 #include <netinet/in.h>
1112 #define VKI_IPPROTO_TCP IPPROTO_TCP
1115 // XXX: for some reason when I #include <sys/kernel_types.h> I get a syntax
1116 // error. Hmm. So just define things ourselves.
1117 //#include <sys/kernel_types.h>
1119 //#define vki_errno_t
1120 typedef int vki_errno_t;
1123 /* necp stuff. This doesn't appear to exist in any user space include
1124 file. */
1125 #if DARWIN_VERS >= DARWIN_10_10
1126 struct vki_necp_aggregate_result {
1127 vki_u_int32_t field1;
1128 unsigned int field2;
1129 vki_u_int32_t field3;
1130 vki_u_int32_t field4;
1131 vki_uuid_t field5;
1132 u_int32_t field6;
1133 u_int32_t field7;
1136 #define VKI_CSR_CHECK 0
1137 #define VKI_CSR_GET_ACTIVE_CONFIG 1
1138 #endif /* DARWIN_VERS >= DARWIN_10_10 */
1140 #if DARWIN_VERS >= DARWIN_10_12
1141 // ulock_wake & ulock_wait operations
1142 #define VKI_UL_OPCODE_MASK 0x000000FF
1143 #define VKI_UL_FLAGS_MASK 0xFFFFFF00
1144 #define VKI_UL_COMPARE_AND_WAIT 1
1145 #define VKI_UL_UNFAIR_LOCK 2
1146 // ulock_wake & ulock_wait flags
1147 #define ULF_NO_ERRNO 0x01000000
1149 // ulock_wake flags
1150 #define VKI_ULF_WAKE_ALL 0x00000100
1151 #define VKI_ULF_WAKE_THREAD 0x00000200
1153 // ulock_wait flags
1154 #define WKI_ULF_WAIT_WORKQ_DATA_CONTENTION 0x00010000
1156 #define VKI_NECP_CLIENT_ACTION_ADD 1
1157 #define VKI_NECP_CLIENT_ACTION_REMOVE 2
1158 #define VKI_NECP_CLIENT_ACTION_COPY_PARAMETERS 3
1159 #define VKI_NECP_CLIENT_ACTION_COPY_RESULT 4
1160 #define VKI_NECP_CLIENT_ACTION_COPY_LIST 5
1161 #define VKI_NECP_CLIENT_ACTION_AGENT 7
1162 #define VKI_NECP_CLIENT_ACTION_COPY_AGENT 8
1163 #define VKI_NECP_CLIENT_ACTION_COPY_INTERFACE 9
1164 #define VKI_NECP_CLIENT_ACTION_COPY_ROUTE_STATISTICS 11
1165 #define VKI_NECP_CLIENT_ACTION_AGENT_USE 12
1166 #define VKI_NECP_CLIENT_ACTION_UPDATE_CACHE 14
1167 #define VKI_NECP_CLIENT_ACTION_COPY_CLIENT_UPDATE 15
1168 #define VKI_NECP_CLIENT_ACTION_COPY_UPDATED_RESULT 16
1169 #define VKI_NECP_CLIENT_ACTION_CLAIM 19
1170 #define VKI_NECP_CLIENT_ACTION_SIGN 20
1172 #define VKI_NECP_MAX_CLIENT_PARAMETERS_SIZE 1024
1173 #define VKI_NECP_CLIENT_ACTION_SIGN_TAG_LENGTH 32
1175 #define VKI_IFXNAMSIZ IFNAMSIZ + 8
1176 #define VKI_IFNET_SIGNATURELEN 20
1178 struct vki_necp_client_signable {
1179 uuid_t client_id;
1180 u_int32_t sign_type;
1181 } __attribute__((__packed__));
1183 struct vki_necp_cache_buffer {
1184 u_int8_t necp_cache_buf_type; // NECP_CLIENT_CACHE_TYPE_*
1185 u_int8_t necp_cache_buf_ver; // NECP_CLIENT_CACHE_TYPE_*_VER
1186 u_int32_t necp_cache_buf_size;
1187 mach_vm_address_t necp_cache_buf_addr;
1190 struct vki_necp_interface_signature {
1191 u_int8_t signature[VKI_IFNET_SIGNATURELEN];
1192 u_int8_t signature_len;
1195 struct vki_necp_interface_details_legacy {
1196 char name[VKI_IFXNAMSIZ];
1197 u_int32_t index;
1198 u_int32_t generation;
1199 u_int32_t functional_type;
1200 u_int32_t delegate_index;
1201 u_int32_t flags; // see NECP_INTERFACE_FLAG_*
1202 u_int32_t mtu;
1203 struct vki_necp_interface_signature ipv4_signature;
1204 struct vki_necp_interface_signature ipv6_signature;
1207 struct vki_necp_agent_use_parameters {
1208 uuid_t agent_uuid;
1209 uint64_t out_use_count;
1212 // Precalculated as the struct are really big
1213 #define VKI_IFNET_STATS_PER_FLOW_SIZE 96
1214 #define VKI_NECP_STAT_COUNTS_SIZE 68
1216 #endif /* DARWIN_VERS >= DARWIN_10_12 */
1218 #endif