// godefs -gsyscall -f-m64 types_darwin.c

// MACHINE GENERATED - DO NOT EDIT.

package syscall

// Constants
const (
	sizeofPtr = 0x8;
	sizeofShort = 0x2;
	sizeofInt = 0x4;
	sizeofLong = 0x8;
	sizeofLongLong = 0x8;
	O_RDONLY = 0;
	O_WRONLY = 0x1;
	O_RDWR = 0x2;
	O_APPEND = 0x8;
	O_ASYNC = 0x40;
	O_CREAT = 0x200;
	O_NOCTTY = 0x20000;
	O_NONBLOCK = 0x4;
	O_SYNC = 0x80;
	O_TRUNC = 0x400;
	O_CLOEXEC = 0;
	F_GETFD = 0x1;
	F_SETFD = 0x2;
	F_GETFL = 0x3;
	F_SETFL = 0x4;
	FD_CLOEXEC = 0x1;
	NAME_MAX = 0xff;
	S_IFMT = 0xf000;
	S_IFIFO = 0x1000;
	S_IFCHR = 0x2000;
	S_IFDIR = 0x4000;
	S_IFBLK = 0x6000;
	S_IFREG = 0x8000;
	S_IFLNK = 0xa000;
	S_IFSOCK = 0xc000;
	S_IFWHT = 0xe000;
	S_ISUID = 0x800;
	S_ISGID = 0x400;
	S_ISVTX = 0x200;
	S_IRUSR = 0x100;
	S_IWUSR = 0x80;
	S_IXUSR = 0x40;
	WNOHANG = 0x1;
	WUNTRACED = 0x2;
	WEXITED = 0x4;
	WSTOPPED = 0x7f;
	WCONTINUED = 0x10;
	WNOWAIT = 0x20;
	AF_UNIX = 0x1;
	AF_INET = 0x2;
	AF_DATAKIT = 0x9;
	AF_INET6 = 0x1e;
	SOCK_STREAM = 0x1;
	SOCK_DGRAM = 0x2;
	SOCK_RAW = 0x3;
	SOCK_SEQPACKET = 0x5;
	SOL_SOCKET = 0xffff;
	SO_REUSEADDR = 0x4;
	SO_KEEPALIVE = 0x8;
	SO_DONTROUTE = 0x10;
	SO_BROADCAST = 0x20;
	SO_USELOOPBACK = 0x40;
	SO_LINGER = 0x80;
	SO_REUSEPORT = 0x200;
	SO_SNDBUF = 0x1001;
	SO_RCVBUF = 0x1002;
	SO_SNDTIMEO = 0x1005;
	SO_RCVTIMEO = 0x1006;
	SO_NOSIGPIPE = 0x1022;
	IPPROTO_TCP = 0x6;
	IPPROTO_UDP = 0x11;
	TCP_NODELAY = 0x1;
	SOMAXCONN = 0x80;
	SizeofSockaddrInet4 = 0x10;
	SizeofSockaddrInet6 = 0x1c;
	SizeofSockaddrAny = 0x1c;
	SizeofSockaddrUnix = 0x6a;
	_PTRACE_TRACEME = 0;
	_PTRACE_CONT = 0x7;
	_PTRACE_KILL = 0x8;
	EVFILT_READ = -0x1;
	EVFILT_WRITE = -0x2;
	EVFILT_AIO = -0x3;
	EVFILT_VNODE = -0x4;
	EVFILT_PROC = -0x5;
	EVFILT_SIGNAL = -0x6;
	EVFILT_TIMER = -0x7;
	EVFILT_MACHPORT = -0x8;
	EVFILT_FS = -0x9;
	EVFILT_SYSCOUNT = 0x9;
	EV_ADD = 0x1;
	EV_DELETE = 0x2;
	EV_DISABLE = 0x8;
	EV_RECEIPT = 0x40;
	EV_ONESHOT = 0x10;
	EV_CLEAR = 0x20;
	EV_SYSFLAGS = 0xf000;
	EV_FLAG0 = 0x1000;
	EV_FLAG1 = 0x2000;
	EV_EOF = 0x8000;
	EV_ERROR = 0x4000;
)

// Types

type _C_short int16

type _C_int int32

type _C_long int64

type _C_long_long int64

type Timespec struct {
	Sec int64;
	Nsec int64;
}

type Timeval struct {
	Sec int64;
	Usec int32;
	Pad0 [4]byte;
}

type Rusage struct {
	Utime Timeval;
	Stime Timeval;
	Maxrss int64;
	Ixrss int64;
	Idrss int64;
	Isrss int64;
	Minflt int64;
	Majflt int64;
	Nswap int64;
	Inblock int64;
	Oublock int64;
	Msgsnd int64;
	Msgrcv int64;
	Nsignals int64;
	Nvcsw int64;
	Nivcsw int64;
}

type Rlimit struct {
	Cur uint64;
	Max uint64;
}

type _Gid_t uint32

type Stat_t struct {
	Dev int32;
	Mode uint16;
	Nlink uint16;
	Ino uint64;
	Uid uint32;
	Gid uint32;
	Rdev int32;
	Pad0 [4]byte;
	Atimespec Timespec;
	Mtimespec Timespec;
	Ctimespec Timespec;
	Birthtimespec Timespec;
	Size int64;
	Blocks int64;
	Blksize int32;
	Flags uint32;
	Gen uint32;
	Lspare int32;
	Qspare [2]int64;
}

type Statfs_t struct {
	Bsize uint32;
	Iosize int32;
	Blocks uint64;
	Bfree uint64;
	Bavail uint64;
	Files uint64;
	Ffree uint64;
	Fsid [8]byte /* fsid */;
	Owner uint32;
	Type uint32;
	Flags uint32;
	Fssubtype uint32;
	Fstypename [16]int8;
	Mntonname [1024]int8;
	Mntfromname [1024]int8;
	Reserved [8]uint32;
}

type Dirent struct {
	Ino uint64;
	Seekoff uint64;
	Reclen uint16;
	Namlen uint16;
	Type uint8;
	Name [1024]int8;
	Pad0 [3]byte;
}

type RawSockaddrInet4 struct {
	Len uint8;
	Family uint8;
	Port uint16;
	Addr [4]byte /* in_addr */;
	Zero [8]int8;
}

type RawSockaddrInet6 struct {
	Len uint8;
	Family uint8;
	Port uint16;
	Flowinfo uint32;
	Addr [16]byte /* in6_addr */;
	Scope_id uint32;
}

type RawSockaddrUnix struct {
	Len uint8;
	Family uint8;
	Path [104]int8;
}

type RawSockaddr struct {
	Len uint8;
	Family uint8;
	Data [14]int8;
}

type RawSockaddrAny struct {
	Addr RawSockaddr;
	Pad [12]int8;
}

type _Socklen uint32

type Linger struct {
	Onoff int32;
	Linger int32;
}

type Kevent_t struct {
	Ident uint64;
	Filter int16;
	Flags uint16;
	Fflags uint32;
	Data int64;
	Udata *byte;
}

type FdSet struct {
	Bits [32]int32;
}
