
/*--------------------------------------------------------------------*/
/*--- Darwin-specific kernel interface.               vki-darwin.h ---*/
/*--------------------------------------------------------------------*/

/*
   This file is part of Valgrind, a dynamic binary instrumentation
   framework.

   Copyright (C) 2007-2012 Apple Inc.
      Greg Parker  gparker@apple.com

   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   This program is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   02111-1307, USA.

   The GNU General Public License is contained in the file COPYING.
*/

/* Unlike vki-linux, this Darwin kernel interface includes system headers
   directly, to avoid copyright complexity. */

#ifndef __VKI_DARWIN_H
#define __VKI_DARWIN_H

#include <stdint.h>

#define vki_int8_t int8_t
#define vki_uint8_t uint8_t
#define vki_int16_t int16_t
#define vki_uint16_t uint16_t
#define vki_int32_t int32_t
#define vki_uint32_t uint32_t
#define vki_int64_t int64_t
#define vki_uint64_t uint64_t
#define vki_intptr_t intptr_t
#define vki_uintptr_t uintptr_t

#include <sys/types.h>

#define vki_dev_t dev_t
#define vki_mode_t mode_t
#define vki_ino_t ino_t
#define vki_ino64_t ino64_t
#define vki_nlink_t nlink_t
#define vki_uid_t uid_t
#define vki_gid_t gid_t
#define vki_time_t time_t
#define vki_off_t off_t
#define vki_blkcnt_t blkcnt_t
#define vki_blksize_t blksize_t
#define vki_size_t size_t
#define vki_ssize_t ssize_t
#define vki_pid_t pid_t
#define vki_socklen_t socklen_t
#define vki_suseconds_t suseconds_t
#define vki_caddr_t caddr_t
#define vki_u_long u_long
#define vki_u_short u_short
#define vki_clock_t clock_t
#define vki_u_int32_t u_int32_t
#define vki_u_int16_t u_int16_t
#define vki_pthread_t pthread_t


// valgrind special

// magic mmap() flags
#define	VKI_MAP_ANONYMOUS MAP_ANON	// linux synonym

// fds for mmap(MAP_ANON), displayed by vmmap
#define VM_TAG_VALGRIND VM_MAKE_TAG(239)  // SkAnonV

// page sizes
#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE

// types
typedef uint32_t vki_u32;

// linux-like ioctl flags
#define _VKI_IOC_DIR(x)		((x) & IOC_DIRMASK)
#define _VKI_IOC_SIZE(x)	IOCPARM_LEN(x)
#define _VKI_IOC_NONE		IOC_VOID  /* GrP fixme correct? */
#define _VKI_IOC_READ		IOC_OUT
#define _VKI_IOC_WRITE		IOC_IN


#include <malloc/malloc.h>

#define vki_malloc_zone_t malloc_zone_t


#include <sys/time.h>

#define vki_timeval timeval
#define vki_timeval32 timeval32
#define vki_timespec timespec
#define vki_itimerval itimerval
#define vki_timezone timezone


#include <sys/stat.h>

#define	VKI_S_ISBLK(m)	S_ISBLK(m)
#define	VKI_S_ISCHR(m)	S_ISCHR(m)
#define	VKI_S_ISDIR(m)	S_ISDIR(m)
#define	VKI_S_ISFIFO(m)	S_ISFIFO(m)
#define	VKI_S_ISREG(m)	S_ISREG(m)
#define	VKI_S_ISLNK(m)	S_ISLNK(m)
#define	VKI_S_ISSOCK(m)	S_ISSOCK(m)
#define	VKI_S_ISWHT(m)	S_ISWHT(m)
#define VKI_S_ISXATTR(m) S_ISXATTR(m)

#define	VKI_S_IRWXU	S_IRWXU
#define	VKI_S_IRUSR	S_IRUSR
#define	VKI_S_IWUSR	S_IWUSR
#define	VKI_S_IXUSR	S_IXUSR
#define	VKI_S_IRWXG	S_IRWXG
#define	VKI_S_IRGRP	S_IRGRP
#define	VKI_S_IWGRP	S_IWGRP
#define	VKI_S_IXGRP	S_IXGRP
#define	VKI_S_IRWXO	S_IRWXO
#define	VKI_S_IROTH	S_IROTH
#define	VKI_S_IWOTH	S_IWOTH
#define	VKI_S_IXOTH	S_IXOTH
#define	VKI_S_ISUID	S_ISUID
#define	VKI_S_ISGID	S_ISGID
#define	VKI_S_ISVTX	S_ISVTX

#define vki_stat stat
#define vki_stat64 stat64

#define st_atime      st_atimespec.tv_sec
#define st_atime_nsec st_atimespec.tv_nsec
#define st_mtime      st_mtimespec.tv_sec
#define st_mtime_nsec st_mtimespec.tv_nsec
#define st_ctime      st_ctimespec.tv_sec
#define st_ctime_nsec st_ctimespec.tv_nsec


#include <sys/dirent.h>

#define VKI_MAXNAMLEN MAXNAMLEN
#define vki_dirent dirent


#include <sys/socket.h>
#define	VKI_SOCK_STREAM	SOCK_STREAM
#define	VKI_SOCK_DGRAM	SOCK_DGRAM
#define	VKI_SOCK_RAW	SOCK_RAW

#define	VKI_AF_UNIX	AF_UNIX
#define	VKI_AF_INET	AF_INET
#define	VKI_AF_INET6	AF_INET6

#define	VKI_SOL_SOCKET	SOL_SOCKET

#define	VKI_SO_REUSEADDR SO_REUSEADDR

#define VKI_SO_SNDBUF	SO_SNDBUF
#define VKI_SO_RCVBUF	SO_RCVBUF
#define VKI_SO_SNDLOWAT	SO_SNDLOWAT
#define VKI_SO_RCVLOWAT	SO_RCVLOWAT
#define VKI_SO_SNDTIMEO	SO_SNDTIMEO
#define VKI_SO_RCVTIMEO	SO_RCVTIMEO
#define	VKI_SO_ERROR	SO_ERROR
#define	VKI_SO_TYPE	SO_TYPE
#define VKI_SO_NREAD	SO_NREAD
#define VKI_SO_NKE	SO_NKE
#define VKI_SO_NOSIGPIPE	SO_NOSIGPIPE
#define VKI_SO_NOADDRERR	SO_NOADDRERR
#define VKI_SO_NWRITE	SO_NWRITE
#define VKI_SO_LINGER_SEC	SO_LINGER_SEC

#define vki_sa_family_t sa_family_t
#define vki_sockaddr sockaddr
#define vki_iovec iovec
#define vki_msghdr msghdr
#define vki_cmsghdr cmsghdr


#define VKI_CMSG_ALIGN(a) 	ALIGN(a)
#define	VKI_CMSG_DATA(cmsg)	CMSG_DATA(cmsg)
#define	VKI_CMSG_FIRSTHDR(mhdr)	CMSG_FIRSTHDR(mhdr)
#define	VKI_CMSG_NXTHDR(mhdr, cmsg)	CMSG_NXTHDR(mhdr, cmsg)

#define	VKI_SCM_RIGHTS		SCM_RIGHTS
#define	VKI_SCM_TIMESTAMP	SCM_TIMESTAMP
#define	VKI_SCM_CREDS		SCM_CREDS


#include <sys/un.h>

#define vki_sockaddr_un sockaddr_un


#include <netinet/in.h>

#define vki_in_addr_t in_addr_t
#define vki_in_port_t in_port_t
#define vki_in_addr in_addr
#define vki_sockaddr_in sockaddr_in

#define	VKI_INADDR_LOOPBACK	INADDR_LOOPBACK


// #include <netinet6/in6.h>

#define vki_in6_addr in6_addr
#define vki_sockaddr_in6 sockaddr_in6


#include <net/if.h>

#define	VKI_IFNAMSIZ	IFNAMSIZ

#define vki_ifdevmtu ifdevmtu
#define vki_ifreq ifreq
#define vki_ifr_name 	ifr_name
#define	vki_ifr_addr	ifr_addr
#define	vki_ifr_dstaddr	ifr_dstaddr
#define	vki_ifr_broadaddr	ifr_broadaddr
#define	vki_ifr_flags	ifr_flags
#define	vki_ifr_metric	ifr_metric
#define	vki_ifr_mtu	ifr_mtu
#define vki_ifr_phys	ifr_phys
#define vki_ifr_media	ifr_media
#define	vki_ifr_data	ifr_data
#define vki_ifr_devmtu	ifr_devmtu
#define vki_ifr_intval	ifr_intval

#define vki_ifconf ifconf
#define vki_ifc_buf 	ifc_buf
#define vki_ifc_req 	ifc_req


#include <sys/fcntl.h>

#define	VKI_SEEK_SET	SEEK_SET
#define	VKI_SEEK_CUR	SEEK_CUR
#define	VKI_SEEK_END	SEEK_END

#define	VKI_O_RDONLY	O_RDONLY
#define	VKI_O_WRONLY	O_WRONLY
#define	VKI_O_RDWR	O_RDWR
#define	VKI_O_ACCMODE	O_ACCMODE
#define	VKI_O_NONBLOCK	O_NONBLOCK
#define	VKI_O_APPEND	O_APPEND
#define	VKI_O_SYNC	O_SYN
#define	VKI_O_SHLOCK	O_SHLOCK
#define	VKI_O_EXLOCK	O_EXLOCK
#define	VKI_O_ASYNC	O_ASYNC
#define VKI_O_NOFOLLOW  O_NOFOLLOW
#define	VKI_O_CREAT	O_CREAT
#define	VKI_O_TRUNC	O_TRUNC
#define	VKI_O_EXCL	O_EXCL
#define	VKI_O_EVTONLY	O_EVTONLY

#define	VKI_F_DUPFD	F_DUPFD
#define	VKI_F_GETFD	F_GETFD
#define	VKI_F_SETFD	F_SETFD
#define	VKI_F_GETFL	F_GETFL
#define	VKI_F_SETFL	F_SETFL
#define	VKI_F_GETOWN	F_GETOWN
#define VKI_F_SETOWN	F_SETOWN
#define	VKI_F_GETLK	F_GETLK
#define	VKI_F_SETLK	F_SETLK
#define	VKI_F_SETLKW	F_SETLKW

#define VKI_F_CHKCLEAN	F_CHKCLEAN
#define VKI_F_PREALLOCATE	F_PREALLOCATE
#define VKI_F_SETSIZE	F_SETSIZE
#define VKI_F_RDADVISE	F_RDADVISE
#define VKI_F_RDAHEAD	F_RDAHEAD
#define VKI_F_READBOOTSTRAP	F_READBOOTSTRAP
#define VKI_F_WRITEBOOTSTRAP	F_WRITEBOOTSTRAP
#define VKI_F_NOCACHE	F_NOCACHE
#define VKI_F_LOG2PHYS	F_LOG2PHYS
#define VKI_F_GETPATH	F_GETPATH
#define VKI_F_ADDSIGS	F_ADDSIGS
#define VKI_F_FULLFSYNC	F_FULLFSYNC
#define VKI_F_PATHPKG_CHECK	F_PATHPKG_CHECK
#define VKI_F_FREEZE_FS	F_FREEZE_FS
#define VKI_F_THAW_FS	F_THAW_FS
#define	VKI_F_GLOBAL_NOCACHE	F_GLOBAL_NOCACHE

#define VKI_FD_CLOEXEC	FD_CLOEXEC

#define vki_radvisory radvisory
#define vki_fstore fstore
#define vki_fbootstraptransfer fbootstraptransfer
#define vki_log2phys log2phys
#define vki_fsignatures_t fsignatures_t

// These constants aren't in a standard header, they are from the kernel code:
// xnu-1228.3.13/bsd/sys/codesign.h
// Mac OS X 10.5.6 - Darwin 9.6
#define VKI_CS_OPS_STATUS           0       /* return status */
#define VKI_CS_OPS_MARKINVALID      1       /* invalidate process */
#define VKI_CS_OPS_MARKHARD         2       /* set HARD flag */
#define VKI_CS_OPS_MARKKILL         3       /* set KILL flag (sticky) */
#define VKI_CS_OPS_PIDPATH          4       /* get executable's pathname */
#define VKI_CS_OPS_CDHASH           5       /* get code directory hash */

#include <sys/mman.h>

#define	VKI_PROT_NONE	PROT_NONE
#define	VKI_PROT_READ	PROT_READ
#define	VKI_PROT_WRITE	PROT_WRITE
#define	VKI_PROT_EXEC	PROT_EXEC

#define	VKI_MAP_SHARED	MAP_SHARED
#define	VKI_MAP_PRIVATE	MAP_PRIVATE
#define	VKI_MAP_FIXED	MAP_FIXED
#define	VKI_MAP_RENAME	MAP_RENAME
#define	VKI_MAP_NORESERVE	MAP_NORESERVE
#define	VKI_MAP_RESERVED0080	MAP_RESERVED0080
#define	VKI_MAP_NOEXTEND	MAP_NOEXTEND
#define	VKI_MAP_HASSEMAPHORE	MAP_HASSEMAPHORE
#define	VKI_MAP_FILE	MAP_FILE
#define	VKI_MAP_ANON	MAP_ANON
#define VKI_MAP_FAILED	MAP_FAILED


#include <mach/vm_param.h>

#define VKI_PAGE_SHIFT PAGE_SHIFT
#define VKI_PAGE_SIZE PAGE_SIZE
#define VKI_PAGE_MASK PAGE_MASK


#include <sys/vmparam.h>

#define VKI_USRSTACK USRSTACK
#define VKI_USRSTACK64 USRSTACK64


#include <mach/mach_time.h>

#define vki_mach_timebase_info mach_timebase_info


#include <sys/syslimits.h>

#define VKI_PATH_MAX PATH_MAX


#include <sys/param.h>

#define VKI_MAXPATHLEN MAXPATHLEN


#include <sys/signal.h>

/* While we fully intend to make 'vki_sigset_t' match the native
   Darwin 'sigset_t', we can't just clone the Darwin sigset_t type,
   because it isn't an array, and the VG_(sigfillset) etc functions
   assume it is.  So instead define another isomorphic type, and check
   in VG_(vki_do_initial_consistency_checks) that it really is
   correct. */
/* #define vki_sigset_t sigset_t */
#define _VKI_NSIG_BPW   32
#define _VKI_NSIG       32
#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
typedef struct {
   UInt sig[_VKI_NSIG_WORDS];
} vki_sigset_t;
/* and now let VG_(vki_do_initial_consistency_checks) make sure it
   matches 'sigset_t'. */


#define VKI_SS_ONSTACK	SS_ONSTACK
#define	VKI_SS_DISABLE	SS_DISABLE
#define	VKI_MINSIGSTKSZ	MINSIGSTKSZ
#define	VKI_SIGSTKSZ	SIGSTKSZ

#define vki_stack_t        stack_t
#define vki_siginfo_t      siginfo_t

/* There are two versions of this.  'struct __sigaction' is used for
   passing sigactions to the kernel interface, and has the added
   complexity of requiring an extra pointer to a new demultiplexing
   function to be run in user space.  'struct sigaction' is used for
   receiving old sigactions from the kernel, and lacks this
   demux-function pointer.  So the type of the second and third
   parameters in Darwin's sys_sigaction appear to be different,
   respectively 'struct __sigaction*' and 'struct sigaction*'.
*/
//#define vki_sigaction      __sigaction
//#define vki_user_sigaction sigaction
//#define vki_sigaltstack    sigaltstack
//#define vki_sigval         sigval
//#define vki_sigaction_u    sigaction_u
//#define vki_sigaction     sigaction

//typedef  struct __sigaction  vki_sigaction_toK_t;
//typedef  struct sigaction    vki_sigaction_fromK_t;

typedef
   struct {
      void* ksa_handler;
      void (*sa_tramp)(void*,UWord,UWord,void*,void*);
      vki_sigset_t sa_mask;
      int sa_flags;
   }
   vki_sigaction_toK_t;

typedef
   struct {
      void* ksa_handler;
      vki_sigset_t sa_mask;
      int sa_flags;
   }
   vki_sigaction_fromK_t;



/* and /usr/include/sys/signal.c in turn defines 'sa_handler' to
   be '__sigaction_u.__sa_handler' */
//#define	ksa_handler      sa_handler

//#define	vki_sa_sigaction sa_sigaction

#define VKI_SA_ONSTACK	SA_ONSTACK
#define VKI_SA_RESTART	SA_RESTART
#define	VKI_SA_DISABLE	SA_DISABLE
#define	VKI_SA_RESETHAND	SA_RESETHAND
#define VKI_SA_NOCLDSTOP	SA_NOCLDSTOP
#define	VKI_SA_NODEFER	SA_NODEFER
#define	VKI_SA_NOCLDWAIT	SA_NOCLDWAIT
#define	VKI_SA_SIGINFO	SA_SIGINFO
#define	VKI_SA_USERTRAMP	SA_USERTRAMP
#define	VKI_SA_64REGSET	SA_64REGSET
#define VKI_SA_RESTORER  0 /* Darwin doesn't have this */

#define	VKI_SIG_BLOCK	SIG_BLOCK
#define	VKI_SIG_UNBLOCK	SIG_UNBLOCK
#define	VKI_SIG_SETMASK	SIG_SETMASK

#define	VKI_SIGHUP	SIGHUP
#define	VKI_SIGINT	SIGINT
#define	VKI_SIGQUIT	SIGQUIT
#define	VKI_SIGILL	SIGILL
#define	VKI_SIGTRAP	SIGTRAP
#define	VKI_SIGABRT	SIGABRT
#define	VKI_SIGPOLL	SIGPOLL
#define	VKI_SIGFPE	SIGFPE
#define	VKI_SIGKILL	SIGKILL
#define	VKI_SIGBUS	SIGBUS
#define	VKI_SIGSEGV	SIGSEGV
#define	VKI_SIGSYS	SIGSYS
#define	VKI_SIGPIPE	SIGPIPE
#define	VKI_SIGALRM	SIGALRM
#define	VKI_SIGTERM	SIGTERM
#define	VKI_SIGURG	SIGURG
#define	VKI_SIGSTOP	SIGSTOP
#define	VKI_SIGTSTP	SIGTSTP
#define	VKI_SIGCONT	SIGCONT
#define	VKI_SIGCHLD	SIGCHLD
#define	VKI_SIGTTIN	SIGTTIN
#define	VKI_SIGTTOU	SIGTTOU
#define	VKI_SIGIO	SIGIO
#define	VKI_SIGXCPU	SIGXCPU
#define	VKI_SIGXFSZ	SIGXFSZ
#define	VKI_SIGVTALRM	SIGVTALRM
#define	VKI_SIGPROF	SIGPROF
#define VKI_SIGWINCH	SIGWINCH
#define VKI_SIGINFO	SIGINFO
#define VKI_SIGUSR1	SIGUSR1
#define VKI_SIGUSR2	SIGUSR2

#define VKI_SIG_DFL     SIG_DFL
#define VKI_SIG_IGN     SIG_IGN


#define VKI_SI_USER      SI_USER
#define VKI_SEGV_MAPERR  SEGV_MAPERR
#define VKI_SEGV_ACCERR  SEGV_ACCERR
#define VKI_ILL_ILLOPC   ILL_ILLOPC
#define VKI_ILL_ILLOPN   ILL_ILLOPN
#define VKI_ILL_ILLADR   ILL_ILLADR
#define VKI_ILL_ILLTRP   ILL_ILLTRP
#define VKI_ILL_PRVOPC   ILL_PRVOPC
#define VKI_ILL_PRVREG   ILL_PRVREG
#define VKI_ILL_COPROC   ILL_COPROC
#define VKI_ILL_BADSTK   ILL_BADSTK
#define VKI_FPE_INTDIV   FPE_INTDIV
#define VKI_FPE_INTOVF   FPE_INTOVF
#define VKI_FPE_FLTDIV   FPE_FLTDIV
#define VKI_FPE_FLTOVF   FPE_FLTOVF
#define VKI_FPE_FLTUND   FPE_FLTUND
#define VKI_FPE_FLTRES   FPE_FLTRES
#define VKI_FPE_FLTINV   FPE_FLTINV
#define VKI_FPE_FLTSUB   FPE_FLTSUB
#define VKI_BUS_ADRALN   BUS_ADRALN
#define VKI_BUS_ADRERR   BUS_ADRERR
#define VKI_BUS_OBJERR   BUS_OBJERR
#define VKI_TRAP_BRKPT   TRAP_BRKPT

/* JRS: not 100% sure, but I think these two are correct */
#define VKI_SA_ONESHOT   SA_RESETHAND
#define VKI_SA_NOMASK    SA_NODEFER

#define VKI_UC_SET_ALT_STACK   0x40000000
#define VKI_UC_RESET_ALT_STACK 0x80000000


#include <sys/errno.h>

#define VKI_EPERM		EPERM
#define VKI_ENOENT		ENOENT
#define VKI_ESRCH		ESRCH
#define VKI_EINTR		EINTR
#define VKI_EIO			EIO
#define VKI_ENXIO		ENXIO
#define VKI_E2BIG		E2BIG
#define VKI_ENOEXEC		ENOEXEC
#define VKI_EBADF		EBADF
#define VKI_ECHILD		ECHILD
#define VKI_EDEADLK		EDEADLK
#define VKI_ENOMEM		ENOMEM
#define VKI_EACCES		EACCES
#define VKI_EFAULT		EFAULT
#define VKI_ENOTBLK		ENOTBLK
#define VKI_EBUSY		EBUSY
#define VKI_EEXIST		EEXIST
#define VKI_EXDEV		EXDEV
#define VKI_ENODEV		ENODEV
#define VKI_ENOTDIR		ENOTDIR
#define VKI_EISDIR		EISDIR
#define VKI_EINVAL		EINVAL
#define VKI_ENFILE		ENFILE
#define VKI_EMFILE		EMFILE
#define VKI_ENOTTY		ENOTTY
#define VKI_ETXTBSY		ETXTBSY
#define VKI_EFBIG		EFBIG
#define VKI_ENOSPC		ENOSPC
#define VKI_ESPIPE		ESPIPE
#define VKI_EROFS		EROFS
#define VKI_EMLINK		EMLINK
#define VKI_EPIPE		EPIPE
#define VKI_EDOM		EDOM
#define VKI_ERANGE		ERANGE
#define VKI_EAGAIN		EAGAIN
#define VKI_EWOULDBLOCK		EAGAIN
#define VKI_EINPROGRESS		EINPROGRESS
#define VKI_EALREADY		EALREADY
#define VKI_ENOTSOCK		ENOTSOCK
#define VKI_EDESTADDRREQ	EDESTADDRREQ
#define VKI_EMSGSIZE		EMSGSIZE
#define VKI_EPROTOTYPE		EPROTOTYPE
#define VKI_ENOPROTOOPT		ENOPROTOOPT
#define VKI_EPROTONOSUPPORT	EPROTONOSUPPORT
#define VKI_ESOCKTNOSUPPORT	ESOCKTNOSUPPORT
#define VKI_ENOTSUP		ENOTSUP
#define VKI_EPFNOSUPPORT	EPFNOSUPPORT
#define VKI_EAFNOSUPPORT	EAFNOSUPPORT
#define VKI_EADDRINUSE		EADDRINUSE
#define VKI_EADDRNOTAVAIL	EADDRNOTAVAIL
#define VKI_ENETDOWN		ENETDOWN
#define VKI_ENETUNREACH		ENETUNREACH
#define VKI_ENETRESET		ENETRESET
#define VKI_ECONNABORTED	ECONNABORTED
#define VKI_ECONNRESET		ECONNRESET
#define VKI_ENOBUFS		ENOBUFS
#define VKI_EISCONN		EISCONN
#define VKI_ENOTCONN		ENOTCONN
#define VKI_ESHUTDOWN		ESHUTDOWN
#define VKI_ETOOMANYREFS	ETOOMANYREFS
#define VKI_ETIMEDOUT		ETIMEDOUT
#define VKI_ECONNREFUSED	ECONNREFUSED
#define VKI_ELOOP		ELOOP
#define VKI_ENAMETOOLONG	ENAMETOOLONG
#define VKI_EHOSTDOWN		EHOSTDOWN
#define VKI_EHOSTUNREACH	EHOSTUNREACH
#define VKI_ENOTEMPTY		ENOTEMPTY
#define VKI_EPROCLIM		EPROCLIM
#define VKI_EUSERS		EUSERS
#define VKI_EDQUOT		EDQUOT
#define VKI_ESTALE		ESTALE
#define VKI_EREMOTE		EREMOTE
#define VKI_EBADRPC		EBADRPC
#define VKI_ERPCMISMATCH	ERPCMISMATCH
#define VKI_EPROGUNAVAIL	EPROGUNAVAIL
#define VKI_EPROGMISMATCH	EPROGMISMATCH
#define VKI_EPROCUNAVAIL	EPROCUNAVAIL
#define VKI_ENOLCK		ENOLCK
#define VKI_ENOSYS		ENOSYS
#define VKI_EFTYPE		EFTYPE
#define VKI_EAUTH		EAUTH
#define VKI_ENEEDAUTH		ENEEDAUTH
#define VKI_EPWROFF		EPWROFF
#define VKI_EDEVERR		EDEVERR
#define VKI_EOVERFLOW		EOVERFLOW
#define VKI_EBADEXEC		EBADEXEC
#define VKI_EBADARCH		EBADARCH
#define VKI_ESHLIBVERS		ESHLIBVERS
#define VKI_EBADMACHO		EBADMACHO
#define VKI_ECANCELED		ECANCELED
#define VKI_EIDRM		EIDRM
#define VKI_ENOMSG		ENOMSG
#define VKI_EILSEQ		EILSEQ
#define VKI_ENOATTR		ENOATTR
#define VKI_EBADMSG		EBADMSG
#define VKI_EMULTIHOP		EMULTIHOP
#define VKI_ENODATA		ENODATA
#define VKI_ENOLINK		ENOLINK
#define VKI_ENOSR		ENOSR
#define VKI_ENOSTR		ENOSTR
#define VKI_EPROTO		EPROTO
#define VKI_ETIME		ETIME
#define VKI_EOPNOTSUPP		EOPNOTSUPP
#define VKI_ELAST		ELAST


#include <sys/resource.h>

#define	VKI_RLIMIT_CPU		RLIMIT_CPU
#define	VKI_RLIMIT_FSIZE	RLIMIT_FSIZE
#define	VKI_RLIMIT_DATA		RLIMIT_DATA
#define	VKI_RLIMIT_STACK	RLIMIT_STACK
#define	VKI_RLIMIT_CORE		RLIMIT_CORE
#define	VKI_RLIMIT_AS		RLIMIT_AD
#define	VKI_RLIMIT_RSS		RLIMIT_AS
#define	VKI_RLIMIT_MEMLOCK	RLIMIT_MEMLOCK
#define	VKI_RLIMIT_NPROC	RLIMIT_NPROC
#define	VKI_RLIMIT_NOFILE	RLIMIT_NOFILE
#define	VKI_RLIM_NLIMITS	RLIM_NLIMITS

#define vki_rlim_t rlim_t
#define vki_rlimit rlimit
#define vki_rusage rusage


#include <sys/poll.h>

#define vki_pollfd pollfd


#include <sys/ipc.h>

#define	VKI_IPC_RMID	IPC_RMID
#define	VKI_IPC_SET	IPC_SET
#define	VKI_IPC_STAT	IPC_STAT

#define vki_key_t key_t
#define vki_ipc_perm ipc_perm


#include <sys/sem.h>

#define VKI_GETNCNT	GETNCNT
#define VKI_GETPID	GETPID
#define VKI_GETVAL	GETVAL
#define VKI_GETALL	GETALL
#define VKI_GETZCNT	GETZCNT
#define VKI_SETVAL	SETVAL
#define VKI_SETALL	SETALL

#define vki_sembuf sembuf
#define vki_semid_ds semid_ds
#define vki_semun semun


#include <sys/semaphore.h>

#define vki_sem_t sem_t


#include <sys/mount.h>

#define	VKI_MFSNAMELEN	MFSNAMELEN
#define	VKI_MNAMELEN	MNAMELEN

#define vki_fsid fsid
#define vki_fsid_t fsid_t
#define vki_statfs statfs
#define vki_statfs64 statfs64


#include <sys/select.h>

#define vki_fd_set fd_set


#include <sys/msgbuf.h>

#define	VKI_MSG_BSIZE	MSG_BSIZE
#define VKI_MSG_MAGIC	MSG_MAGIC
#define vki_msgbuf msgbuf


#include <sys/shm.h>

#define VKI_SHM_RDONLY	SHM_RDONLY
#define VKI_SHM_RND	SHM_RND
#define VKI_SHMLBA	SHMLBA

#define vki_shmid_ds shmid_ds


#include <sys/times.h>

#define vki_tms tms


#include <sys/utsname.h>

#define	_VKI_SYS_NAMELEN	_SYS_NAMELEN
#define vki_new_utsname utsname


#include <sys/unistd.h>

#define	VKI_F_OK	F_OK
#define	VKI_X_OK	X_OK
#define	VKI_W_OK	W_OK
#define	VKI_R_OK	R_OK

#define vki_accessx_descriptor         accessx_descriptor
#define VKI_ACCESSX_MAX_DESCRIPTORS    ACCESSX_MAX_DESCRIPTORS

#include <sys/sysctl.h>

#define VKI_CTL_MAXNAME		CTL_MAXNAME

#define	VKI_CTL_UNSPEC		CTL_UNSPEC
#define	VKI_CTL_KERN		CTL_KERN
#define	VKI_CTL_VM		CTL_VM
#define	VKI_CTL_VFS		CTL_VFS
#define	VKI_CTL_NET		CTL_NET
#define	VKI_CTL_DEBUG		CTL_DEBUG
#define	VKI_CTL_HW		CTL_HW
#define	VKI_CTL_MACHDEP		CTL_MACHDEP
#define	VKI_CTL_USER		CTL_USER
#define	VKI_CTL_MAXID		CTL_MAXID

#define	VKI_HW_MACHINE		HW_MACHINE
#define	VKI_HW_MODEL		HW_MODEL
#define	VKI_HW_NCPU		HW_NCPU
#define	VKI_HW_BYTEORDER	HW_BYTEORDER
#define	VKI_HW_PHYSMEM		HW_PHYSMEM
#define	VKI_HW_USERMEM		HW_USERMEM
#define	VKI_HW_PAGESIZE		HW_PAGESIZE
#define	VKI_HW_DISKNAMES	HW_DISKNAMES
#define	VKI_HW_DISKSTATS	HW_DISKSTATS
#define	VKI_HW_EPOCH  		HW_EPOCH
#define VKI_HW_FLOATINGPT	HW_FLOATINGPT
#define VKI_HW_MACHINE_ARCH	HW_MACHINE_ARCH
#define VKI_HW_VECTORUNIT	HW_VECTORUNIT
#define VKI_HW_BUS_FREQ		HW_BUS_FREQ
#define VKI_HW_CPU_FREQ		HW_CPU_FREQ
#define VKI_HW_CACHELINE	HW_CACHELINE
#define VKI_HW_L1ICACHESIZE	HW_L1ICACHESIZE
#define VKI_HW_L1DCACHESIZE	HW_L1DCACHESIZE
#define VKI_HW_L2SETTINGS	HW_L2SETTINGS
#define VKI_HW_L2CACHESIZE	HW_L2CACHESIZE
#define VKI_HW_L3SETTINGS	HW_L3SETTINGS
#define VKI_HW_L3CACHESIZE	HW_L3CACHESIZE
#define VKI_HW_TB_FREQ		HW_TB_FREQ
#define VKI_HW_MEMSIZE		HW_MEMSIZE
#define VKI_HW_AVAILCPU		MW_AVAILCPU
#define	VKI_HW_MAXID		MW_MAXID

#define	VKI_KERN_USRSTACK32	KERN_USRSTACK32
#define	VKI_KERN_USRSTACK64	KERN_USRSTACK64


#include <sys/attr.h>

#define vki_attrlist attrlist


#include <sys/event.h>

#define vki_kevent kevent


#include <sys/ev.h>

typedef struct eventreq vki_eventreq;


#include <sys/acl.h>

#define vki_kauth_filesec kauth_filesec


#include <sys/ptrace.h>

#define VKI_PTRACE_TRACEME   PT_TRACE_ME
#define VKI_PTRACE_DETACH    PT_DETACH


// sqlite/src/os_unix.c

struct ByteRangeLockPB2
{
    unsigned long long offset;        /* offset to first byte to lock */
    unsigned long long length;        /* nbr of bytes to lock */
    unsigned long long retRangeStart; /* nbr of 1st byte locked if successful */
    unsigned char unLockFlag;         /* 1 = unlock, 0 = lock */
    unsigned char startEndFlag;       /* 1=rel to end of fork, 0=rel to start */
    int fd;                           /* file desc to assoc this lock with */
};

#define afpfsByteRangeLock2FSCTL _IOWR('z', 23, struct ByteRangeLockPB2)

#define vki_ByteRangeLockPB2 ByteRangeLockPB2
#define VKI_afpfsByteRangeLock2FSCTL afpfsByteRangeLock2FSCTL


// xnu/bsd/sys/fsctl.h

#define VKI_FSIOC_SYNC_VOLUME        _IOW('A', 1, uint32_t)


// Libc/pthreads/pthread.c

#define VKI_WQOPS_QUEUE_ADD          1
#define VKI_WQOPS_QUEUE_REMOVE       2
#define VKI_WQOPS_THREAD_RETURN      4
#define VKI_WQOPS_THREAD_SETCONC     8
#define VKI_WQOPS_QUEUE_NEWSPISUPP  16  /* check for newer SPI support */
#define VKI_WQOPS_QUEUE_REQTHREADS  32  /* request number of threads of a prio */


#include <sys/ttycom.h>

#define vki_winsize winsize

#define	VKI_TIOCMODG	TIOCMODG
#define	VKI_TIOCMODS	TIOCMODS
#define	VKI_TIOCEXCL	TIOCEXCL
#define	VKI_TIOCNXCL	TIOCNXCL
#define	VKI_TIOCFLUSH	TIOCFLUSH
#define	VKI_TIOCGETA	TIOCGETA
#define	VKI_TIOCSETA	TIOCSETA
#define	VKI_TIOCSETAW	TIOCSETAW
#define	VKI_TIOCSETAF	TIOCSETAF
#define	VKI_TIOCGETD	TIOCGETD
#define	VKI_TIOCSETD	TIOCSETD
#define	VKI_TIOCSBRK	TIOCSBRK
#define	VKI_TIOCCBRK	TIOCCBRK
#define	VKI_TIOCSDTR	TIOCSDTR
#define	VKI_TIOCCDTR	TIOCCDTR
#define	VKI_TIOCGPGRP	TIOCGPGRP
#define	VKI_TIOCSPGRP	TIOCSPGRP
#define	VKI_TIOCOUTQ	TIOCOUTQ
#define	VKI_TIOCSTI	TIOCSTI
#define	VKI_TIOCNOTTY	TIOCNOTTY
#define	VKI_TIOCPKT	TIOCPKT
#define	VKI_TIOCSTOP	TIOCSTOP
#define	VKI_TIOCSTART	TIOCSTART
#define	VKI_TIOCMSET	TIOCMSET
#define	VKI_TIOCMBIS	TIOCMBIS
#define	VKI_TIOCMBIC	TIOCMBIC
#define	VKI_TIOCMGET	TIOCMGET
#define	VKI_TIOCREMOTE	TIOCREMOTE
#define	VKI_TIOCGWINSZ	TIOCGWINSZ
#define	VKI_TIOCSWINSZ	TIOCSWINSZ
#define	VKI_TIOCUCNTL	TIOCUCNTL
#define	VKI_TIOCSTAT	TIOCSTAT
#define	VKI_UIOCCMD(n)	UIOCCMD(n)
#define	VKI_TIOCSCONS	TIOCSCONS
#define	VKI_TIOCCONS	TIOCCONS
#define	VKI_TIOCSCTTY	TIOCSCTTY
#define	VKI_TIOCEXT	TIOCEXT
#define	VKI_TIOCSIG	TIOCSIG
#define	VKI_TIOCDRAIN	TIOCDRAIN
#define	VKI_TIOCMSDTRWAIT	TIOCMSDTRWAIT
#define	VKI_TIOCMGDTRWAIT	TIOCMGDTRWAIT
#define	VKI_TIOCTIMESTAMP	TIOCTIMESTAMP
#define	VKI_TIOCDCDTIMESTAMP	TIOCDCDTIMESTAMP
#define	VKI_TIOCSDRAINWAIT	TIOCSDRAINWAIT
#define	VKI_TIOCGDRAINWAIT	TIOCGDRAINWAIT
#define	VKI_TIOCDSIMICROCODE	TIOCDSIMICROCODE
#define VKI_TIOCPTYGRANT	TIOCPTYGRANT
#define VKI_TIOCPTYGNAME	TIOCPTYGNAME
#define VKI_TIOCPTYUNLK	TIOCPTYUNLK


#include <sys/filio.h>

#define	VKI_FIOCLEX	FIOCLEX
#define	VKI_FIONCLEX	FIONCLEX
#define	VKI_FIONREAD	FIONREAD
#define	VKI_FIONBIO	FIONBIO
#define	VKI_FIOASYNC	FIOASYNC
#define	VKI_FIOSETOWN	FIOSETOWN
#define	VKI_FIOGETOWN	FIOGETOWN
#define	VKI_FIODTYPE	FIODTYPE


#include <sys/sockio.h>

#define	VKI_SIOCSHIWAT	SIOCSHIWAT
#define	VKI_SIOCGHIWAT	SIOCGHIWAT
#define	VKI_SIOCSLOWAT	SIOCSLOWAT
#define	VKI_SIOCGLOWAT	SIOCGLOWAT
#define	VKI_SIOCATMARK	SIOCATMARK
#define	VKI_SIOCSPGRP	SIOCSPGRP
#define	VKI_SIOCGPGRP	SIOCGPGRP

#define	VKI_SIOCSIFADDR		SIOCSIFADDR
#define	VKI_OSIOCGIFADDR	OSIOCGIFADDR
#define	VKI_SIOCSIFDSTADDR	SIOCSIFDSTADDR
#define	VKI_OSIOCGIFDSTADDR	OSIOCGIFDSTADDR
#define	VKI_SIOCSIFFLAGS	SIOCSIFFLAGS
#define	VKI_SIOCGIFFLAGS	SIOCGIFFLAGS
#define	VKI_OSIOCGIFBRDADDR	OSIOCGIFBRDADDR
#define	VKI_SIOCSIFBRDADDR	SIOCSIFBRDADDR
#define	VKI_OSIOCGIFCONF	OSIOCGIFCONF
#define	VKI_OSIOCGIFNETMASK	OSIOCGIFNETMASK
#define	VKI_SIOCSIFNETMASK	SIOCSIFNETMASK
#define	VKI_SIOCGIFMETRIC	SIOCGIFMETRIC
#define	VKI_SIOCSIFMETRIC	SIOCSIFMETRIC
#define	VKI_SIOCDIFADDR		SIOCDIFADDR
#define	VKI_SIOCAIFADDR		SIOCAIFADDR
#define	VKI_SIOCGETVIFCNT	SIOCGETVIFCNT
#define	VKI_SIOCGETSGCNT	SIOCGETSGCNT
#define VKI_SIOCALIFADDR	SIOCALIFADDR
#define VKI_SIOCGLIFADDR	SIOCGLIFADDR
#define VKI_SIOCDLIFADDR	SIOCDLIFADDR

#define	VKI_SIOCGIFADDR		SIOCGIFADDR
#define	VKI_SIOCGIFDSTADDR	SIOCGIFDSTADDR
#define	VKI_SIOCGIFBRDADDR	SIOCGIFBRDADDR
#define	VKI_SIOCGIFCONF		SIOCGIFCONF
#define	VKI_SIOCGIFNETMASK	SIOCGIFNETMASK
#define VKI_SIOCAUTOADDR	SIOCAUTOADDR
#define VKI_SIOCAUTONETMASK	SIOCAUTONETMASK
#define VKI_SIOCARPIPLL		SIOCARPIPLL

#define	VKI_SIOCADDMULTI	SIOCADDMULTI
#define	VKI_SIOCDELMULTI	SIOCDELMULTI
#define	VKI_SIOCGIFMTU		SIOCGIFMTU
#define	VKI_SIOCSIFMTU	 	SIOCSIFMTU
#define	VKI_SIOCGIFPHYS		SIOCGIFPHYS
#define	VKI_SIOCSIFPHYS	 	SIOCSIFPHYS
#define	VKI_SIOCSIFMEDIA	SIOCSIFMEDIA
#define	VKI_SIOCGIFMEDIA	SIOCGIFMEDIA
#define	VKI_SIOCSIFGENERIC	SIOCSIFGENERIC
#define	VKI_SIOCGIFGENERIC	SIOCGIFGENERIC
#define VKI_SIOCRSLVMULTI   	SIOCRSLVMULTI

#define	VKI_SIOCSIFLLADDR	SIOCSIFLLADDR
#define	VKI_SIOCGIFSTATUS	SIOCGIFSTATUS
#define	VKI_SIOCSIFPHYADDR   	SIOCSIFPHYADDR
#define	VKI_SIOCGIFPSRCADDR	SIOCGIFPSRCADDR
#define	VKI_SIOCGIFPDSTADDR	SIOCGIFPDSTADDR
#define	VKI_SIOCDIFPHYADDR	SIOCDIFPHYADDR
#define	VKI_SIOCSLIFPHYADDR	SIOCSLIFPHYADDR
#define	VKI_SIOCGLIFPHYADDR	SIOCGLIFPHYADDR

#define	VKI_SIOCGIFDEVMTU	SIOCGIFDEVMTU
#define	VKI_SIOCSIFALTMTU	SIOCSIFALTMTU
#define VKI_SIOCGIFALTMTU	SIOCGIFALTMTU
#define VKI_SIOCSIFBOND	 	SIOCSIFBOND
#define VKI_SIOCGIFBOND		SIOCGIFBOND
#define	VKI_SIOCIFCREATE	SIOCIFCREATE
#define	VKI_SIOCIFDESTROY	SIOCIFDESTROY
#define	VKI_SIOCSIFVLAN	 	SIOCSIFVLAN
#define	VKI_SIOCGIFVLAN		SIOCGIFVLAN

#define	VKI_SIOCSETVLAN		SIOCSIFVLAN
#define	VKI_SIOCGETVLAN		SIOCGIFVLAN

#define	VKI_SIOCGIFASYNCMAP 	SIOCGIFASYNCMAP
#define	VKI_SIOCSIFASYNCMAP 	SIOCSIGASYNCMAP


#include <sys/dtrace.h>

#define VKI_DTRACEHIOC_REMOVE   DTRACEHIOC_REMOVE
#define VKI_DTRACEHIOC_ADDDOF   DTRACEHIOC_ADDDOF


#include <sys/ucontext.h>

/* quite why sys/ucontext.h provides a 'struct __darwin_ucontext'
   but no 'struct ucontext' beats me. -- JRS */
#define vki_ucontext __darwin_ucontext


#include <sys/termios.h>

#define vki_termios termios


#include <uuid/uuid.h>

#define vki_uuid_t uuid_t


#include <bsm/audit.h>

#define	VKI_A_GETPOLICY	A_GETPOLICY	
#define	VKI_A_SETPOLICY	A_SETPOLICY	
#define	VKI_A_GETKMASK	A_GETKMASK	
#define	VKI_A_SETKMASK	A_SETKMASK	
#define	VKI_A_GETQCTRL	A_GETQCTRL	
#define	VKI_A_SETQCTRL	A_SETQCTRL	
#define	VKI_A_GETCWD	A_GETCWD	
#define	VKI_A_GETCAR	A_GETCAR	
#define	VKI_A_GETSTAT	A_GETSTAT	
#define	VKI_A_SETSTAT	A_SETSTAT	
#define	VKI_A_SETUMASK	A_SETUMASK	
#define	VKI_A_SETSMASK	A_SETSMASK	
#define	VKI_A_GETCOND	A_GETCOND	
#define	VKI_A_SETCOND	A_SETCOND	
#define	VKI_A_GETCLASS	A_GETCLASS	
#define	VKI_A_SETCLASS	A_SETCLASS	
#define	VKI_A_GETPINFO	A_GETPINFO	
#define	VKI_A_SETPMASK	A_SETPMASK	
#define	VKI_A_SETFSIZE	A_SETFSIZE	
#define	VKI_A_GETFSIZE	A_GETFSIZE	
#define	VKI_A_GETPINFO_ADDR	A_GETPINFO_ADDR	
#define	VKI_A_GETKAUDIT	A_GETKAUDIT	
#define	VKI_A_SETKAUDIT	A_SETKAUDIT	
#if DARWIN_VERS >= DARWIN_10_6
#define VKI_A_SENDTRIGGER A_SENDTRIGGER
#define VKI_A_GETSINFO_ADDR A_GETSINFO_ADDR
#endif


#include <sys/aio.h>

#define vki_aiocb aiocb


// XXX: for some reason when I #include <sys/kernel_types.h> I get a syntax
// error.  Hmm.  So just define things ourselves.
//#include <sys/kernel_types.h>

//#define vki_errno_t
typedef int vki_errno_t;

#endif
