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