ref: 46a5568cdeeb3d83c2c19eea218f232a9515f887
dir: /libstd/sys-osx.myr/
use "types.use"
pkg std =
type scno = int64
type fdopt = int64
type mprot = int64
type mopt = int64
type timespec = struct
secs : uint64
nsecs : uint32
;;
type statbuf = struct
dev : int32
mode : uint16
nlink : uint32
ino : uint64 /* 32/64? which do I use? */
uid : uint32
gid : uint32
rdev : int32
atimesspec : timespec
mtimesspec : timespec
ctimesspec : timespec
btimesspec : timespec
size : off
blocks : uint
blocksz : uint
flags : uint32
gen : uint32
lspare : int32
qspare0 : int64
qspare1 : int64
;;
/* open options */
const Ordonly : fdopt = 0x0
const Owronly : fdopt = 0x1
const Ordwr : fdopt = 0x2
const Ondelay : fdopt = 0x4
const Oappend : fdopt = 0x8
const Ocreat : fdopt = 0x200
const Onofollow : fdopt = 0x100
const Otrunc : fdopt = 0x400
/* mmap protection */
const Mprotnone : mprot = 0x0
const Mprotrd : mprot = 0x1
const Mprotwr : mprot = 0x2
const Mprotexec : mprot = 0x4
const Mprotrw : mprot = 0x3
/* mmap options */
const Mshared : mopt = 0x1
const Mpriv : mopt = 0x2
const Mfixed : mopt = 0x10
const Mfile : mopt = 0x0
const Manon : mopt = 0x1000
/* Only on Linux
const M32bit : mopt = 0x40
*/
/* return value for a failed mapping */
const Mapbad : byte* = -1 castto(byte*)
/* syscalls.
note, creat() implemented as open(path, Creat|Trunc|Wronly) */
const Syssyscall : scno = 0x2000000
const Sysexit : scno = 0x2000001
const Sysfork : scno = 0x2000002
const Sysread : scno = 0x2000003
const Syswrite : scno = 0x2000004
const Sysopen : scno = 0x2000005
const Sysclose : scno = 0x2000006
const Syswait4 : scno = 0x2000007
const Syslink : scno = 0x2000009
const Sysunlink : scno = 0x200000a
const Syschdir : scno = 0x200000c
const Sysfchdir : scno = 0x200000d
const Sysmknod : scno = 0x200000e
const Syschmod : scno = 0x200000f
const Syschown : scno = 0x2000010
const Sysgetfsstat : scno = 0x2000012
const Sysgetpid : scno = 0x2000014
const Syssetuid : scno = 0x2000017
const Sysgetuid : scno = 0x2000018
const Sysgeteuid : scno = 0x2000019
const Sysptrace : scno = 0x200001a
const Sysrecvmsg : scno = 0x200001b
const Syssendmsg : scno = 0x200001c
const Sysrecvfrom : scno = 0x200001d
const Sysaccept : scno = 0x200001e
const Sysgetpeername : scno = 0x200001f
const Sysgetsockname : scno = 0x2000020
const Sysaccess : scno = 0x2000021
const Syschflags : scno = 0x2000022
const Sysfchflags : scno = 0x2000023
const Syssync : scno = 0x2000024
const Syskill : scno = 0x2000025
const Sysgetppid : scno = 0x2000027
const Sysdup : scno = 0x2000029
const Syspipe : scno = 0x200002a
const Sysgetegid : scno = 0x200002b
const Sysprofil : scno = 0x200002c
const Syssigaction : scno = 0x200002e
const Sysgetgid : scno = 0x200002f
const Syssigprocmask : scno = 0x2000030
const Sysgetlogin : scno = 0x2000031
const Syssetlogin : scno = 0x2000032
const Sysacct : scno = 0x2000033
const Syssigpending : scno = 0x2000034
const Syssigaltstack : scno = 0x2000035
const Sysioctl : scno = 0x2000036
const Sysreboot : scno = 0x2000037
const Sysrevoke : scno = 0x2000038
const Syssymlink : scno = 0x2000039
const Sysreadlink : scno = 0x200003a
const Sysexecve : scno = 0x200003b
const Sysumask : scno = 0x200003c
const Syschroot : scno = 0x200003d
const Sysmsync : scno = 0x2000041
const Sysvfork : scno = 0x2000042
const Sysmunmap : scno = 0x2000049
const Sysmprotect : scno = 0x200004a
const Sysmadvise : scno = 0x200004b
const Sysmincore : scno = 0x200004e
const Sysgetgroups : scno = 0x200004f
const Syssetgroups : scno = 0x2000050
const Sysgetpgrp : scno = 0x2000051
const Syssetpgid : scno = 0x2000052
const Syssetitimer : scno = 0x2000053
const Sysswapon : scno = 0x2000055
const Sysgetitimer : scno = 0x2000056
const Sysgetdtablesize : scno = 0x2000059
const Sysdup2 : scno = 0x200005a
const Sysfcntl : scno = 0x200005c
const Sysselect : scno = 0x200005d
const Sysfsync : scno = 0x200005f
const Syssetpriority : scno = 0x2000060
const Syssocket : scno = 0x2000061
const Sysconnect : scno = 0x2000062
const Sysgetpriority : scno = 0x2000064
const Sysbind : scno = 0x2000068
const Syssetsockopt : scno = 0x2000069
const Syslisten : scno = 0x200006a
const Syssigsuspend : scno = 0x200006f
const Sysgettimeofday : scno = 0x2000074
const Sysgetrusage : scno = 0x2000075
const Sysgetsockopt : scno = 0x2000076
const Sysreadv : scno = 0x2000078
const Syswritev : scno = 0x2000079
const Syssettimeofday : scno = 0x200007a
const Sysfchown : scno = 0x200007b
const Sysfchmod : scno = 0x200007c
const Syssetreuid : scno = 0x200007e
const Syssetregid : scno = 0x200007f
const Sysrename : scno = 0x2000080
const Sysflock : scno = 0x2000083
const Sysmkfifo : scno = 0x2000084
const Syssendto : scno = 0x2000085
const Sysshutdown : scno = 0x2000086
const Syssocketpair : scno = 0x2000087
const Sysmkdir : scno = 0x2000088
const Sysrmdir : scno = 0x2000089
const Sysutimes : scno = 0x200008a
const Sysfutimes : scno = 0x200008b
const Sysadjtime : scno = 0x200008c
const Sysgethostuuid : scno = 0x200008e
const Syssetsid : scno = 0x2000093
const Sysgetpgid : scno = 0x2000097
const Syssetprivexec : scno = 0x2000098
const Syspread : scno = 0x2000099
const Syspwrite : scno = 0x200009a
const Sysnfssvc : scno = 0x200009b
const Sysstatfs : scno = 0x200009d
const Sysfstatfs : scno = 0x200009e
const Sysunmount : scno = 0x200009f
const Sysgetfh : scno = 0x20000a1
const Sysquotactl : scno = 0x20000a5
const Sysmount : scno = 0x20000a7
const Syscsops : scno = 0x20000a9
const Syswaitid : scno = 0x20000ad
const Sysadd_profil : scno = 0x20000b0
const Syskdebug_trace : scno = 0x20000b4
const Syssetgid : scno = 0x20000b5
const Syssetegid : scno = 0x20000b6
const Sysseteuid : scno = 0x20000b7
const Syssigreturn : scno = 0x20000b8
const Syschud : scno = 0x20000b9
const Sysfdatasync : scno = 0x20000bb
const Sysstat : scno = 0x20000bc
const Sysfstat : scno = 0x20000bd
const Syslstat : scno = 0x20000be
const Syspathconf : scno = 0x20000bf
const Sysfpathconf : scno = 0x20000c0
const Sysgetrlimit : scno = 0x20000c2
const Syssetrlimit : scno = 0x20000c3
const Sysgetdirentries : scno = 0x20000c4
const Sysmmap : scno = 0x20000c5
const Syslseek : scno = 0x20000c7
const Systruncate : scno = 0x20000c8
const Sysftruncate : scno = 0x20000c9
const Sys__sysctl : scno = 0x20000ca
const Sysmlock : scno = 0x20000cb
const Sysmunlock : scno = 0x20000cc
const Sysundelete : scno = 0x20000cd
const SysATsocket : scno = 0x20000ce
const SysATgetmsg : scno = 0x20000cf
const SysATputmsg : scno = 0x20000d0
const SysATPsndreq : scno = 0x20000d1
const SysATPsndrsp : scno = 0x20000d2
const SysATPgetreq : scno = 0x20000d3
const SysATPgetrsp : scno = 0x20000d4
const Sysmkcomplex : scno = 0x20000d8
const Sysstatv : scno = 0x20000d9
const Syslstatv : scno = 0x20000da
const Sysfstatv : scno = 0x20000db
const Sysgetattrlist : scno = 0x20000dc
const Syssetattrlist : scno = 0x20000dd
const Sysgetdirentriesattr : scno = 0x20000de
const Sysexchangedata : scno = 0x20000df
const Syssearchfs : scno = 0x20000e1
const Sysdelete : scno = 0x20000e2
const Syscopyfile : scno = 0x20000e3
const Sysfgetattrlist : scno = 0x20000e4
const Sysfsetattrlist : scno = 0x20000e5
const Syspoll : scno = 0x20000e6
const Syswatchevent : scno = 0x20000e7
const Syswaitevent : scno = 0x20000e8
const Sysmodwatch : scno = 0x20000e9
const Sysgetxattr : scno = 0x20000ea
const Sysfgetxattr : scno = 0x20000eb
const Syssetxattr : scno = 0x20000ec
const Sysfsetxattr : scno = 0x20000ed
const Sysremovexattr : scno = 0x20000ee
const Sysfremovexattr : scno = 0x20000ef
const Syslistxattr : scno = 0x20000f0
const Sysflistxattr : scno = 0x20000f1
const Sysfsctl : scno = 0x20000f2
const Sysinitgroups : scno = 0x20000f3
const Sysposix_spawn : scno = 0x20000f4
const Sysffsctl : scno = 0x20000f5
const Sysnfsclnt : scno = 0x20000f7
const Sysfhopen : scno = 0x20000f8
const Sysminherit : scno = 0x20000fa
const Syssemsys : scno = 0x20000fb
const Sysmsgsys : scno = 0x20000fc
const Sysshmsys : scno = 0x20000fd
const Syssemctl : scno = 0x20000fe
const Syssemget : scno = 0x20000ff
const Syssemop : scno = 0x2000100
const Sysmsgctl : scno = 0x2000102
const Sysmsgget : scno = 0x2000103
const Sysmsgsnd : scno = 0x2000104
const Sysmsgrcv : scno = 0x2000105
const Sysshmat : scno = 0x2000106
const Sysshmctl : scno = 0x2000107
const Sysshmdt : scno = 0x2000108
const Sysshmget : scno = 0x2000109
const Sysshm_open : scno = 0x200010a
const Sysshm_unlink : scno = 0x200010b
const Syssem_open : scno = 0x200010c
const Syssem_close : scno = 0x200010d
const Syssem_unlink : scno = 0x200010e
const Syssem_wait : scno = 0x200010f
const Syssem_trywait : scno = 0x2000110
const Syssem_post : scno = 0x2000111
const Syssem_getvalue : scno = 0x2000112
const Syssem_init : scno = 0x2000113
const Syssem_destroy : scno = 0x2000114
const Sysopen_extended : scno = 0x2000115
const Sysumask_extended : scno = 0x2000116
const Sysstat_extended : scno = 0x2000117
const Syslstat_extended : scno = 0x2000118
const Sysfstat_extended : scno = 0x2000119
const Syschmod_extended : scno = 0x200011a
const Sysfchmod_extended : scno = 0x200011b
const Sysaccess_extended : scno = 0x200011c
const Syssettid : scno = 0x200011d
const Sysgettid : scno = 0x200011e
const Syssetsgroups : scno = 0x200011f
const Sysgetsgroups : scno = 0x2000120
const Syssetwgroups : scno = 0x2000121
const Sysgetwgroups : scno = 0x2000122
const Sysmkfifo_extended : scno = 0x2000123
const Sysmkdir_extended : scno = 0x2000124
const Sysidentitysvc : scno = 0x2000125
const Sysshared_region_check_np : scno = 0x2000126
const Sysshared_region_map_np : scno = 0x2000127
const Sysvm_pressure_monitor : scno = 0x2000128
const Syspsynch_rw_longrdlock : scno = 0x2000129
const Syspsynch_rw_yieldwrlock : scno = 0x200012a
const Syspsynch_rw_downgrade : scno = 0x200012b
const Syspsynch_rw_upgrade : scno = 0x200012c
const Syspsynch_mutexwait : scno = 0x200012d
const Syspsynch_mutexdrop : scno = 0x200012e
const Syspsynch_cvbroad : scno = 0x200012f
const Syspsynch_cvsignal : scno = 0x2000130
const Syspsynch_cvwait : scno = 0x2000131
const Syspsynch_rw_rdlock : scno = 0x2000132
const Syspsynch_rw_wrlock : scno = 0x2000133
const Syspsynch_rw_unlock : scno = 0x2000134
const Syspsynch_rw_unlock2 : scno = 0x2000135
const Sysgetsid : scno = 0x2000136
const Syssettid_with_pid : scno = 0x2000137
const Sysaio_fsync : scno = 0x2000139
const Sysaio_return : scno = 0x200013a
const Sysaio_suspend : scno = 0x200013b
const Sysaio_cancel : scno = 0x200013c
const Sysaio_error : scno = 0x200013d
const Sysaio_read : scno = 0x200013e
const Sysaio_write : scno = 0x200013f
const Syslio_listio : scno = 0x2000140
const Sysiopolicysys : scno = 0x2000142
const Sysmlockall : scno = 0x2000144
const Sysmunlockall : scno = 0x2000145
const Sysissetugid : scno = 0x2000147
const Sys__pthread_kill : scno = 0x2000148
const Sys__pthread_sigmask : scno = 0x2000149
const Sys__sigwait : scno = 0x200014a
const Sys__disable_threadsignal : scno = 0x200014b
const Sys__pthread_markcancel : scno = 0x200014c
const Sys__pthread_canceled : scno = 0x200014d
const Sys__semwait_signal : scno = 0x200014e
const Sysproc_info : scno = 0x2000150
const Syssendfile : scno = 0x2000151
const Sysstat64 : scno = 0x2000152
const Sysfstat64 : scno = 0x2000153
const Syslstat64 : scno = 0x2000154
const Sysstat64_extended : scno = 0x2000155
const Syslstat64_extended : scno = 0x2000156
const Sysfstat64_extended : scno = 0x2000157
const Sysgetdirentries64 : scno = 0x2000158
const Sysstatfs64 : scno = 0x2000159
const Sysfstatfs64 : scno = 0x200015a
const Sysgetfsstat64 : scno = 0x200015b
const Sys__pthread_chdir : scno = 0x200015c
const Sys__pthread_fchdir : scno = 0x200015d
const Sysaudit : scno = 0x200015e
const Sysauditon : scno = 0x200015f
const Sysgetauid : scno = 0x2000161
const Syssetauid : scno = 0x2000162
const Sysgetaudit : scno = 0x2000163
const Syssetaudit : scno = 0x2000164
const Sysgetaudit_addr : scno = 0x2000165
const Syssetaudit_addr : scno = 0x2000166
const Sysauditctl : scno = 0x2000167
const Sysbsdthread_create : scno = 0x2000168
const Sysbsdthread_terminate : scno = 0x2000169
const Syskqueue : scno = 0x200016a
const Syskevent : scno = 0x200016b
const Syslchown : scno = 0x200016c
const Sysstack_snapshot : scno = 0x200016d
const Sysbsdthread_register : scno = 0x200016e
const Sysworkq_open : scno = 0x200016f
const Sysworkq_kernreturn : scno = 0x2000170
const Syskevent64 : scno = 0x2000171
const Sys__old_semwait_signal : scno = 0x2000172
const Sys__old_semwait_signal_nocancel : scno = 0x2000173
const Systhread_selfid : scno = 0x2000174
const Sys__mac_execve : scno = 0x200017c
const Sys__mac_syscall : scno = 0x200017d
const Sys__mac_get_file : scno = 0x200017e
const Sys__mac_set_file : scno = 0x200017f
const Sys__mac_get_link : scno = 0x2000180
const Sys__mac_set_link : scno = 0x2000181
const Sys__mac_get_proc : scno = 0x2000182
const Sys__mac_set_proc : scno = 0x2000183
const Sys__mac_get_fd : scno = 0x2000184
const Sys__mac_set_fd : scno = 0x2000185
const Sys__mac_get_pid : scno = 0x2000186
const Sys__mac_get_lcid : scno = 0x2000187
const Sys__mac_get_lctx : scno = 0x2000188
const Sys__mac_set_lctx : scno = 0x2000189
const Syssetlcid : scno = 0x200018a
const Sysgetlcid : scno = 0x200018b
const Sysread_nocancel : scno = 0x200018c
const Syswrite_nocancel : scno = 0x200018d
const Sysopen_nocancel : scno = 0x200018e
const Sysclose_nocancel : scno = 0x200018f
const Syswait4_nocancel : scno = 0x2000190
const Sysrecvmsg_nocancel : scno = 0x2000191
const Syssendmsg_nocancel : scno = 0x2000192
const Sysrecvfrom_nocancel : scno = 0x2000193
const Sysaccept_nocancel : scno = 0x2000194
const Sysmsync_nocancel : scno = 0x2000195
const Sysfcntl_nocancel : scno = 0x2000196
const Sysselect_nocancel : scno = 0x2000197
const Sysfsync_nocancel : scno = 0x2000198
const Sysconnect_nocancel : scno = 0x2000199
const Syssigsuspend_nocancel : scno = 0x200019a
const Sysreadv_nocancel : scno = 0x200019b
const Syswritev_nocancel : scno = 0x200019c
const Syssendto_nocancel : scno = 0x200019d
const Syspread_nocancel : scno = 0x200019e
const Syspwrite_nocancel : scno = 0x200019f
const Syswaitid_nocancel : scno = 0x20001a0
const Syspoll_nocancel : scno = 0x20001a1
const Sysmsgsnd_nocancel : scno = 0x20001a2
const Sysmsgrcv_nocancel : scno = 0x20001a3
const Syssem_wait_nocancel : scno = 0x20001a4
const Sysaio_suspend_nocancel : scno = 0x20001a5
const Sys__sigwait_nocancel : scno = 0x20001a6
const Sys__semwait_signal_nocancel : scno = 0x20001a7
const Sys__mac_mount : scno = 0x20001a8
const Sys__mac_get_mount : scno = 0x20001a9
const Sys__mac_getfsstat : scno = 0x20001aa
const Sysfsgetpath : scno = 0x20001ab
const Sysaudit_session_self : scno = 0x20001ac
const Sysaudit_session_join : scno = 0x20001ad
const Syspid_suspend : scno = 0x20001ae
const Syspid_resume : scno = 0x20001af
const Sysfileport_makeport : scno = 0x20001b0
const Sysfileport_makefd : scno = 0x20001b1
extern const syscall : (sc:scno, args:... -> int64)
extern const cstring : (str : byte[:] -> byte*)
const exit : (status:int64 -> void)
const getpid : ( -> int64)
const kill : (pid:int64, sig:int64 -> int64)
const open : (path:byte[:], opts:fdopt, mode:int64 -> int64)
const close : (fd:int64 -> int64)
const creat : (path:byte[:], mode:int64 -> int64)
const read : (fd:int64, buf:byte[:] -> size)
const write : (fd:int64, buf:byte[:] -> size)
const lseek : (fd:int64, off:uint64, whence:int64 -> int64)
const fstat : (fd:int64, sb:statbuf* -> int64)
const munmap : (addr:byte*, len:size -> int64)
const mmap : (addr:byte*, len:size, prot:mprot, flags:mopt, fd:int64, off:off -> byte*)
;;
const exit = {status; syscall(Sysexit, 1)}
const getpid = {; -> syscall(Sysgetpid, 1)}
const kill = {pid, sig; -> syscall(Syskill, pid, sig)}
const open = {path, opts, mode; -> syscall(Sysopen, cstring(path), opts, mode)}
const close = {fd; -> syscall(Sysclose, fd)}
const creat = {path, mode; -> open(path, Ocreat | Otrunc | Owronly, mode)}
const read = {fd, buf; -> syscall(Sysread, fd, buf castto(char*), buf.len castto(size)) castto(size)}
const write = {fd, buf; -> syscall(Syswrite, fd, buf castto(char*), buf.len castto(size)) castto(size)}
const lseek = {fd, off, whence; -> syscall(Syslseek, fd, off, whence)}
const fstat = {fd, sb; -> syscall(Sysfstat, fd, sb)}
const munmap = {addr, len; -> syscall(Sysmunmap, addr, len)}
const mmap = {addr, len, prot, flags, fd, off; -> syscall(Sysmmap, addr, len, prot, flags, fd, off) castto(byte*)}