// mksysnum_darwin.sh /home/rsc/pub/xnu-1228/bsd/kern/syscalls.master
// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT

package syscall

const (
	// SYS_NOSYS = 0;  // { int nosys(void); }   { indirect syscall }
	SYS_EXIT	= 1;	// { void exit(int rval); }
	SYS_FORK	= 2;	// { int fork(void); }
	SYS_READ	= 3;	// { user_ssize_t read(int fd, user_addr_t cbuf, user_size_t nbyte); }
	SYS_WRITE	= 4;	// { user_ssize_t write(int fd, user_addr_t cbuf, user_size_t nbyte); }
	SYS_OPEN	= 5;	// { int open(user_addr_t path, int flags, int mode); }
	SYS_CLOSE	= 6;	// { int close(int fd); }
	SYS_WAIT4	= 7;	// { int wait4(int pid, user_addr_t status, int options, user_addr_t rusage); }
	// SYS_NOSYS = 8;  // { int nosys(void); }   { old creat }
	SYS_LINK	= 9;	// { int link(user_addr_t path, user_addr_t link); }
	SYS_UNLINK	= 10;	// { int unlink(user_addr_t path); }
	// SYS_NOSYS = 11;  // { int nosys(void); }   { old execv }
	SYS_CHDIR	= 12;	// { int chdir(user_addr_t path); }
	SYS_FCHDIR	= 13;	// { int fchdir(int fd); }
	SYS_MKNOD	= 14;	// { int mknod(user_addr_t path, int mode, int dev); }
	SYS_CHMOD	= 15;	// { int chmod(user_addr_t path, int mode); }
	SYS_CHOWN	= 16;	// { int chown(user_addr_t path, int uid, int gid); }
	SYS_OGETFSSTAT	= 18;	// { int ogetfsstat(user_addr_t buf, int bufsize, int flags); }
	SYS_GETFSSTAT	= 18;	// { int getfsstat(user_addr_t buf, int bufsize, int flags); }
	// SYS_NOSYS = 19;  // { int nosys(void); }   { old lseek }
	SYS_GETPID	= 20;	// { int getpid(void); }
	// SYS_NOSYS = 21;  // { int nosys(void); }   { old mount }
	// SYS_NOSYS = 22;  // { int nosys(void); }   { old umount }
	SYS_SETUID	= 23;	// { int setuid(uid_t uid); }
	SYS_GETUID	= 24;	// { int getuid(void); }
	SYS_GETEUID	= 25;	// { int geteuid(void); }
	SYS_PTRACE	= 26;	// { int ptrace(int req, pid_t pid, caddr_t addr, int data); }
	SYS_RECVMSG	= 27;	// { int recvmsg(int s, struct msghdr *msg, int flags); }
	SYS_SENDMSG	= 28;	// { int sendmsg(int s, caddr_t msg, int flags); }
	SYS_RECVFROM	= 29;	// { int recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr); }
	SYS_ACCEPT	= 30;	// { int accept(int s, caddr_t name, socklen_t	*anamelen); }
	SYS_GETPEERNAME	= 31;	// { int getpeername(int fdes, caddr_t asa, socklen_t *alen); }
	SYS_GETSOCKNAME	= 32;	// { int getsockname(int fdes, caddr_t asa, socklen_t *alen); }
	// SYS_NOSYS = 27;  // { int nosys(void); }
	// SYS_NOSYS = 28;  // { int nosys(void); }
	// SYS_NOSYS = 29;  // { int nosys(void); }
	// SYS_NOSYS = 30;  // { int nosys(void); }
	// SYS_NOSYS = 31;  // { int nosys(void); }
	// SYS_NOSYS = 32;  // { int nosys(void); }
	SYS_ACCESS	= 33;	// { int access(user_addr_t path, int flags); }
	SYS_CHFLAGS	= 34;	// { int chflags(char *path, int flags); }
	SYS_FCHFLAGS	= 35;	// { int fchflags(int fd, int flags); }
	SYS_SYNC	= 36;	// { int sync(void); }
	SYS_KILL	= 37;	// { int kill(int pid, int signum, int posix); }
	// SYS_NOSYS = 38;  // { int nosys(void); }   { old stat  }
	SYS_GETPPID	= 39;	// { int getppid(void); }
	// SYS_NOSYS = 40;  // { int nosys(void); }   { old lstat }
	SYS_DUP		= 41;	// { int dup(u_int fd); }
	SYS_PIPE	= 42;	// { int pipe(void); }
	SYS_GETEGID	= 43;	// { int getegid(void); }
	SYS_PROFIL	= 44;	// { int profil(short *bufbase, size_t bufsize, u_long pcoffset, u_int pcscale); }
	// SYS_NOSYS = 45;  // { int nosys(void); } { old ktrace }
	SYS_SIGACTION	= 46;	// { int sigaction(int signum, struct __sigaction *nsa, struct sigaction *osa); }
	SYS_GETGID	= 47;	// { int getgid(void); }
	SYS_SIGPROCMASK	= 48;	// { int sigprocmask(int how, user_addr_t mask, user_addr_t omask); }
	SYS_GETLOGIN	= 49;	// { int getlogin(char *namebuf, u_int namelen); }
	SYS_SETLOGIN	= 50;	// { int setlogin(char *namebuf); }
	SYS_ACCT	= 51;	// { int acct(char *path); }
	SYS_SIGPENDING	= 52;	// { int sigpending(struct sigvec *osv); }
	SYS_SIGALTSTACK	= 53;	// { int sigaltstack(struct sigaltstack *nss, struct sigaltstack *oss); }
	SYS_IOCTL	= 54;	// { int ioctl(int fd, u_long com, caddr_t data); }
	SYS_REBOOT	= 55;	// { int reboot(int opt, char *command); }
	SYS_REVOKE	= 56;	// { int revoke(char *path); }
	SYS_SYMLINK	= 57;	// { int symlink(char *path, char *link); }
	SYS_READLINK	= 58;	// { int readlink(char *path, char *buf, int count); }
	SYS_EXECVE	= 59;	// { int execve(char *fname, char **argp, char **envp); }
	SYS_UMASK	= 60;	// { int umask(int newmask); }
	SYS_CHROOT	= 61;	// { int chroot(user_addr_t path); }
	// SYS_NOSYS = 62;  // { int nosys(void); }   { old fstat }
	// SYS_NOSYS = 63;  // { int nosys(void); }   { used internally, reserved }
	// SYS_NOSYS = 64;  // { int nosys(void); }   { old getpagesize }
	SYS_MSYNC	= 65;	// { int msync(caddr_t addr, size_t len, int flags); }
	SYS_VFORK	= 66;	// { int vfork(void); }
	// SYS_NOSYS = 67;  // { int nosys(void); }   { old vread }
	// SYS_NOSYS = 68;  // { int nosys(void); }   { old vwrite }
	SYS_SBRK	= 69;	// { int sbrk(int incr) NO_SYSCALL_STUB; }
	SYS_SSTK	= 70;	// { int sstk(int incr) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 71;  // { int nosys(void); }   { old mmap }
	SYS_OVADVISE	= 72;	// { int ovadvise(void) NO_SYSCALL_STUB; }   { old vadvise }
	SYS_MUNMAP	= 73;	// { int munmap(caddr_t addr, size_t len); }
	SYS_MPROTECT	= 74;	// { int mprotect(caddr_t addr, size_t len, int prot); }
	SYS_MADVISE	= 75;	// { int madvise(caddr_t addr, size_t len, int behav); }
	// SYS_NOSYS = 76;  // { int nosys(void); }   { old vhangup }
	// SYS_NOSYS = 77;  // { int nosys(void); }   { old vlimit }
	SYS_MINCORE	= 78;	// { int mincore(user_addr_t addr, user_size_t len, user_addr_t vec); }
	SYS_GETGROUPS	= 79;	// { int getgroups(u_int gidsetsize, gid_t *gidset); }
	SYS_SETGROUPS	= 80;	// { int setgroups(u_int gidsetsize, gid_t *gidset); }
	SYS_GETPGRP	= 81;	// { int getpgrp(void); }
	SYS_SETPGID	= 82;	// { int setpgid(int pid, int pgid); }
	SYS_SETITIMER	= 83;	// { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }
	// SYS_NOSYS = 84;  // { int nosys(void); }   { old wait }
	SYS_SWAPON	= 85;	// { int swapon(void); }
	SYS_GETITIMER	= 86;	// { int getitimer(u_int which, struct itimerval *itv); }
	// SYS_NOSYS = 87;  // { int nosys(void); }   { old gethostname }
	// SYS_NOSYS = 88;  // { int nosys(void); }   { old sethostname }
	SYS_GETDTABLESIZE	= 89;	// { int getdtablesize(void); }
	SYS_DUP2		= 90;	// { int dup2(u_int from, u_int to); }
	// SYS_NOSYS = 91;  // { int nosys(void); }   { old getdopt }
	SYS_FCNTL	= 92;	// { int fcntl(int fd, int cmd, long arg); }
	SYS_SELECT	= 93;	// { int select(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv); }
	// SYS_NOSYS = 94;  // { int nosys(void); }   { old setdopt }
	SYS_FSYNC	= 95;	// { int fsync(int fd); }
	SYS_SETPRIORITY	= 96;	// { int setpriority(int which, id_t who, int prio); }
	SYS_SOCKET	= 97;	// { int socket(int domain, int type, int protocol); }
	SYS_CONNECT	= 98;	// { int connect(int s, caddr_t name, socklen_t namelen); }
	// SYS_NOSYS = 97;  // { int nosys(void); }
	// SYS_NOSYS = 98;  // { int nosys(void); }
	// SYS_NOSYS = 99;  // { int nosys(void); }   { old accept }
	SYS_GETPRIORITY	= 100;	// { int getpriority(int which, id_t who); }
	// SYS_NOSYS = 101;  // { int nosys(void); }   { old send }
	// SYS_NOSYS = 102;  // { int nosys(void); }   { old recv }
	// SYS_NOSYS = 103;  // { int nosys(void); }   { old sigreturn }
	SYS_BIND	= 104;	// { int bind(int s, caddr_t name, socklen_t namelen); }
	SYS_SETSOCKOPT	= 105;	// { int setsockopt(int s, int level, int name, caddr_t val, socklen_t valsize); }
	SYS_LISTEN	= 106;	// { int listen(int s, int backlog); }
	// SYS_NOSYS = 104;  // { int nosys(void); }
	// SYS_NOSYS = 105;  // { int nosys(void); }
	// SYS_NOSYS = 106;  // { int nosys(void); }
	// SYS_NOSYS = 107;  // { int nosys(void); }   { old vtimes }
	// SYS_NOSYS = 108;  // { int nosys(void); }   { old sigvec }
	// SYS_NOSYS = 109;  // { int nosys(void); }   { old sigblock }
	// SYS_NOSYS = 110;  // { int nosys(void); }   { old sigsetmask }
	SYS_SIGSUSPEND	= 111;	// { int sigsuspend(sigset_t mask); }
	// SYS_NOSYS = 112;  // { int nosys(void); }   { old sigstack }
	// SYS_NOSYS = 113;  // { int nosys(void); }   { old recvmsg }
	// SYS_NOSYS = 114;  // { int nosys(void); }   { old sendmsg }
	// SYS_NOSYS = 113;  // { int nosys(void); }
	// SYS_NOSYS = 114;  // { int nosys(void); }
	// SYS_NOSYS = 115;  // { int nosys(void); }   { old vtrace }
	SYS_GETTIMEOFDAY	= 116;	// { int gettimeofday(struct timeval *tp, struct timezone *tzp); }
	SYS_GETRUSAGE		= 117;	// { int getrusage(int who, struct rusage *rusage); }
	SYS_GETSOCKOPT		= 118;	// { int getsockopt(int s, int level, int name, caddr_t val, socklen_t *avalsize); }
	// SYS_NOSYS = 118;  // { int nosys(void); }
	// SYS_NOSYS = 119;  // { int nosys(void); }   { old resuba }
	SYS_READV		= 120;	// { user_ssize_t readv(int fd, struct iovec *iovp, u_int iovcnt); }
	SYS_WRITEV		= 121;	// { user_ssize_t writev(int fd, struct iovec *iovp, u_int iovcnt); }
	SYS_SETTIMEOFDAY	= 122;	// { int settimeofday(struct timeval *tv, struct timezone *tzp); }
	SYS_FCHOWN		= 123;	// { int fchown(int fd, int uid, int gid); }
	SYS_FCHMOD		= 124;	// { int fchmod(int fd, int mode); }
	// SYS_NOSYS = 125;  // { int nosys(void); }   { old recvfrom }
	SYS_SETREUID	= 126;	// { int setreuid(uid_t ruid, uid_t euid); }
	SYS_SETREGID	= 127;	// { int setregid(gid_t rgid, gid_t egid); }
	SYS_RENAME	= 128;	// { int rename(char *from, char *to); }
	// SYS_NOSYS = 129;  // { int nosys(void); }   { old truncate }
	// SYS_NOSYS = 130;  // { int nosys(void); }   { old ftruncate }
	SYS_FLOCK	= 131;	// { int flock(int fd, int how); }
	SYS_MKFIFO	= 132;	// { int mkfifo(user_addr_t path, int mode); }
	SYS_SENDTO	= 133;	// { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, socklen_t tolen); }
	SYS_SHUTDOWN	= 134;	// { int shutdown(int s, int how); }
	SYS_SOCKETPAIR	= 135;	// { int socketpair(int domain, int type, int protocol, int *rsv); }
	// SYS_NOSYS = 133;  // { int nosys(void); }
	// SYS_NOSYS = 134;  // { int nosys(void); }
	// SYS_NOSYS = 135;  // { int nosys(void); }
	SYS_MKDIR	= 136;	// { int mkdir(user_addr_t path, int mode); }
	SYS_RMDIR	= 137;	// { int rmdir(char *path); }
	SYS_UTIMES	= 138;	// { int utimes(char *path, struct timeval *tptr); }
	SYS_FUTIMES	= 139;	// { int futimes(int fd, struct timeval *tptr); }
	SYS_ADJTIME	= 140;	// { int adjtime(struct timeval *delta, struct timeval *olddelta); }
	// SYS_NOSYS = 141;  // { int nosys(void); }   { old getpeername }
	SYS_GETHOSTUUID	= 142;	// { int gethostuuid(unsigned char *uuid_buf, const struct timespec *timeoutp); }
	// SYS_NOSYS = 143;  // { int nosys(void); }   { old sethostid 	}
	// SYS_NOSYS = 144;  // { int nosys(void); }   { old getrlimit }
	// SYS_NOSYS = 145;  // { int nosys(void); }   { old setrlimit }
	// SYS_NOSYS = 146;  // { int nosys(void); }   { old killpg }
	SYS_SETSID	= 147;	// { int setsid(void); }
	// SYS_NOSYS = 148;  // { int nosys(void); }   { old setquota }
	// SYS_NOSYS = 149;  // { int nosys(void); }   { old qquota }
	// SYS_NOSYS = 150;  // { int nosys(void); }   { old getsockname }
	SYS_GETPGID	= 151;	// { int getpgid(pid_t pid); }
	SYS_SETPRIVEXEC	= 152;	// { int setprivexec(int flag); }
	SYS_PREAD	= 153;	// { user_ssize_t pread(int fd, user_addr_t buf, user_size_t nbyte, off_t offset); }
	SYS_PWRITE	= 154;	// { user_ssize_t pwrite(int fd, user_addr_t buf, user_size_t nbyte, off_t offset); }
	SYS_NFSSVC	= 155;	// { int nfssvc(int flag, caddr_t argp); }
	// SYS_NOSYS = 155;  // { int nosys(void); }
	// SYS_NOSYS = 156;  // { int nosys(void); }   { old getdirentries }
	SYS_STATFS	= 157;	// { int statfs(char *path, struct statfs *buf); }
	SYS_FSTATFS	= 158;	// { int fstatfs(int fd, struct statfs *buf); }
	SYS_UNMOUNT	= 159;	// { int unmount(user_addr_t path, int flags); }
	// SYS_NOSYS = 160;  // { int nosys(void); }   { old async_daemon }
	SYS_GETFH	= 161;	// { int getfh(char *fname, fhandle_t *fhp); }
	// SYS_NOSYS = 161;  // { int nosys(void); }
	// SYS_NOSYS = 162;  // { int nosys(void); }   { old getdomainname }
	// SYS_NOSYS = 163;  // { int nosys(void); }   { old setdomainname }
	// SYS_NOSYS = 164;  // { int nosys(void); }
	SYS_QUOTACTL	= 165;	// { int quotactl(const char *path, int cmd, int uid, caddr_t arg); }
	// SYS_NOSYS = 166;  // { int nosys(void); }   { old exportfs }
	SYS_MOUNT	= 167;	// { int mount(char *type, char *path, int flags, caddr_t data); }
	// SYS_NOSYS = 168;  // { int nosys(void); }   { old ustat }
	SYS_CSOPS	= 169;	// { int csops(pid_t pid, uint32_t ops, user_addr_t useraddr, user_size_t usersize); }
	// SYS_NOSYS = 171;  // { int nosys(void); }   { old wait3 }
	// SYS_NOSYS = 172;  // { int nosys(void); }   { old rpause	}
	SYS_WAITID	= 173;	// { int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options); }
	// SYS_NOSYS = 174;  // { int nosys(void); }   { old getdents }
	// SYS_NOSYS = 175;  // { int nosys(void); }   { old gc_control }
	SYS_ADD_PROFIL	= 176;	// { int add_profil(short *bufbase, size_t bufsize, u_long pcoffset, u_int pcscale); }
	// SYS_NOSYS = 177;  // { int nosys(void); }
	// SYS_NOSYS = 178;  // { int nosys(void); }
	// SYS_NOSYS = 179;  // { int nosys(void); }
	SYS_KDEBUG_TRACE	= 180;	// { int kdebug_trace(int code, int arg1, int arg2, int arg3, int arg4, int arg5) NO_SYSCALL_STUB; }
	SYS_SETGID		= 181;	// { int setgid(gid_t gid); }
	SYS_SETEGID		= 182;	// { int setegid(gid_t egid); }
	SYS_SETEUID		= 183;	// { int seteuid(uid_t euid); }
	SYS_SIGRETURN		= 184;	// { int sigreturn(struct ucontext *uctx, int infostyle); }
	// SYS_NOSYS = 186;  // { int nosys(void); }
	// SYS_NOSYS = 187;  // { int nosys(void); }
	SYS_STAT	= 188;	// { int stat(user_addr_t path, user_addr_t ub); }
	SYS_FSTAT	= 189;	// { int fstat(int fd, user_addr_t ub); }
	SYS_LSTAT	= 190;	// { int lstat(user_addr_t path, user_addr_t ub); }
	SYS_PATHCONF	= 191;	// { int pathconf(char *path, int name); }
	SYS_FPATHCONF	= 192;	// { int fpathconf(int fd, int name); }
	// SYS_NOSYS = 193;  // { int nosys(void); }
	SYS_GETRLIMIT		= 194;	// { int getrlimit(u_int which, struct rlimit *rlp); }
	SYS_SETRLIMIT		= 195;	// { int setrlimit(u_int which, struct rlimit *rlp); }
	SYS_GETDIRENTRIES	= 196;	// { int getdirentries(int fd, char *buf, u_int count, long *basep); }
	SYS_MMAP		= 197;	// { user_addr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }
	// SYS_NOSYS = 198;  // { int nosys(void); } 	{ __syscall }
	SYS_LSEEK	= 199;	// { off_t lseek(int fd, off_t offset, int whence); }
	SYS_TRUNCATE	= 200;	// { int truncate(char *path, off_t length); }
	SYS_FTRUNCATE	= 201;	// { int ftruncate(int fd, off_t length); }
	SYS___SYSCTL	= 202;	// { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }
	SYS_MLOCK	= 203;	// { int mlock(caddr_t addr, size_t len); }
	SYS_MUNLOCK	= 204;	// { int munlock(caddr_t addr, size_t len); }
	SYS_UNDELETE	= 205;	// { int undelete(user_addr_t path); }
	SYS_ATSOCKET	= 206;	// { int ATsocket(int proto); }
	// SYS_NOSYS = 213;  // { int nosys(void); } 	{ Reserved for AppleTalk }
	// SYS_NOSYS = 206;  // { int nosys(void); }
	// SYS_NOSYS = 207;  // { int nosys(void); }
	// SYS_NOSYS = 208;  // { int nosys(void); }
	// SYS_NOSYS = 209;  // { int nosys(void); }
	// SYS_NOSYS = 210;  // { int nosys(void); }
	// SYS_NOSYS = 211;  // { int nosys(void); }
	// SYS_NOSYS = 212;  // { int nosys(void); }
	// SYS_NOSYS = 213;  // { int nosys(void); } 	{ Reserved for AppleTalk }
	SYS_KQUEUE_FROM_PORTSET_NP	= 214;	// { int kqueue_from_portset_np(int portset); }
	SYS_KQUEUE_PORTSET_NP		= 215;	// { int kqueue_portset_np(int fd); }
	SYS_GETATTRLIST			= 220;	// { int getattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options); }
	SYS_SETATTRLIST			= 221;	// { int setattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options); }
	SYS_GETDIRENTRIESATTR		= 222;	// { int getdirentriesattr(int fd, struct attrlist *alist, void *buffer, size_t buffersize, u_long *count, u_long *basep, u_long *newstate, u_long options); }
	SYS_EXCHANGEDATA		= 223;	// { int exchangedata(const char *path1, const char *path2, u_long options); }
	// SYS_NOSYS = 224;  // { int nosys(void); } { was checkuseraccess }
	SYS_SEARCHFS	= 225;	// { int searchfs(const char *path, struct fssearchblock *searchblock, u_long *nummatches, u_long scriptcode, u_long options, struct searchstate *state); }
	SYS_DELETE	= 226;	// { int delete(user_addr_t path) NO_SYSCALL_STUB; }       { private delete (Carbon semantics) }
	SYS_COPYFILE	= 227;	// { int copyfile(char *from, char *to, int mode, int flags) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 228;  // { int nosys(void); }
	// SYS_NOSYS = 229;  // { int nosys(void); }
	SYS_POLL		= 230;	// { int poll(struct pollfd *fds, u_int nfds, int timeout); }
	SYS_WATCHEVENT		= 231;	// { int watchevent(struct eventreq *u_req, int u_eventmask); }
	SYS_WAITEVENT		= 232;	// { int waitevent(struct eventreq *u_req, struct timeval *tv); }
	SYS_MODWATCH		= 233;	// { int modwatch(struct eventreq *u_req, int u_eventmask); }
	SYS_GETXATTR		= 234;	// { user_ssize_t getxattr(user_addr_t path, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
	SYS_FGETXATTR		= 235;	// { user_ssize_t fgetxattr(int fd, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
	SYS_SETXATTR		= 236;	// { int setxattr(user_addr_t path, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
	SYS_FSETXATTR		= 237;	// { int fsetxattr(int fd, user_addr_t attrname, user_addr_t value, size_t size, uint32_t position, int options); }
	SYS_REMOVEXATTR		= 238;	// { int removexattr(user_addr_t path, user_addr_t attrname, int options); }
	SYS_FREMOVEXATTR	= 239;	// { int fremovexattr(int fd, user_addr_t attrname, int options); }
	SYS_LISTXATTR		= 240;	// { user_ssize_t listxattr(user_addr_t path, user_addr_t namebuf, size_t bufsize, int options); }
	SYS_FLISTXATTR		= 241;	// { user_ssize_t flistxattr(int fd, user_addr_t namebuf, size_t bufsize, int options); }
	SYS_FSCTL		= 242;	// { int fsctl(const char *path, u_long cmd, caddr_t data, u_long options); }
	SYS_INITGROUPS		= 243;	// { int initgroups(u_int gidsetsize, gid_t *gidset, int gmuid); }
	SYS_POSIX_SPAWN		= 244;	// { int posix_spawn(pid_t *pid, const char *path, const struct _posix_spawn_args_desc *adesc, char **argv, char **envp); }
	// SYS_NOSYS = 245;  // { int nosys(void); }
	// SYS_NOSYS = 246;  // { int nosys(void); }
	SYS_NFSCLNT	= 247;	// { int nfsclnt(int flag, caddr_t argp); }
	// SYS_NOSYS = 247;  // { int nosys(void); }
	SYS_FHOPEN	= 248;	// { int fhopen(const struct fhandle *u_fhp, int flags); }
	// SYS_NOSYS = 248;  // { int nosys(void); }
	// SYS_NOSYS = 249;  // { int nosys(void); }
	SYS_MINHERIT	= 250;	// { int minherit(void *addr, size_t len, int inherit); }
	SYS_SEMSYS	= 251;	// { int semsys(u_int which, int a2, int a3, int a4, int a5); }
	// SYS_NOSYS = 251;  // { int nosys(void); }
	SYS_MSGSYS	= 252;	// { int msgsys(u_int which, int a2, int a3, int a4, int a5); }
	// SYS_NOSYS = 252;  // { int nosys(void); }
	SYS_SHMSYS	= 253;	// { int shmsys(u_int which, int a2, int a3, int a4); }
	// SYS_NOSYS = 253;  // { int nosys(void); }
	SYS_SEMCTL	= 254;	// { int semctl(int semid, int semnum, int cmd, semun_t arg); }
	SYS_SEMGET	= 255;	// { int semget(key_t key, int	nsems, int semflg); }
	SYS_SEMOP	= 256;	// { int semop(int semid, struct sembuf *sops, int nsops); }
	// SYS_NOSYS = 257;  // { int nosys(void); }
	// SYS_NOSYS = 254;  // { int nosys(void); }
	// SYS_NOSYS = 255;  // { int nosys(void); }
	// SYS_NOSYS = 256;  // { int nosys(void); }
	// SYS_NOSYS = 257;  // { int nosys(void); }
	SYS_MSGCTL	= 258;	// { int msgctl(int msqid, int cmd, struct	msqid_ds *buf); }
	SYS_MSGGET	= 259;	// { int msgget(key_t key, int msgflg); }
	SYS_MSGSND	= 260;	// { int msgsnd(int msqid, void *msgp, size_t msgsz, int msgflg); }
	SYS_MSGRCV	= 261;	// { user_ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }
	// SYS_NOSYS = 258;  // { int nosys(void); }
	// SYS_NOSYS = 259;  // { int nosys(void); }
	// SYS_NOSYS = 260;  // { int nosys(void); }
	// SYS_NOSYS = 261;  // { int nosys(void); }
	SYS_SHMAT	= 262;	// { user_addr_t shmat(int shmid, void *shmaddr, int shmflg); }
	SYS_SHMCTL	= 263;	// { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }
	SYS_SHMDT	= 264;	// { int shmdt(void *shmaddr); }
	SYS_SHMGET	= 265;	// { int shmget(key_t key, size_t size, int shmflg); }
	// SYS_NOSYS = 262;  // { int nosys(void); }
	// SYS_NOSYS = 263;  // { int nosys(void); }
	// SYS_NOSYS = 264;  // { int nosys(void); }
	// SYS_NOSYS = 265;  // { int nosys(void); }
	SYS_SHM_OPEN			= 266;	// { int shm_open(const char *name, int oflag, int mode); }
	SYS_SHM_UNLINK			= 267;	// { int shm_unlink(const char *name); }
	SYS_SEM_OPEN			= 268;	// { user_addr_t sem_open(const char *name, int oflag, int mode, int value); }
	SYS_SEM_CLOSE			= 269;	// { int sem_close(sem_t *sem); }
	SYS_SEM_UNLINK			= 270;	// { int sem_unlink(const char *name); }
	SYS_SEM_WAIT			= 271;	// { int sem_wait(sem_t *sem); }
	SYS_SEM_TRYWAIT			= 272;	// { int sem_trywait(sem_t *sem); }
	SYS_SEM_POST			= 273;	// { int sem_post(sem_t *sem); }
	SYS_SEM_GETVALUE		= 274;	// { int sem_getvalue(sem_t *sem, int *sval); }
	SYS_SEM_INIT			= 275;	// { int sem_init(sem_t *sem, int phsared, u_int value); }
	SYS_SEM_DESTROY			= 276;	// { int sem_destroy(sem_t *sem); }
	SYS_OPEN_EXTENDED		= 277;	// { int open_extended(user_addr_t path, int flags, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
	SYS_UMASK_EXTENDED		= 278;	// { int umask_extended(int newmask, user_addr_t xsecurity) NO_SYSCALL_STUB; }
	SYS_STAT_EXTENDED		= 279;	// { int stat_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
	SYS_LSTAT_EXTENDED		= 280;	// { int lstat_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
	SYS_FSTAT_EXTENDED		= 281;	// { int fstat_extended(int fd, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
	SYS_CHMOD_EXTENDED		= 282;	// { int chmod_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
	SYS_FCHMOD_EXTENDED		= 283;	// { int fchmod_extended(int fd, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
	SYS_ACCESS_EXTENDED		= 284;	// { int access_extended(user_addr_t entries, size_t size, user_addr_t results, uid_t uid) NO_SYSCALL_STUB; }
	SYS_SETTID			= 285;	// { int settid(uid_t uid, gid_t gid) NO_SYSCALL_STUB; }
	SYS_GETTID			= 286;	// { int gettid(uid_t *uidp, gid_t *gidp) NO_SYSCALL_STUB; }
	SYS_SETSGROUPS			= 287;	// { int setsgroups(int setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
	SYS_GETSGROUPS			= 288;	// { int getsgroups(user_addr_t setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
	SYS_SETWGROUPS			= 289;	// { int setwgroups(int setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
	SYS_GETWGROUPS			= 290;	// { int getwgroups(user_addr_t setlen, user_addr_t guidset) NO_SYSCALL_STUB; }
	SYS_MKFIFO_EXTENDED		= 291;	// { int mkfifo_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
	SYS_MKDIR_EXTENDED		= 292;	// { int mkdir_extended(user_addr_t path, uid_t uid, gid_t gid, int mode, user_addr_t xsecurity) NO_SYSCALL_STUB; }
	SYS_IDENTITYSVC			= 293;	// { int identitysvc(int opcode, user_addr_t message) NO_SYSCALL_STUB; }
	SYS_SHARED_REGION_CHECK_NP	= 294;	// { int shared_region_check_np(uint64_t *start_address) NO_SYSCALL_STUB; }
	SYS_SHARED_REGION_MAP_NP	= 295;	// { int shared_region_map_np(int fd, uint32_t count, const struct shared_file_mapping_np *mappings) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 296;  // { int nosys(void); } { old load_shared_file }
	// SYS_NOSYS = 297;  // { int nosys(void); } { old reset_shared_file }
	// SYS_NOSYS = 298;  // { int nosys(void); } { old new_system_shared_regions }
	// SYS_ENOSYS = 299;  // { int enosys(void); } { old shared_region_map_file_np }
	// SYS_ENOSYS = 300;  // { int enosys(void); } { old shared_region_make_private_np }
	SYS___PTHREAD_MUTEX_DESTROY	= 301;	// { int __pthread_mutex_destroy(int mutexid); }
	SYS___PTHREAD_MUTEX_INIT	= 302;	// { int __pthread_mutex_init(user_addr_t  mutex, user_addr_t attr); }
	SYS___PTHREAD_MUTEX_LOCK	= 303;	// { int __pthread_mutex_lock(int mutexid); }
	SYS___PTHREAD_MUTEX_TRYLOCK	= 304;	// { int __pthread_mutex_trylock(int mutexid); }
	SYS___PTHREAD_MUTEX_UNLOCK	= 305;	// { int __pthread_mutex_unlock(int mutexid); }
	SYS___PTHREAD_COND_INIT		= 306;	// { int __pthread_cond_init(user_addr_t cond, user_addr_t attr); }
	SYS___PTHREAD_COND_DESTROY	= 307;	// { int __pthread_cond_destroy(int condid); }
	SYS___PTHREAD_COND_BROADCAST	= 308;	// { int __pthread_cond_broadcast(int condid); }
	SYS___PTHREAD_COND_SIGNAL	= 309;	// { int __pthread_cond_signal(int condid); }
	SYS_GETSID			= 310;	// { int getsid(pid_t pid); }
	SYS_SETTID_WITH_PID		= 311;	// { int settid_with_pid(pid_t pid, int assume) NO_SYSCALL_STUB; }
	SYS___PTHREAD_COND_TIMEDWAIT	= 312;	// { int __pthread_cond_timedwait(int condid, int mutexid, user_addr_t abstime); }
	SYS_AIO_FSYNC			= 313;	// { int aio_fsync(int op, user_addr_t aiocbp); }
	SYS_AIO_RETURN			= 314;	// { user_ssize_t aio_return(user_addr_t aiocbp); }
	SYS_AIO_SUSPEND			= 315;	// { int aio_suspend(user_addr_t aiocblist, int nent, user_addr_t timeoutp); }
	SYS_AIO_CANCEL			= 316;	// { int aio_cancel(int fd, user_addr_t aiocbp); }
	SYS_AIO_ERROR			= 317;	// { int aio_error(user_addr_t aiocbp); }
	SYS_AIO_READ			= 318;	// { int aio_read(user_addr_t aiocbp); }
	SYS_AIO_WRITE			= 319;	// { int aio_write(user_addr_t aiocbp); }
	SYS_LIO_LISTIO			= 320;	// { int lio_listio(int mode, user_addr_t aiocblist, int nent, user_addr_t sigp); }
	SYS___PTHREAD_COND_WAIT		= 321;	// { int __pthread_cond_wait(int condid, int mutexid); }
	SYS_IOPOLICYSYS			= 322;	// { int iopolicysys(int cmd, void *arg) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 323;  // { int nosys(void); }
	SYS_MLOCKALL	= 324;	// { int mlockall(int how); }
	SYS_MUNLOCKALL	= 325;	// { int munlockall(int how); }
	// SYS_NOSYS = 326;  // { int nosys(void); }
	SYS_ISSETUGID			= 327;	// { int issetugid(void); }
	SYS___PTHREAD_KILL		= 328;	// { int __pthread_kill(int thread_port, int sig); }
	SYS___PTHREAD_SIGMASK		= 329;	// { int __pthread_sigmask(int how, user_addr_t set, user_addr_t oset); }
	SYS___SIGWAIT			= 330;	// { int __sigwait(user_addr_t set, user_addr_t sig); }
	SYS___DISABLE_THREADSIGNAL	= 331;	// { int __disable_threadsignal(int value); }
	SYS___PTHREAD_MARKCANCEL	= 332;	// { int __pthread_markcancel(int thread_port); }
	SYS___PTHREAD_CANCELED		= 333;	// { int __pthread_canceled(int  action); }
	SYS___SEMWAIT_SIGNAL		= 334;	// { int __semwait_signal(int cond_sem, int mutex_sem, int timeout, int relative, time_t tv_sec, int32_t tv_nsec); }
	// SYS_NOSYS = 335;  // { int nosys(void); }   { old utrace }
	SYS_PROC_INFO	= 336;	// { int proc_info(int32_t callnum,int32_t pid,uint32_t flavor, uint64_t arg,user_addr_t buffer,int32_t buffersize) NO_SYSCALL_STUB; }
	SYS_SENDFILE	= 337;	// { int sendfile(int fd, int s, off_t offset, off_t *nbytes, struct sf_hdtr *hdtr, int flags); }
	// SYS_NOSYS = 337;  // { int nosys(void); }
	SYS_STAT64		= 338;	// { int stat64(user_addr_t path, user_addr_t ub); }
	SYS_FSTAT64		= 339;	// { int fstat64(int fd, user_addr_t ub); }
	SYS_LSTAT64		= 340;	// { int lstat64(user_addr_t path, user_addr_t ub); }
	SYS_STAT64_EXTENDED	= 341;	// { int stat64_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
	SYS_LSTAT64_EXTENDED	= 342;	// { int lstat64_extended(user_addr_t path, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
	SYS_FSTAT64_EXTENDED	= 343;	// { int fstat64_extended(int fd, user_addr_t ub, user_addr_t xsecurity, user_addr_t xsecurity_size) NO_SYSCALL_STUB; }
	SYS_GETDIRENTRIES64	= 344;	// { user_ssize_t getdirentries64(int fd, void *buf, user_size_t bufsize, off_t *position) NO_SYSCALL_STUB; }
	SYS_STATFS64		= 345;	// { int statfs64(char *path, struct statfs64 *buf); }
	SYS_FSTATFS64		= 346;	// { int fstatfs64(int fd, struct statfs64 *buf); }
	SYS_GETFSSTAT64		= 347;	// { int getfsstat64(user_addr_t buf, int bufsize, int flags); }
	SYS___PTHREAD_CHDIR	= 348;	// { int __pthread_chdir(user_addr_t path); }
	SYS___PTHREAD_FCHDIR	= 349;	// { int __pthread_fchdir(int fd); }
	SYS_AUDIT		= 350;	// { int audit(void *record, int length); }
	SYS_AUDITON		= 351;	// { int auditon(int cmd, void *data, int length); }
	// SYS_NOSYS = 352;  // { int nosys(void); }
	SYS_GETAUID		= 353;	// { int getauid(au_id_t *auid); }
	SYS_SETAUID		= 354;	// { int setauid(au_id_t *auid); }
	SYS_GETAUDIT		= 355;	// { int getaudit(struct auditinfo *auditinfo); }
	SYS_SETAUDIT		= 356;	// { int setaudit(struct auditinfo *auditinfo); }
	SYS_GETAUDIT_ADDR	= 357;	// { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, int length); }
	SYS_SETAUDIT_ADDR	= 358;	// { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, int length); }
	SYS_AUDITCTL		= 359;	// { int auditctl(char *path); }
	// SYS_NOSYS = 350;  // { int nosys(void); }
	// SYS_NOSYS = 351;  // { int nosys(void); }
	// SYS_NOSYS = 352;  // { int nosys(void); }
	// SYS_NOSYS = 353;  // { int nosys(void); }
	// SYS_NOSYS = 354;  // { int nosys(void); }
	// SYS_NOSYS = 355;  // { int nosys(void); }
	// SYS_NOSYS = 356;  // { int nosys(void); }
	// SYS_NOSYS = 357;  // { int nosys(void); }
	// SYS_NOSYS = 358;  // { int nosys(void); }
	// SYS_NOSYS = 359;  // { int nosys(void); }
	SYS_BSDTHREAD_CREATE	= 360;	// { user_addr_t bsdthread_create(user_addr_t func, user_addr_t func_arg, user_addr_t stack, user_addr_t pthread, uint32_t flags) NO_SYSCALL_STUB; }
	SYS_BSDTHREAD_TERMINATE	= 361;	// { int bsdthread_terminate(user_addr_t stackaddr, size_t freesize, uint32_t port, uint32_t sem) NO_SYSCALL_STUB; }
	SYS_KQUEUE		= 362;	// { int kqueue(void); }
	SYS_KEVENT		= 363;	// { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }
	SYS_LCHOWN		= 364;	// { int lchown(user_addr_t path, uid_t owner, gid_t group); }
	SYS_STACK_SNAPSHOT	= 365;	// { int stack_snapshot(pid_t pid, user_addr_t tracebuf, uint32_t tracebuf_size, uint32_t options) NO_SYSCALL_STUB; }
	SYS_BSDTHREAD_REGISTER	= 366;	// { int bsdthread_register(user_addr_t threadstart, user_addr_t wqthread, int pthsize) NO_SYSCALL_STUB; }
	SYS_WORKQ_OPEN		= 367;	// { int workq_open(void) NO_SYSCALL_STUB; }
	SYS_WORKQ_OPS		= 368;	// { int workq_ops(int options, user_addr_t item, int prio) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 369;  // { int nosys(void); }
	// SYS_NOSYS = 370;  // { int nosys(void); }
	// SYS_NOSYS = 371;  // { int nosys(void); }
	// SYS_NOSYS = 372;  // { int nosys(void); }
	// SYS_NOSYS = 373;  // { int nosys(void); }
	// SYS_NOSYS = 374;  // { int nosys(void); }
	// SYS_NOSYS = 375;  // { int nosys(void); }
	// SYS_NOSYS = 376;  // { int nosys(void); }
	// SYS_NOSYS = 377;  // { int nosys(void); }
	// SYS_NOSYS = 378;  // { int nosys(void); }
	// SYS_NOSYS = 379;  // { int nosys(void); }
	SYS___MAC_EXECVE	= 380;	// { int __mac_execve(char *fname, char **argp, char **envp, struct mac *mac_p); }
	SYS___MAC_SYSCALL	= 381;	// { int __mac_syscall(char *policy, int call, user_addr_t arg); }
	SYS___MAC_GET_FILE	= 382;	// { int __mac_get_file(char *path_p, struct mac *mac_p); }
	SYS___MAC_SET_FILE	= 383;	// { int __mac_set_file(char *path_p, struct mac *mac_p); }
	SYS___MAC_GET_LINK	= 384;	// { int __mac_get_link(char *path_p, struct mac *mac_p); }
	SYS___MAC_SET_LINK	= 385;	// { int __mac_set_link(char *path_p, struct mac *mac_p); }
	SYS___MAC_GET_PROC	= 386;	// { int __mac_get_proc(struct mac *mac_p); }
	SYS___MAC_SET_PROC	= 387;	// { int __mac_set_proc(struct mac *mac_p); }
	SYS___MAC_GET_FD	= 388;	// { int __mac_get_fd(int fd, struct mac *mac_p); }
	SYS___MAC_SET_FD	= 389;	// { int __mac_set_fd(int fd, struct mac *mac_p); }
	SYS___MAC_GET_PID	= 390;	// { int __mac_get_pid(pid_t pid, struct mac *mac_p); }
	SYS___MAC_GET_LCID	= 391;	// { int __mac_get_lcid(pid_t lcid, struct mac *mac_p); }
	SYS___MAC_GET_LCTX	= 392;	// { int __mac_get_lctx(struct mac *mac_p); }
	SYS___MAC_SET_LCTX	= 393;	// { int __mac_set_lctx(struct mac *mac_p); }
	SYS_SETLCID		= 394;	// { int setlcid(pid_t pid, pid_t lcid) NO_SYSCALL_STUB; }
	SYS_GETLCID		= 395;	// { int getlcid(pid_t pid) NO_SYSCALL_STUB; }
	SYS_READ_NOCANCEL	= 396;	// { user_ssize_t read_nocancel(int fd, user_addr_t cbuf, user_size_t nbyte) NO_SYSCALL_STUB; }
	SYS_WRITE_NOCANCEL	= 397;	// { user_ssize_t write_nocancel(int fd, user_addr_t cbuf, user_size_t nbyte) NO_SYSCALL_STUB; }
	SYS_OPEN_NOCANCEL	= 398;	// { int open_nocancel(user_addr_t path, int flags, int mode) NO_SYSCALL_STUB; }
	SYS_CLOSE_NOCANCEL	= 399;	// { int close_nocancel(int fd) NO_SYSCALL_STUB; }
	SYS_WAIT4_NOCANCEL	= 400;	// { int wait4_nocancel(int pid, user_addr_t status, int options, user_addr_t rusage) NO_SYSCALL_STUB; }
	SYS_RECVMSG_NOCANCEL	= 401;	// { int recvmsg_nocancel(int s, struct msghdr *msg, int flags) NO_SYSCALL_STUB; }
	SYS_SENDMSG_NOCANCEL	= 402;	// { int sendmsg_nocancel(int s, caddr_t msg, int flags) NO_SYSCALL_STUB; }
	SYS_RECVFROM_NOCANCEL	= 403;	// { int recvfrom_nocancel(int s, void *buf, size_t len, int flags, struct sockaddr *from, int *fromlenaddr) NO_SYSCALL_STUB; }
	SYS_ACCEPT_NOCANCEL	= 404;	// { int accept_nocancel(int s, caddr_t name, socklen_t	*anamelen) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 401;  // { int nosys(void); }
	// SYS_NOSYS = 402;  // { int nosys(void); }
	// SYS_NOSYS = 403;  // { int nosys(void); }
	// SYS_NOSYS = 404;  // { int nosys(void); }
	SYS_MSYNC_NOCANCEL	= 405;	// { int msync_nocancel(caddr_t addr, size_t len, int flags) NO_SYSCALL_STUB; }
	SYS_FCNTL_NOCANCEL	= 406;	// { int fcntl_nocancel(int fd, int cmd, long arg) NO_SYSCALL_STUB; }
	SYS_SELECT_NOCANCEL	= 407;	// { int select_nocancel(int nd, u_int32_t *in, u_int32_t *ou, u_int32_t *ex, struct timeval *tv) NO_SYSCALL_STUB; }
	SYS_FSYNC_NOCANCEL	= 408;	// { int fsync_nocancel(int fd) NO_SYSCALL_STUB; }
	SYS_CONNECT_NOCANCEL	= 409;	// { int connect_nocancel(int s, caddr_t name, socklen_t namelen) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 409;  // { int nosys(void); }
	SYS_SIGSUSPEND_NOCANCEL	= 410;	// { int sigsuspend_nocancel(sigset_t mask) NO_SYSCALL_STUB; }
	SYS_READV_NOCANCEL	= 411;	// { user_ssize_t readv_nocancel(int fd, struct iovec *iovp, u_int iovcnt) NO_SYSCALL_STUB; }
	SYS_WRITEV_NOCANCEL	= 412;	// { user_ssize_t writev_nocancel(int fd, struct iovec *iovp, u_int iovcnt) NO_SYSCALL_STUB; }
	SYS_SENDTO_NOCANCEL	= 413;	// { int sendto_nocancel(int s, caddr_t buf, size_t len, int flags, caddr_t to, socklen_t tolen) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 413;  // { int nosys(void); }
	SYS_PREAD_NOCANCEL	= 414;	// { user_ssize_t pread_nocancel(int fd, user_addr_t buf, user_size_t nbyte, off_t offset) NO_SYSCALL_STUB; }
	SYS_PWRITE_NOCANCEL	= 415;	// { user_ssize_t pwrite_nocancel(int fd, user_addr_t buf, user_size_t nbyte, off_t offset) NO_SYSCALL_STUB; }
	SYS_WAITID_NOCANCEL	= 416;	// { int waitid_nocancel(idtype_t idtype, id_t id, siginfo_t *infop, int options) NO_SYSCALL_STUB; }
	SYS_POLL_NOCANCEL	= 417;	// { int poll_nocancel(struct pollfd *fds, u_int nfds, int timeout) NO_SYSCALL_STUB; }
	SYS_MSGSND_NOCANCEL	= 418;	// { int msgsnd_nocancel(int msqid, void *msgp, size_t msgsz, int msgflg) NO_SYSCALL_STUB; }
	SYS_MSGRCV_NOCANCEL	= 419;	// { user_ssize_t msgrcv_nocancel(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg) NO_SYSCALL_STUB; }
	// SYS_NOSYS = 418;  // { int nosys(void); }
	// SYS_NOSYS = 419;  // { int nosys(void); }
	SYS_SEM_WAIT_NOCANCEL		= 420;	// { int sem_wait_nocancel(sem_t *sem) NO_SYSCALL_STUB; }
	SYS_AIO_SUSPEND_NOCANCEL	= 421;	// { int aio_suspend_nocancel(user_addr_t aiocblist, int nent, user_addr_t timeoutp) NO_SYSCALL_STUB; }
	SYS___SIGWAIT_NOCANCEL		= 422;	// { int __sigwait_nocancel(user_addr_t set, user_addr_t sig) NO_SYSCALL_STUB; }
	SYS___SEMWAIT_SIGNAL_NOCANCEL	= 423;	// { int __semwait_signal_nocancel(int cond_sem, int mutex_sem, int timeout, int relative, time_t tv_sec, int32_t tv_nsec) NO_SYSCALL_STUB; }
	SYS___MAC_MOUNT			= 424;	// { int __mac_mount(char *type, char *path, int flags, caddr_t data, struct mac *mac_p); }
	SYS___MAC_GET_MOUNT		= 425;	// { int __mac_get_mount(char *path, struct mac *mac_p); }
	SYS___MAC_GETFSSTAT		= 426;	// { int __mac_getfsstat(user_addr_t buf, int bufsize, user_addr_t mac, int macsize, int flags); }
)
