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

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

   Copyright (C) 2007-2013 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
#if DARWIN_VERS >= DARWIN_10_10
#define	VKI_F_SETLKWTIMEOUT F_SETLKWTIMEOUT
#endif

#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
#if DARWIN_VERS >= DARWIN_10_9
# define VKI_F_ADDFILESIGS  F_ADDFILESIGS
#endif
#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
#define vki_kevent64 kevent64_s


#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


#include <netinet/tcp.h>

#define VKI_TCP_NODELAY  TCP_NODELAY


#include <netinet/in.h>

#define VKI_IPPROTO_TCP  IPPROTO_TCP


// 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;


/* necp stuff.  This doesn't appear to exist in any user space include
   file. */
#if DARWIN_VERS == DARWIN_10_10
struct vki_necp_aggregate_result {
   vki_u_int32_t field1;
   unsigned int  field2;
   vki_u_int32_t field3;
   vki_u_int32_t field4;
   vki_uuid_t    field5;
   u_int32_t     field6;
   u_int32_t     field7;
};
#endif /* DARWIN_VERS == DARWIN_10_10 */


#endif
