12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099 |
- package unix
- import "base:intrinsics"
- // Linux has inconsistent system call numbering across architectures,
- // for largely historical reasons. This attempts to provide a unified
- // Odin-side interface for system calls that are required for the core
- // library to work.
- // For authorative system call numbers, the following files in the kernel
- // source can be used:
- //
- // amd64: arch/x86/entry/syscalls/syscall_64.tbl
- // arm64: include/uapi/asm-generic/unistd.h
- // 386: arch/x86/entry/syscalls/sycall_32.tbl
- // arm: arch/arm/tools/syscall.tbl
- when ODIN_ARCH == .amd64 {
- SYS_read : uintptr : 0
- SYS_write : uintptr : 1
- SYS_open : uintptr : 2
- SYS_close : uintptr : 3
- SYS_stat : uintptr : 4
- SYS_fstat : uintptr : 5
- SYS_lstat : uintptr : 6
- SYS_poll : uintptr : 7
- SYS_lseek : uintptr : 8
- SYS_mmap : uintptr : 9
- SYS_mprotect : uintptr : 10
- SYS_munmap : uintptr : 11
- SYS_brk : uintptr : 12
- SYS_rt_sigaction : uintptr : 13
- SYS_rt_sigprocmask : uintptr : 14
- SYS_rt_sigreturn : uintptr : 15
- SYS_ioctl : uintptr : 16
- SYS_pread64 : uintptr : 17
- SYS_pwrite64 : uintptr : 18
- SYS_readv : uintptr : 19
- SYS_writev : uintptr : 20
- SYS_access : uintptr : 21
- SYS_pipe : uintptr : 22
- SYS_select : uintptr : 23
- SYS_sched_yield : uintptr : 24
- SYS_mremap : uintptr : 25
- SYS_msync : uintptr : 26
- SYS_mincore : uintptr : 27
- SYS_madvise : uintptr : 28
- SYS_shmget : uintptr : 29
- SYS_shmat : uintptr : 30
- SYS_shmctl : uintptr : 31
- SYS_dup : uintptr : 32
- SYS_dup2 : uintptr : 33
- SYS_pause : uintptr : 34
- SYS_nanosleep : uintptr : 35
- SYS_getitimer : uintptr : 36
- SYS_alarm : uintptr : 37
- SYS_setitimer : uintptr : 38
- SYS_getpid : uintptr : 39
- SYS_sendfile : uintptr : 40
- SYS_socket : uintptr : 41
- SYS_connect : uintptr : 42
- SYS_accept : uintptr : 43
- SYS_sendto : uintptr : 44
- SYS_recvfrom : uintptr : 45
- SYS_sendmsg : uintptr : 46
- SYS_recvmsg : uintptr : 47
- SYS_shutdown : uintptr : 48
- SYS_bind : uintptr : 49
- SYS_listen : uintptr : 50
- SYS_getsockname : uintptr : 51
- SYS_getpeername : uintptr : 52
- SYS_socketpair : uintptr : 53
- SYS_setsockopt : uintptr : 54
- SYS_getsockopt : uintptr : 55
- SYS_clone : uintptr : 56
- SYS_fork : uintptr : 57
- SYS_vfork : uintptr : 58
- SYS_execve : uintptr : 59
- SYS_exit : uintptr : 60
- SYS_wait4 : uintptr : 61
- SYS_kill : uintptr : 62
- SYS_uname : uintptr : 63
- SYS_semget : uintptr : 64
- SYS_semop : uintptr : 65
- SYS_semctl : uintptr : 66
- SYS_shmdt : uintptr : 67
- SYS_msgget : uintptr : 68
- SYS_msgsnd : uintptr : 69
- SYS_msgrcv : uintptr : 70
- SYS_msgctl : uintptr : 71
- SYS_fcntl : uintptr : 72
- SYS_flock : uintptr : 73
- SYS_fsync : uintptr : 74
- SYS_fdatasync : uintptr : 75
- SYS_truncate : uintptr : 76
- SYS_ftruncate : uintptr : 77
- SYS_getdents : uintptr : 78
- SYS_getcwd : uintptr : 79
- SYS_chdir : uintptr : 80
- SYS_fchdir : uintptr : 81
- SYS_rename : uintptr : 82
- SYS_mkdir : uintptr : 83
- SYS_rmdir : uintptr : 84
- SYS_creat : uintptr : 85
- SYS_link : uintptr : 86
- SYS_unlink : uintptr : 87
- SYS_symlink : uintptr : 88
- SYS_readlink : uintptr : 89
- SYS_chmod : uintptr : 90
- SYS_fchmod : uintptr : 91
- SYS_chown : uintptr : 92
- SYS_fchown : uintptr : 93
- SYS_lchown : uintptr : 94
- SYS_umask : uintptr : 95
- SYS_gettimeofday : uintptr : 96
- SYS_getrlimit : uintptr : 97
- SYS_getrusage : uintptr : 98
- SYS_sysinfo : uintptr : 99
- SYS_times : uintptr : 100
- SYS_ptrace : uintptr : 101
- SYS_getuid : uintptr : 102
- SYS_syslog : uintptr : 103
- SYS_getgid : uintptr : 104
- SYS_setuid : uintptr : 105
- SYS_setgid : uintptr : 106
- SYS_geteuid : uintptr : 107
- SYS_getegid : uintptr : 108
- SYS_setpgid : uintptr : 109
- SYS_getppid : uintptr : 110
- SYS_getpgrp : uintptr : 111
- SYS_setsid : uintptr : 112
- SYS_setreuid : uintptr : 113
- SYS_setregid : uintptr : 114
- SYS_getgroups : uintptr : 115
- SYS_setgroups : uintptr : 116
- SYS_setresuid : uintptr : 117
- SYS_getresuid : uintptr : 118
- SYS_setresgid : uintptr : 119
- SYS_getresgid : uintptr : 120
- SYS_getpgid : uintptr : 121
- SYS_setfsuid : uintptr : 122
- SYS_setfsgid : uintptr : 123
- SYS_getsid : uintptr : 124
- SYS_capget : uintptr : 125
- SYS_capset : uintptr : 126
- SYS_rt_sigpending : uintptr : 127
- SYS_rt_sigtimedwait : uintptr : 128
- SYS_rt_sigqueueinfo : uintptr : 129
- SYS_rt_sigsuspend : uintptr : 130
- SYS_sigaltstack : uintptr : 131
- SYS_utime : uintptr : 132
- SYS_mknod : uintptr : 133
- SYS_uselib : uintptr : 134
- SYS_personality : uintptr : 135
- SYS_ustat : uintptr : 136
- SYS_statfs : uintptr : 137
- SYS_fstatfs : uintptr : 138
- SYS_sysfs : uintptr : 139
- SYS_getpriority : uintptr : 140
- SYS_setpriority : uintptr : 141
- SYS_sched_setparam : uintptr : 142
- SYS_sched_getparam : uintptr : 143
- SYS_sched_setscheduler : uintptr : 144
- SYS_sched_getscheduler : uintptr : 145
- SYS_sched_get_priority_max : uintptr : 146
- SYS_sched_get_priority_min : uintptr : 147
- SYS_sched_rr_get_interval : uintptr : 148
- SYS_mlock : uintptr : 149
- SYS_munlock : uintptr : 150
- SYS_mlockall : uintptr : 151
- SYS_munlockall : uintptr : 152
- SYS_vhangup : uintptr : 153
- SYS_modify_ldt : uintptr : 154
- SYS_pivot_root : uintptr : 155
- SYS__sysctl : uintptr : 156
- SYS_prctl : uintptr : 157
- SYS_arch_prctl : uintptr : 158
- SYS_adjtimex : uintptr : 159
- SYS_setrlimit : uintptr : 160
- SYS_chroot : uintptr : 161
- SYS_sync : uintptr : 162
- SYS_acct : uintptr : 163
- SYS_settimeofday : uintptr : 164
- SYS_mount : uintptr : 165
- SYS_umount2 : uintptr : 166
- SYS_swapon : uintptr : 167
- SYS_swapoff : uintptr : 168
- SYS_reboot : uintptr : 169
- SYS_sethostname : uintptr : 170
- SYS_setdomainname : uintptr : 171
- SYS_iopl : uintptr : 172
- SYS_ioperm : uintptr : 173
- SYS_create_module : uintptr : 174
- SYS_init_module : uintptr : 175
- SYS_delete_module : uintptr : 176
- SYS_get_kernel_syms : uintptr : 177
- SYS_query_module : uintptr : 178
- SYS_quotactl : uintptr : 179
- SYS_nfsservctl : uintptr : 180
- SYS_getpmsg : uintptr : 181
- SYS_putpmsg : uintptr : 182
- SYS_afs_syscall : uintptr : 183
- SYS_tuxcall : uintptr : 184
- SYS_security : uintptr : 185
- SYS_gettid : uintptr : 186
- SYS_readahead : uintptr : 187
- SYS_setxattr : uintptr : 188
- SYS_lsetxattr : uintptr : 189
- SYS_fsetxattr : uintptr : 190
- SYS_getxattr : uintptr : 191
- SYS_lgetxattr : uintptr : 192
- SYS_fgetxattr : uintptr : 193
- SYS_listxattr : uintptr : 194
- SYS_llistxattr : uintptr : 195
- SYS_flistxattr : uintptr : 196
- SYS_removexattr : uintptr : 197
- SYS_lremovexattr : uintptr : 198
- SYS_fremovexattr : uintptr : 199
- SYS_tkill : uintptr : 200
- SYS_time : uintptr : 201
- SYS_futex : uintptr : 202
- SYS_sched_setaffinity : uintptr : 203
- SYS_sched_getaffinity : uintptr : 204
- SYS_set_thread_area : uintptr : 205
- SYS_io_setup : uintptr : 206
- SYS_io_destroy : uintptr : 207
- SYS_io_getevents : uintptr : 208
- SYS_io_submit : uintptr : 209
- SYS_io_cancel : uintptr : 210
- SYS_get_thread_area : uintptr : 211
- SYS_lookup_dcookie : uintptr : 212
- SYS_epoll_create : uintptr : 213
- SYS_epoll_ctl_old : uintptr : 214
- SYS_epoll_wait_old : uintptr : 215
- SYS_remap_file_pages : uintptr : 216
- SYS_getdents64 : uintptr : 217
- SYS_set_tid_address : uintptr : 218
- SYS_restart_syscall : uintptr : 219
- SYS_semtimedop : uintptr : 220
- SYS_fadvise64 : uintptr : 221
- SYS_timer_create : uintptr : 222
- SYS_timer_settime : uintptr : 223
- SYS_timer_gettime : uintptr : 224
- SYS_timer_getoverrun : uintptr : 225
- SYS_timer_delete : uintptr : 226
- SYS_clock_settime : uintptr : 227
- SYS_clock_gettime : uintptr : 228
- SYS_clock_getres : uintptr : 229
- SYS_clock_nanosleep : uintptr : 230
- SYS_exit_group : uintptr : 231
- SYS_epoll_wait : uintptr : 232
- SYS_epoll_ctl : uintptr : 233
- SYS_tgkill : uintptr : 234
- SYS_utimes : uintptr : 235
- SYS_vserver : uintptr : 236
- SYS_mbind : uintptr : 237
- SYS_set_mempolicy : uintptr : 238
- SYS_get_mempolicy : uintptr : 239
- SYS_mq_open : uintptr : 240
- SYS_mq_unlink : uintptr : 241
- SYS_mq_timedsend : uintptr : 242
- SYS_mq_timedreceive : uintptr : 243
- SYS_mq_notify : uintptr : 244
- SYS_mq_getsetattr : uintptr : 245
- SYS_kexec_load : uintptr : 246
- SYS_waitid : uintptr : 247
- SYS_add_key : uintptr : 248
- SYS_request_key : uintptr : 249
- SYS_keyctl : uintptr : 250
- SYS_ioprio_set : uintptr : 251
- SYS_ioprio_get : uintptr : 252
- SYS_inotify_init : uintptr : 253
- SYS_inotify_add_watch : uintptr : 254
- SYS_inotify_rm_watch : uintptr : 255
- SYS_migrate_pages : uintptr : 256
- SYS_openat : uintptr : 257
- SYS_mkdirat : uintptr : 258
- SYS_mknodat : uintptr : 259
- SYS_fchownat : uintptr : 260
- SYS_futimesat : uintptr : 261
- SYS_fstatat : uintptr : 262
- SYS_unlinkat : uintptr : 263
- SYS_renameat : uintptr : 264
- SYS_linkat : uintptr : 265
- SYS_symlinkat : uintptr : 266
- SYS_readlinkat : uintptr : 267
- SYS_fchmodat : uintptr : 268
- SYS_faccessat : uintptr : 269
- SYS_pselect6 : uintptr : 270
- SYS_ppoll : uintptr : 271
- SYS_unshare : uintptr : 272
- SYS_set_robust_list : uintptr : 273
- SYS_get_robust_list : uintptr : 274
- SYS_splice : uintptr : 275
- SYS_tee : uintptr : 276
- SYS_sync_file_range : uintptr : 277
- SYS_vmsplice : uintptr : 278
- SYS_move_pages : uintptr : 279
- SYS_utimensat : uintptr : 280
- SYS_epoll_pwait : uintptr : 281
- SYS_signalfd : uintptr : 282
- SYS_timerfd_create : uintptr : 283
- SYS_eventfd : uintptr : 284
- SYS_fallocate : uintptr : 285
- SYS_timerfd_settime : uintptr : 286
- SYS_timerfd_gettime : uintptr : 287
- SYS_accept4 : uintptr : 288
- SYS_signalfd4 : uintptr : 289
- SYS_eventfd2 : uintptr : 290
- SYS_epoll_create1 : uintptr : 291
- SYS_dup3 : uintptr : 292
- SYS_pipe2 : uintptr : 293
- SYS_inotify_init1 : uintptr : 294
- SYS_preadv : uintptr : 295
- SYS_pwritev : uintptr : 296
- SYS_rt_tgsigqueueinfo : uintptr : 297
- SYS_perf_event_open : uintptr : 298
- SYS_recvmmsg : uintptr : 299
- SYS_fanotify_init : uintptr : 300
- SYS_fanotify_mark : uintptr : 301
- SYS_prlimit64 : uintptr : 302
- SYS_name_to_handle_at : uintptr : 303
- SYS_open_by_handle_at : uintptr : 304
- SYS_clock_adjtime : uintptr : 305
- SYS_syncfs : uintptr : 306
- SYS_sendmmsg : uintptr : 307
- SYS_setns : uintptr : 308
- SYS_getcpu : uintptr : 309
- SYS_process_vm_readv : uintptr : 310
- SYS_process_vm_writev : uintptr : 311
- SYS_kcmp : uintptr : 312
- SYS_finit_module : uintptr : 313
- SYS_sched_setattr : uintptr : 314
- SYS_sched_getattr : uintptr : 315
- SYS_renameat2 : uintptr : 316
- SYS_seccomp : uintptr : 317
- SYS_getrandom : uintptr : 318
- SYS_memfd_create : uintptr : 319
- SYS_kexec_file_load : uintptr : 320
- SYS_bpf : uintptr : 321
- SYS_execveat : uintptr : 322
- SYS_userfaultfd : uintptr : 323
- SYS_membarrier : uintptr : 324
- SYS_mlock2 : uintptr : 325
- SYS_copy_file_range : uintptr : 326
- SYS_preadv2 : uintptr : 327
- SYS_pwritev2 : uintptr : 328
- SYS_pkey_mprotect : uintptr : 329
- SYS_pkey_alloc : uintptr : 330
- SYS_pkey_free : uintptr : 331
- SYS_statx : uintptr : 332
- SYS_io_pgetevents : uintptr : 333
- SYS_rseq : uintptr : 334
- SYS_pidfd_send_signal : uintptr : 424
- SYS_io_uring_setup : uintptr : 425
- SYS_io_uring_enter : uintptr : 426
- SYS_io_uring_register : uintptr : 427
- SYS_open_tree : uintptr : 428
- SYS_move_mount : uintptr : 429
- SYS_fsopen : uintptr : 430
- SYS_fsconfig : uintptr : 431
- SYS_fsmount : uintptr : 432
- SYS_fspick : uintptr : 433
- SYS_pidfd_open : uintptr : 434
- SYS_clone3 : uintptr : 435
- SYS_close_range : uintptr : 436
- SYS_openat2 : uintptr : 437
- SYS_pidfd_getfd : uintptr : 438
- SYS_faccessat2 : uintptr : 439
- SYS_process_madvise : uintptr : 440
- SYS_epoll_pwait2 : uintptr : 441
- SYS_mount_setattr : uintptr : 442
- SYS_landlock_create_ruleset : uintptr : 444
- SYS_landlock_add_rule : uintptr : 445
- SYS_landlock_restrict_self : uintptr : 446
- SYS_memfd_secret : uintptr : 447
- } else when ODIN_ARCH == .arm64 {
- SYS_io_setup : uintptr : 0
- SYS_io_destroy : uintptr : 1
- SYS_io_submit : uintptr : 2
- SYS_io_cancel : uintptr : 3
- SYS_io_getevents : uintptr : 4
- SYS_setxattr : uintptr : 5
- SYS_lsetxattr : uintptr : 6
- SYS_fsetxattr : uintptr : 7
- SYS_getxattr : uintptr : 8
- SYS_lgetxattr : uintptr : 9
- SYS_fgetxattr : uintptr : 10
- SYS_listxattr : uintptr : 11
- SYS_llistxattr : uintptr : 12
- SYS_flistxattr : uintptr : 13
- SYS_removexattr : uintptr : 14
- SYS_lremovexattr : uintptr : 15
- SYS_fremovexattr : uintptr : 16
- SYS_getcwd : uintptr : 17
- SYS_lookup_dcookie : uintptr : 18
- SYS_eventfd2 : uintptr : 19
- SYS_epoll_create1 : uintptr : 20
- SYS_epoll_ctl : uintptr : 21
- SYS_epoll_pwait : uintptr : 22
- SYS_dup : uintptr : 23
- SYS_dup3 : uintptr : 24
- SYS_fcntl : uintptr : 25
- SYS_inotify_init1 : uintptr : 26
- SYS_inotify_add_watch : uintptr : 27
- SYS_inotify_rm_watch : uintptr : 28
- SYS_ioctl : uintptr : 29
- SYS_ioprio_set : uintptr : 30
- SYS_ioprio_get : uintptr : 31
- SYS_flock : uintptr : 32
- SYS_mknodat : uintptr : 33
- SYS_mkdirat : uintptr : 34
- SYS_unlinkat : uintptr : 35
- SYS_symlinkat : uintptr : 36
- SYS_linkat : uintptr : 37
- SYS_renameat : uintptr : 38
- SYS_umount2 : uintptr : 39
- SYS_mount : uintptr : 40
- SYS_pivot_root : uintptr : 41
- SYS_nfsservctl : uintptr : 42
- SYS_statfs : uintptr : 43
- SYS_fstatfs : uintptr : 44
- SYS_truncate : uintptr : 45
- SYS_ftruncate : uintptr : 46
- SYS_fallocate : uintptr : 47
- SYS_faccessat : uintptr : 48
- SYS_chdir : uintptr : 49
- SYS_fchdir : uintptr : 50
- SYS_chroot : uintptr : 51
- SYS_fchmod : uintptr : 52
- SYS_fchmodat : uintptr : 53
- SYS_fchownat : uintptr : 54
- SYS_fchown : uintptr : 55
- SYS_openat : uintptr : 56
- SYS_close : uintptr : 57
- SYS_vhangup : uintptr : 58
- SYS_pipe2 : uintptr : 59
- SYS_quotactl : uintptr : 60
- SYS_getdents64 : uintptr : 61
- SYS_lseek : uintptr : 62
- SYS_read : uintptr : 63
- SYS_write : uintptr : 64
- SYS_readv : uintptr : 65
- SYS_writev : uintptr : 66
- SYS_pread64 : uintptr : 67
- SYS_pwrite64 : uintptr : 68
- SYS_preadv : uintptr : 69
- SYS_pwritev : uintptr : 70
- SYS_sendfile : uintptr : 71
- SYS_pselect6 : uintptr : 72
- SYS_ppoll : uintptr : 73
- SYS_signalfd4 : uintptr : 74
- SYS_vmsplice : uintptr : 75
- SYS_splice : uintptr : 76
- SYS_tee : uintptr : 77
- SYS_readlinkat : uintptr : 78
- SYS_fstatat : uintptr : 79
- SYS_fstat : uintptr : 80
- SYS_sync : uintptr : 81
- SYS_fsync : uintptr : 82
- SYS_fdatasync : uintptr : 83
- SYS_sync_file_range : uintptr : 84
- SYS_timerfd_create : uintptr : 85
- SYS_timerfd_settime : uintptr : 86
- SYS_timerfd_gettime : uintptr : 87
- SYS_utimensat : uintptr : 88
- SYS_acct : uintptr : 89
- SYS_capget : uintptr : 90
- SYS_capset : uintptr : 91
- SYS_personality : uintptr : 92
- SYS_exit : uintptr : 93
- SYS_exit_group : uintptr : 94
- SYS_waitid : uintptr : 95
- SYS_set_tid_address : uintptr : 96
- SYS_unshare : uintptr : 97
- SYS_futex : uintptr : 98
- SYS_set_robust_list : uintptr : 99
- SYS_get_robust_list : uintptr : 100
- SYS_nanosleep : uintptr : 101
- SYS_getitimer : uintptr : 102
- SYS_setitimer : uintptr : 103
- SYS_kexec_load : uintptr : 104
- SYS_init_module : uintptr : 105
- SYS_delete_module : uintptr : 106
- SYS_timer_create : uintptr : 107
- SYS_timer_gettime : uintptr : 108
- SYS_timer_getoverrun : uintptr : 109
- SYS_timer_settime : uintptr : 110
- SYS_timer_delete : uintptr : 111
- SYS_clock_settime : uintptr : 112
- SYS_clock_gettime : uintptr : 113
- SYS_clock_getres : uintptr : 114
- SYS_clock_nanosleep : uintptr : 115
- SYS_syslog : uintptr : 116
- SYS_ptrace : uintptr : 117
- SYS_sched_setparam : uintptr : 118
- SYS_sched_setscheduler : uintptr : 119
- SYS_sched_getscheduler : uintptr : 120
- SYS_sched_getparam : uintptr : 121
- SYS_sched_setaffinity : uintptr : 122
- SYS_sched_getaffinity : uintptr : 123
- SYS_sched_yield : uintptr : 124
- SYS_sched_get_priority_max : uintptr : 125
- SYS_sched_get_priority_min : uintptr : 126
- SYS_sched_rr_get_interval : uintptr : 127
- SYS_restart_syscall : uintptr : 128
- SYS_kill : uintptr : 129
- SYS_tkill : uintptr : 130
- SYS_tgkill : uintptr : 131
- SYS_sigaltstack : uintptr : 132
- SYS_rt_sigsuspend : uintptr : 133
- SYS_rt_sigaction : uintptr : 134
- SYS_rt_sigprocmask : uintptr : 135
- SYS_rt_sigpending : uintptr : 136
- SYS_rt_sigtimedwait : uintptr : 137
- SYS_rt_sigqueueinfo : uintptr : 138
- SYS_rt_sigreturn : uintptr : 139
- SYS_setpriority : uintptr : 140
- SYS_getpriority : uintptr : 141
- SYS_reboot : uintptr : 142
- SYS_setregid : uintptr : 143
- SYS_setgid : uintptr : 144
- SYS_setreuid : uintptr : 145
- SYS_setuid : uintptr : 146
- SYS_setresuid : uintptr : 147
- SYS_getresuid : uintptr : 148
- SYS_setresgid : uintptr : 149
- SYS_getresgid : uintptr : 150
- SYS_setfsuid : uintptr : 151
- SYS_setfsgid : uintptr : 152
- SYS_times : uintptr : 153
- SYS_setpgid : uintptr : 154
- SYS_getpgid : uintptr : 155
- SYS_getsid : uintptr : 156
- SYS_setsid : uintptr : 157
- SYS_getgroups : uintptr : 158
- SYS_setgroups : uintptr : 159
- SYS_uname : uintptr : 160
- SYS_sethostname : uintptr : 161
- SYS_setdomainname : uintptr : 162
- SYS_getrlimit : uintptr : 163
- SYS_setrlimit : uintptr : 164
- SYS_getrusage : uintptr : 165
- SYS_umask : uintptr : 166
- SYS_prctl : uintptr : 167
- SYS_getcpu : uintptr : 168
- SYS_gettimeofday : uintptr : 169
- SYS_settimeofday : uintptr : 170
- SYS_adjtimex : uintptr : 171
- SYS_getpid : uintptr : 172
- SYS_getppid : uintptr : 173
- SYS_getuid : uintptr : 174
- SYS_geteuid : uintptr : 175
- SYS_getgid : uintptr : 176
- SYS_getegid : uintptr : 177
- SYS_gettid : uintptr : 178
- SYS_sysinfo : uintptr : 179
- SYS_mq_open : uintptr : 180
- SYS_mq_unlink : uintptr : 181
- SYS_mq_timedsend : uintptr : 182
- SYS_mq_timedreceive : uintptr : 183
- SYS_mq_notify : uintptr : 184
- SYS_mq_getsetattr : uintptr : 185
- SYS_msgget : uintptr : 186
- SYS_msgctl : uintptr : 187
- SYS_msgrcv : uintptr : 188
- SYS_msgsnd : uintptr : 189
- SYS_semget : uintptr : 190
- SYS_semctl : uintptr : 191
- SYS_semtimedop : uintptr : 192
- SYS_semop : uintptr : 193
- SYS_shmget : uintptr : 194
- SYS_shmctl : uintptr : 195
- SYS_shmat : uintptr : 196
- SYS_shmdt : uintptr : 197
- SYS_socket : uintptr : 198
- SYS_socketpair : uintptr : 199
- SYS_bind : uintptr : 200
- SYS_listen : uintptr : 201
- SYS_accept : uintptr : 202
- SYS_connect : uintptr : 203
- SYS_getsockname : uintptr : 204
- SYS_getpeername : uintptr : 205
- SYS_sendto : uintptr : 206
- SYS_recvfrom : uintptr : 207
- SYS_setsockopt : uintptr : 208
- SYS_getsockopt : uintptr : 209
- SYS_shutdown : uintptr : 210
- SYS_sendmsg : uintptr : 211
- SYS_recvmsg : uintptr : 212
- SYS_readahead : uintptr : 213
- SYS_brk : uintptr : 214
- SYS_munmap : uintptr : 215
- SYS_mremap : uintptr : 216
- SYS_add_key : uintptr : 217
- SYS_request_key : uintptr : 218
- SYS_keyctl : uintptr : 219
- SYS_clone : uintptr : 220
- SYS_execve : uintptr : 221
- SYS_mmap : uintptr : 222
- SYS_fadvise64 : uintptr : 223
- SYS_swapon : uintptr : 224
- SYS_swapoff : uintptr : 225
- SYS_mprotect : uintptr : 226
- SYS_msync : uintptr : 227
- SYS_mlock : uintptr : 228
- SYS_munlock : uintptr : 229
- SYS_mlockall : uintptr : 230
- SYS_munlockall : uintptr : 231
- SYS_mincore : uintptr : 232
- SYS_madvise : uintptr : 233
- SYS_remap_file_pages : uintptr : 234
- SYS_mbind : uintptr : 235
- SYS_get_mempolicy : uintptr : 236
- SYS_set_mempolicy : uintptr : 237
- SYS_migrate_pages : uintptr : 238
- SYS_move_pages : uintptr : 239
- SYS_rt_tgsigqueueinfo : uintptr : 240
- SYS_perf_event_open : uintptr : 241
- SYS_accept4 : uintptr : 242
- SYS_recvmmsg : uintptr : 243
- SYS_arch_specific_syscall : uintptr : 244
- SYS_wait4 : uintptr : 260
- SYS_prlimit64 : uintptr : 261
- SYS_fanotify_init : uintptr : 262
- SYS_fanotify_mark : uintptr : 263
- SYS_clock_adjtime : uintptr : 266
- SYS_syncfs : uintptr : 267
- SYS_setns : uintptr : 268
- SYS_sendmmsg : uintptr : 269
- SYS_process_vm_readv : uintptr : 270
- SYS_process_vm_writev : uintptr : 271
- SYS_kcmp : uintptr : 272
- SYS_finit_module : uintptr : 273
- SYS_sched_setattr : uintptr : 274
- SYS_sched_getattr : uintptr : 275
- SYS_renameat2 : uintptr : 276
- SYS_seccomp : uintptr : 277
- SYS_getrandom : uintptr : 278
- SYS_memfd_create : uintptr : 279
- SYS_bpf : uintptr : 280
- SYS_execveat : uintptr : 281
- SYS_userfaultfd : uintptr : 282
- SYS_membarrier : uintptr : 283
- SYS_mlock2 : uintptr : 284
- SYS_copy_file_range : uintptr : 285
- SYS_preadv2 : uintptr : 286
- SYS_pwritev2 : uintptr : 287
- SYS_pkey_mprotect : uintptr : 288
- SYS_pkey_alloc : uintptr : 289
- SYS_pkey_free : uintptr : 290
- SYS_statx : uintptr : 291
- SYS_io_pgetevents : uintptr : 292
- SYS_rseq : uintptr : 293
- SYS_kexec_file_load : uintptr : 294
- SYS_pidfd_send_signal : uintptr : 424
- SYS_io_uring_setup : uintptr : 425
- SYS_io_uring_enter : uintptr : 426
- SYS_io_uring_register : uintptr : 427
- SYS_open_tree : uintptr : 428
- SYS_move_mount : uintptr : 429
- SYS_fsopen : uintptr : 430
- SYS_fsconfig : uintptr : 431
- SYS_fsmount : uintptr : 432
- SYS_fspick : uintptr : 433
- SYS_pidfd_open : uintptr : 434
- SYS_clone3 : uintptr : 435
- SYS_close_range : uintptr : 436
- SYS_openat2 : uintptr : 437
- SYS_pidfd_getfd : uintptr : 438
- SYS_faccessat2 : uintptr : 439
- SYS_process_madvise : uintptr : 440
- SYS_epoll_pwait2 : uintptr : 441
- SYS_mount_setattr : uintptr : 442
- SYS_landlock_create_ruleset : uintptr : 444
- SYS_landlock_add_rule : uintptr : 445
- SYS_landlock_restrict_self : uintptr : 446
-
- SIGCHLD :: 17
- } else when ODIN_ARCH == .i386 {
- SYS_restart_syscall : uintptr : 0
- SYS_exit : uintptr : 1
- SYS_fork : uintptr : 2
- SYS_read : uintptr : 3
- SYS_write : uintptr : 4
- SYS_open : uintptr : 5
- SYS_close : uintptr : 6
- SYS_waitpid : uintptr : 7
- SYS_creat : uintptr : 8
- SYS_link : uintptr : 9
- SYS_unlink : uintptr : 10
- SYS_execve : uintptr : 11
- SYS_chdir : uintptr : 12
- SYS_time : uintptr : 13
- SYS_mknod : uintptr : 14
- SYS_chmod : uintptr : 15
- SYS_lchown : uintptr : 16
- SYS_break : uintptr : 17
- SYS_oldstat : uintptr : 18
- SYS_lseek : uintptr : 19
- SYS_getpid : uintptr : 20
- SYS_mount : uintptr : 21
- SYS_umount : uintptr : 22
- SYS_setuid : uintptr : 23
- SYS_getuid : uintptr : 24
- SYS_stime : uintptr : 25
- SYS_ptrace : uintptr : 26
- SYS_alarm : uintptr : 27
- SYS_oldfstat : uintptr : 28
- SYS_pause : uintptr : 29
- SYS_utime : uintptr : 30
- SYS_stty : uintptr : 31
- SYS_gtty : uintptr : 32
- SYS_access : uintptr : 33
- SYS_nice : uintptr : 34
- SYS_ftime : uintptr : 35
- SYS_sync : uintptr : 36
- SYS_kill : uintptr : 37
- SYS_rename : uintptr : 38
- SYS_mkdir : uintptr : 39
- SYS_rmdir : uintptr : 40
- SYS_dup : uintptr : 41
- SYS_pipe : uintptr : 42
- SYS_times : uintptr : 43
- SYS_prof : uintptr : 44
- SYS_brk : uintptr : 45
- SYS_setgid : uintptr : 46
- SYS_getgid : uintptr : 47
- SYS_signal : uintptr : 48
- SYS_geteuid : uintptr : 49
- SYS_getegid : uintptr : 50
- SYS_acct : uintptr : 51
- SYS_umount2 : uintptr : 52
- SYS_lock : uintptr : 53
- SYS_ioctl : uintptr : 54
- SYS_fcntl : uintptr : 55
- SYS_mpx : uintptr : 56
- SYS_setpgid : uintptr : 57
- SYS_ulimit : uintptr : 58
- SYS_oldolduname : uintptr : 59
- SYS_umask : uintptr : 60
- SYS_chroot : uintptr : 61
- SYS_ustat : uintptr : 62
- SYS_dup2 : uintptr : 63
- SYS_getppid : uintptr : 64
- SYS_getpgrp : uintptr : 65
- SYS_setsid : uintptr : 66
- SYS_sigaction : uintptr : 67
- SYS_sgetmask : uintptr : 68
- SYS_ssetmask : uintptr : 69
- SYS_setreuid : uintptr : 70
- SYS_setregid : uintptr : 71
- SYS_sigsuspend : uintptr : 72
- SYS_sigpending : uintptr : 73
- SYS_sethostname : uintptr : 74
- SYS_setrlimit : uintptr : 75
- SYS_getrlimit : uintptr : 76
- SYS_getrusage : uintptr : 77
- SYS_gettimeofday : uintptr : 78
- SYS_settimeofday : uintptr : 79
- SYS_getgroups : uintptr : 80
- SYS_setgroups : uintptr : 81
- SYS_select : uintptr : 82
- SYS_symlink : uintptr : 83
- SYS_oldlstat : uintptr : 84
- SYS_readlink : uintptr : 85
- SYS_uselib : uintptr : 86
- SYS_swapon : uintptr : 87
- SYS_reboot : uintptr : 88
- SYS_readdir : uintptr : 89
- SYS_old_mmap : uintptr : 90 // 90 is "sys_old_mmap", we want mmap2
- SYS_munmap : uintptr : 91
- SYS_truncate : uintptr : 92
- SYS_ftruncate : uintptr : 93
- SYS_fchmod : uintptr : 94
- SYS_fchown : uintptr : 95
- SYS_getpriority : uintptr : 96
- SYS_setpriority : uintptr : 97
- SYS_profil : uintptr : 98
- SYS_statfs : uintptr : 99
- SYS_fstatfs : uintptr : 100
- SYS_ioperm : uintptr : 101
- SYS_socketcall : uintptr : 102
- SYS_syslog : uintptr : 103
- SYS_setitimer : uintptr : 104
- SYS_getitimer : uintptr : 105
- SYS_stat : uintptr : 106
- SYS_lstat : uintptr : 107
- SYS_fstat : uintptr : 108
- SYS_olduname : uintptr : 109
- SYS_iopl : uintptr : 110
- SYS_vhangup : uintptr : 111
- SYS_idle : uintptr : 112
- SYS_vm86old : uintptr : 113
- SYS_wait4 : uintptr : 114
- SYS_swapoff : uintptr : 115
- SYS_sysinfo : uintptr : 116
- SYS_ipc : uintptr : 117
- SYS_fsync : uintptr : 118
- SYS_sigreturn : uintptr : 119
- SYS_clone : uintptr : 120
- SYS_setdomainname : uintptr : 121
- SYS_uname : uintptr : 122
- SYS_modify_ldt : uintptr : 123
- SYS_adjtimex : uintptr : 124
- SYS_mprotect : uintptr : 125
- SYS_sigprocmask : uintptr : 126
- SYS_create_module : uintptr : 127
- SYS_init_module : uintptr : 128
- SYS_delete_module : uintptr : 129
- SYS_get_kernel_syms : uintptr : 130
- SYS_quotactl : uintptr : 131
- SYS_getpgid : uintptr : 132
- SYS_fchdir : uintptr : 133
- SYS_bdflush : uintptr : 134
- SYS_sysfs : uintptr : 135
- SYS_personality : uintptr : 136
- SYS_afs_syscall : uintptr : 137
- SYS_setfsuid : uintptr : 138
- SYS_setfsgid : uintptr : 139
- SYS__llseek : uintptr : 140
- SYS_getdents : uintptr : 141
- SYS__newselect : uintptr : 142
- SYS_flock : uintptr : 143
- SYS_msync : uintptr : 144
- SYS_readv : uintptr : 145
- SYS_writev : uintptr : 146
- SYS_getsid : uintptr : 147
- SYS_fdatasync : uintptr : 148
- SYS__sysctl : uintptr : 149
- SYS_mlock : uintptr : 150
- SYS_munlock : uintptr : 151
- SYS_mlockall : uintptr : 152
- SYS_munlockall : uintptr : 153
- SYS_sched_setparam : uintptr : 154
- SYS_sched_getparam : uintptr : 155
- SYS_sched_setscheduler : uintptr : 156
- SYS_sched_getscheduler : uintptr : 157
- SYS_sched_yield : uintptr : 158
- SYS_sched_get_priority_max : uintptr : 159
- SYS_sched_get_priority_min : uintptr : 160
- SYS_sched_rr_get_interval : uintptr : 161
- SYS_nanosleep : uintptr : 162
- SYS_mremap : uintptr : 163
- SYS_setresuid : uintptr : 164
- SYS_getresuid : uintptr : 165
- SYS_vm86 : uintptr : 166
- SYS_query_module : uintptr : 167
- SYS_poll : uintptr : 168
- SYS_nfsservctl : uintptr : 169
- SYS_setresgid : uintptr : 170
- SYS_getresgid : uintptr : 171
- SYS_prctl : uintptr : 172
- SYS_rt_sigreturn : uintptr : 173
- SYS_rt_sigaction : uintptr : 174
- SYS_rt_sigprocmask : uintptr : 175
- SYS_rt_sigpending : uintptr : 176
- SYS_rt_sigtimedwait : uintptr : 177
- SYS_rt_sigqueueinfo : uintptr : 178
- SYS_rt_sigsuspend : uintptr : 179
- SYS_pread64 : uintptr : 180
- SYS_pwrite64 : uintptr : 181
- SYS_chown : uintptr : 182
- SYS_getcwd : uintptr : 183
- SYS_capget : uintptr : 184
- SYS_capset : uintptr : 185
- SYS_sigaltstack : uintptr : 186
- SYS_sendfile : uintptr : 187
- SYS_getpmsg : uintptr : 188
- SYS_putpmsg : uintptr : 189
- SYS_vfork : uintptr : 190
- SYS_ugetrlimit : uintptr : 191
- SYS_mmap : uintptr : 192 // actually mmap2
- SYS_truncate64 : uintptr : 193
- SYS_ftruncate64 : uintptr : 194
- SYS_stat64 : uintptr : 195
- SYS_lstat64 : uintptr : 196
- SYS_fstat64 : uintptr : 197
- SYS_lchown32 : uintptr : 198
- SYS_getuid32 : uintptr : 199
- SYS_getgid32 : uintptr : 200
- SYS_geteuid32 : uintptr : 201
- SYS_getegid32 : uintptr : 202
- SYS_setreuid32 : uintptr : 203
- SYS_setregid32 : uintptr : 204
- SYS_getgroups32 : uintptr : 205
- SYS_setgroups32 : uintptr : 206
- SYS_fchown32 : uintptr : 207
- SYS_setresuid32 : uintptr : 208
- SYS_getresuid32 : uintptr : 209
- SYS_setresgid32 : uintptr : 210
- SYS_getresgid32 : uintptr : 211
- SYS_chown32 : uintptr : 212
- SYS_setuid32 : uintptr : 213
- SYS_setgid32 : uintptr : 214
- SYS_setfsuid32 : uintptr : 215
- SYS_setfsgid32 : uintptr : 216
- SYS_pivot_root : uintptr : 217
- SYS_mincore : uintptr : 218
- SYS_madvise : uintptr : 219
- SYS_getdents64 : uintptr : 220
- SYS_fcntl64 : uintptr : 221
- SYS_gettid : uintptr : 224
- SYS_readahead : uintptr : 225
- SYS_setxattr : uintptr : 226
- SYS_lsetxattr : uintptr : 227
- SYS_fsetxattr : uintptr : 228
- SYS_getxattr : uintptr : 229
- SYS_lgetxattr : uintptr : 230
- SYS_fgetxattr : uintptr : 231
- SYS_listxattr : uintptr : 232
- SYS_llistxattr : uintptr : 233
- SYS_flistxattr : uintptr : 234
- SYS_removexattr : uintptr : 235
- SYS_lremovexattr : uintptr : 236
- SYS_fremovexattr : uintptr : 237
- SYS_tkill : uintptr : 238
- SYS_sendfile64 : uintptr : 239
- SYS_futex : uintptr : 240
- SYS_sched_setaffinity : uintptr : 241
- SYS_sched_getaffinity : uintptr : 242
- SYS_set_thread_area : uintptr : 243
- SYS_get_thread_area : uintptr : 244
- SYS_io_setup : uintptr : 245
- SYS_io_destroy : uintptr : 246
- SYS_io_getevents : uintptr : 247
- SYS_io_submit : uintptr : 248
- SYS_io_cancel : uintptr : 249
- SYS_fadvise64 : uintptr : 250
- SYS_exit_group : uintptr : 252
- SYS_lookup_dcookie : uintptr : 253
- SYS_epoll_create : uintptr : 254
- SYS_epoll_ctl : uintptr : 255
- SYS_epoll_wait : uintptr : 256
- SYS_remap_file_pages : uintptr : 257
- SYS_set_tid_address : uintptr : 258
- SYS_timer_create : uintptr : 259
- SYS_timer_settime : uintptr : 260
- SYS_timer_gettime : uintptr : 261
- SYS_timer_getoverrun : uintptr : 262
- SYS_timer_delete : uintptr : 263
- SYS_clock_settime : uintptr : 264
- SYS_clock_gettime : uintptr : 265
- SYS_clock_getres : uintptr : 266
- SYS_clock_nanosleep : uintptr : 267
- SYS_statfs64 : uintptr : 268
- SYS_fstatfs64 : uintptr : 269
- SYS_tgkill : uintptr : 270
- SYS_utimes : uintptr : 271
- SYS_fadvise64_64 : uintptr : 272
- SYS_vserver : uintptr : 273
- SYS_mbind : uintptr : 274
- SYS_get_mempolicy : uintptr : 275
- SYS_set_mempolicy : uintptr : 276
- SYS_mq_open : uintptr : 277
- SYS_mq_unlink : uintptr : 278
- SYS_mq_timedsend : uintptr : 279
- SYS_mq_timedreceive : uintptr : 280
- SYS_mq_notify : uintptr : 281
- SYS_mq_getsetattr : uintptr : 282
- SYS_kexec_load : uintptr : 283
- SYS_waitid : uintptr : 284
- SYS_add_key : uintptr : 286
- SYS_request_key : uintptr : 287
- SYS_keyctl : uintptr : 288
- SYS_ioprio_set : uintptr : 289
- SYS_ioprio_get : uintptr : 290
- SYS_inotify_init : uintptr : 291
- SYS_inotify_add_watch : uintptr : 292
- SYS_inotify_rm_watch : uintptr : 293
- SYS_migrate_pages : uintptr : 294
- SYS_openat : uintptr : 295
- SYS_mkdirat : uintptr : 296
- SYS_mknodat : uintptr : 297
- SYS_fchownat : uintptr : 298
- SYS_futimesat : uintptr : 299
- SYS_fstatat64 : uintptr : 300
- SYS_unlinkat : uintptr : 301
- SYS_renameat : uintptr : 302
- SYS_linkat : uintptr : 303
- SYS_symlinkat : uintptr : 304
- SYS_readlinkat : uintptr : 305
- SYS_fchmodat : uintptr : 306
- SYS_faccessat : uintptr : 307
- SYS_pselect6 : uintptr : 308
- SYS_ppoll : uintptr : 309
- SYS_unshare : uintptr : 310
- SYS_set_robust_list : uintptr : 311
- SYS_get_robust_list : uintptr : 312
- SYS_splice : uintptr : 313
- SYS_sync_file_range : uintptr : 314
- SYS_tee : uintptr : 315
- SYS_vmsplice : uintptr : 316
- SYS_move_pages : uintptr : 317
- SYS_getcpu : uintptr : 318
- SYS_epoll_pwait : uintptr : 319
- SYS_utimensat : uintptr : 320
- SYS_signalfd : uintptr : 321
- SYS_timerfd_create : uintptr : 322
- SYS_eventfd : uintptr : 323
- SYS_fallocate : uintptr : 324
- SYS_timerfd_settime : uintptr : 325
- SYS_timerfd_gettime : uintptr : 326
- SYS_signalfd4 : uintptr : 327
- SYS_eventfd2 : uintptr : 328
- SYS_epoll_create1 : uintptr : 329
- SYS_dup3 : uintptr : 330
- SYS_pipe2 : uintptr : 331
- SYS_inotify_init1 : uintptr : 332
- SYS_preadv : uintptr : 333
- SYS_pwritev : uintptr : 334
- SYS_rt_tgsigqueueinfo : uintptr : 335
- SYS_perf_event_open : uintptr : 336
- SYS_recvmmsg : uintptr : 337
- SYS_fanotify_init : uintptr : 338
- SYS_fanotify_mark : uintptr : 339
- SYS_prlimit64 : uintptr : 340
- SYS_name_to_handle_at : uintptr : 341
- SYS_open_by_handle_at : uintptr : 342
- SYS_clock_adjtime : uintptr : 343
- SYS_syncfs : uintptr : 344
- SYS_sendmmsg : uintptr : 345
- SYS_setns : uintptr : 346
- SYS_process_vm_readv : uintptr : 347
- SYS_process_vm_writev : uintptr : 348
- SYS_kcmp : uintptr : 349
- SYS_finit_module : uintptr : 350
- SYS_sched_setattr : uintptr : 351
- SYS_sched_getattr : uintptr : 352
- SYS_renameat2 : uintptr : 353
- SYS_seccomp : uintptr : 354
- SYS_getrandom : uintptr : 355
- SYS_memfd_create : uintptr : 356
- SYS_bpf : uintptr : 357
- SYS_execveat : uintptr : 358
- SYS_socket : uintptr : 359
- SYS_socketpair : uintptr : 360
- SYS_bind : uintptr : 361
- SYS_connect : uintptr : 362
- SYS_listen : uintptr : 363
- SYS_accept4 : uintptr : 364
- SYS_getsockopt : uintptr : 365
- SYS_setsockopt : uintptr : 366
- SYS_getsockname : uintptr : 367
- SYS_getpeername : uintptr : 368
- SYS_sendto : uintptr : 369
- SYS_sendmsg : uintptr : 370
- SYS_recvfrom : uintptr : 371
- SYS_recvmsg : uintptr : 372
- SYS_shutdown : uintptr : 373
- SYS_userfaultfd : uintptr : 374
- SYS_membarrier : uintptr : 375
- SYS_mlock2 : uintptr : 376
- SYS_copy_file_range : uintptr : 377
- SYS_preadv2 : uintptr : 378
- SYS_pwritev2 : uintptr : 379
- SYS_pkey_mprotect : uintptr : 380
- SYS_pkey_alloc : uintptr : 381
- SYS_pkey_free : uintptr : 382
- SYS_statx : uintptr : 383
- SYS_arch_prctl : uintptr : 384
- SYS_io_pgetevents : uintptr : 385
- SYS_rseq : uintptr : 386
- SYS_semget : uintptr : 393
- SYS_semctl : uintptr : 394
- SYS_shmget : uintptr : 395
- SYS_shmctl : uintptr : 396
- SYS_shmat : uintptr : 397
- SYS_shmdt : uintptr : 398
- SYS_msgget : uintptr : 399
- SYS_msgsnd : uintptr : 400
- SYS_msgrcv : uintptr : 401
- SYS_msgctl : uintptr : 402
- SYS_clock_gettime64 : uintptr : 403
- SYS_clock_settime64 : uintptr : 404
- SYS_clock_adjtime64 : uintptr : 405
- SYS_clock_getres_time64 : uintptr : 406
- SYS_clock_nanosleep_time64 : uintptr : 407
- SYS_timer_gettime64 : uintptr : 408
- SYS_timer_settime64 : uintptr : 409
- SYS_timerfd_gettime64 : uintptr : 410
- SYS_timerfd_settime64 : uintptr : 411
- SYS_utimensat_time64 : uintptr : 412
- SYS_pselect6_time64 : uintptr : 413
- SYS_ppoll_time64 : uintptr : 414
- SYS_io_pgetevents_time64 : uintptr : 416
- SYS_recvmmsg_time64 : uintptr : 417
- SYS_mq_timedsend_time64 : uintptr : 418
- SYS_mq_timedreceive_time64 : uintptr : 419
- SYS_semtimedop_time64 : uintptr : 420
- SYS_rt_sigtimedwait_time64 : uintptr : 421
- SYS_futex_time64 : uintptr : 422
- SYS_sched_rr_get_interval_time64 : uintptr : 423
- SYS_pidfd_send_signal : uintptr : 424
- SYS_io_uring_setup : uintptr : 425
- SYS_io_uring_enter : uintptr : 426
- SYS_io_uring_register : uintptr : 427
- SYS_open_tree : uintptr : 428
- SYS_move_mount : uintptr : 429
- SYS_fsopen : uintptr : 430
- SYS_fsconfig : uintptr : 431
- SYS_fsmount : uintptr : 432
- SYS_fspick : uintptr : 433
- SYS_pidfd_open : uintptr : 434
- SYS_clone3 : uintptr : 435
- SYS_close_range : uintptr : 436
- SYS_openat2 : uintptr : 437
- SYS_pidfd_getfd : uintptr : 438
- SYS_faccessat2 : uintptr : 439
- SYS_process_madvise : uintptr : 440
- SYS_epoll_pwait2 : uintptr : 441
- SYS_mount_setattr : uintptr : 442
- SYS_landlock_create_ruleset : uintptr : 444
- SYS_landlock_add_rule : uintptr : 445
- SYS_landlock_restrict_self : uintptr : 446
- SYS_memfd_secret : uintptr : 447
- } else when ODIN_ARCH == .arm32 { // TODO
- SYS_restart_syscall : uintptr : 0
- SYS_exit : uintptr : 1
- SYS_fork : uintptr : 2
- SYS_read : uintptr : 3
- SYS_write : uintptr : 4
- SYS_open : uintptr : 5
- SYS_close : uintptr : 6
- SYS_creat : uintptr : 8
- SYS_link : uintptr : 9
- SYS_unlink : uintptr : 10
- SYS_execve : uintptr : 11
- SYS_chdir : uintptr : 12
- SYS_mknod : uintptr : 14
- SYS_chmod : uintptr : 15
- SYS_lchown : uintptr : 16
- SYS_lseek : uintptr : 19
- SYS_getpid : uintptr : 20
- SYS_mount : uintptr : 21
- SYS_setuid : uintptr : 23
- SYS_getuid : uintptr : 24
- SYS_ptrace : uintptr : 26
- SYS_pause : uintptr : 29
- SYS_access : uintptr : 33
- SYS_nice : uintptr : 34
- SYS_sync : uintptr : 36
- SYS_kill : uintptr : 37
- SYS_rename : uintptr : 38
- SYS_mkdir : uintptr : 39
- SYS_rmdir : uintptr : 40
- SYS_dup : uintptr : 41
- SYS_pipe : uintptr : 42
- SYS_times : uintptr : 43
- SYS_brk : uintptr : 45
- SYS_setgid : uintptr : 46
- SYS_getgid : uintptr : 47
- SYS_geteuid : uintptr : 49
- SYS_getegid : uintptr : 50
- SYS_acct : uintptr : 51
- SYS_umount2 : uintptr : 52
- SYS_ioctl : uintptr : 54
- SYS_fcntl : uintptr : 55
- SYS_setpgid : uintptr : 57
- SYS_umask : uintptr : 60
- SYS_chroot : uintptr : 61
- SYS_ustat : uintptr : 62
- SYS_dup2 : uintptr : 63
- SYS_getppid : uintptr : 64
- SYS_getpgrp : uintptr : 65
- SYS_setsid : uintptr : 66
- SYS_sigaction : uintptr : 67
- SYS_setreuid : uintptr : 70
- SYS_setregid : uintptr : 71
- SYS_sigsuspend : uintptr : 72
- SYS_sigpending : uintptr : 73
- SYS_sethostname : uintptr : 74
- SYS_setrlimit : uintptr : 75
- SYS_getrusage : uintptr : 77
- SYS_gettimeofday : uintptr : 78
- SYS_settimeofday : uintptr : 79
- SYS_getgroups : uintptr : 80
- SYS_setgroups : uintptr : 81
- SYS_symlink : uintptr : 83
- SYS_readlink : uintptr : 85
- SYS_uselib : uintptr : 86
- SYS_swapon : uintptr : 87
- SYS_reboot : uintptr : 88
- SYS_munmap : uintptr : 91
- SYS_truncate : uintptr : 92
- SYS_ftruncate : uintptr : 93
- SYS_fchmod : uintptr : 94
- SYS_fchown : uintptr : 95
- SYS_getpriority : uintptr : 96
- SYS_setpriority : uintptr : 97
- SYS_statfs : uintptr : 99
- SYS_fstatfs : uintptr : 100
- SYS_syslog : uintptr : 103
- SYS_setitimer : uintptr : 104
- SYS_getitimer : uintptr : 105
- SYS_stat : uintptr : 106
- SYS_lstat : uintptr : 107
- SYS_fstat : uintptr : 108
- SYS_vhangup : uintptr : 111
- SYS_wait4 : uintptr : 114
- SYS_swapoff : uintptr : 115
- SYS_sysinfo : uintptr : 116
- SYS_fsync : uintptr : 118
- SYS_sigreturn : uintptr : 119
- SYS_clone : uintptr : 120
- SYS_setdomainname : uintptr : 121
- SYS_uname : uintptr : 122
- SYS_adjtimex : uintptr : 124
- SYS_mprotect : uintptr : 125
- SYS_sigprocmask : uintptr : 126
- SYS_init_module : uintptr : 128
- SYS_delete_module : uintptr : 129
- SYS_quotactl : uintptr : 131
- SYS_getpgid : uintptr : 132
- SYS_fchdir : uintptr : 133
- SYS_bdflush : uintptr : 134
- SYS_sysfs : uintptr : 135
- SYS_personality : uintptr : 136
- SYS_setfsuid : uintptr : 138
- SYS_setfsgid : uintptr : 139
- SYS__llseek : uintptr : 140
- SYS_getdents : uintptr : 141
- SYS__newselect : uintptr : 142
- SYS_flock : uintptr : 143
- SYS_msync : uintptr : 144
- SYS_readv : uintptr : 145
- SYS_writev : uintptr : 146
- SYS_getsid : uintptr : 147
- SYS_fdatasync : uintptr : 148
- SYS__sysctl : uintptr : 149
- SYS_mlock : uintptr : 150
- SYS_munlock : uintptr : 151
- SYS_mlockall : uintptr : 152
- SYS_munlockall : uintptr : 153
- SYS_sched_setparam : uintptr : 154
- SYS_sched_getparam : uintptr : 155
- SYS_sched_setscheduler : uintptr : 156
- SYS_sched_getscheduler : uintptr : 157
- SYS_sched_yield : uintptr : 158
- SYS_sched_get_priority_max : uintptr : 159
- SYS_sched_get_priority_min : uintptr : 160
- SYS_sched_rr_get_interval : uintptr : 161
- SYS_nanosleep : uintptr : 162
- SYS_mremap : uintptr : 163
- SYS_setresuid : uintptr : 164
- SYS_getresuid : uintptr : 165
- SYS_poll : uintptr : 168
- SYS_nfsservctl : uintptr : 169
- SYS_setresgid : uintptr : 170
- SYS_getresgid : uintptr : 171
- SYS_prctl : uintptr : 172
- SYS_rt_sigreturn : uintptr : 173
- SYS_rt_sigaction : uintptr : 174
- SYS_rt_sigprocmask : uintptr : 175
- SYS_rt_sigpending : uintptr : 176
- SYS_rt_sigtimedwait : uintptr : 177
- SYS_rt_sigqueueinfo : uintptr : 178
- SYS_rt_sigsuspend : uintptr : 179
- SYS_pread64 : uintptr : 180
- SYS_pwrite64 : uintptr : 181
- SYS_chown : uintptr : 182
- SYS_getcwd : uintptr : 183
- SYS_capget : uintptr : 184
- SYS_capset : uintptr : 185
- SYS_sigaltstack : uintptr : 186
- SYS_sendfile : uintptr : 187
- SYS_vfork : uintptr : 190
- SYS_ugetrlimit : uintptr : 191
- SYS_mmap : uintptr : 192 // actually mmap2
- SYS_truncate64 : uintptr : 193
- SYS_ftruncate64 : uintptr : 194
- SYS_stat64 : uintptr : 195
- SYS_lstat64 : uintptr : 196
- SYS_fstat64 : uintptr : 197
- SYS_lchown32 : uintptr : 198
- SYS_getuid32 : uintptr : 199
- SYS_getgid32 : uintptr : 200
- SYS_geteuid32 : uintptr : 201
- SYS_getegid32 : uintptr : 202
- SYS_setreuid32 : uintptr : 203
- SYS_setregid32 : uintptr : 204
- SYS_getgroups32 : uintptr : 205
- SYS_setgroups32 : uintptr : 206
- SYS_fchown32 : uintptr : 207
- SYS_setresuid32 : uintptr : 208
- SYS_getresuid32 : uintptr : 209
- SYS_setresgid32 : uintptr : 210
- SYS_getresgid32 : uintptr : 211
- SYS_chown32 : uintptr : 212
- SYS_setuid32 : uintptr : 213
- SYS_setgid32 : uintptr : 214
- SYS_setfsuid32 : uintptr : 215
- SYS_setfsgid32 : uintptr : 216
- SYS_getdents64 : uintptr : 217
- SYS_pivot_root : uintptr : 218
- SYS_mincore : uintptr : 219
- SYS_madvise : uintptr : 220
- SYS_fcntl64 : uintptr : 221
- SYS_gettid : uintptr : 224
- SYS_readahead : uintptr : 225
- SYS_setxattr : uintptr : 226
- SYS_lsetxattr : uintptr : 227
- SYS_fsetxattr : uintptr : 228
- SYS_getxattr : uintptr : 229
- SYS_lgetxattr : uintptr : 230
- SYS_fgetxattr : uintptr : 231
- SYS_listxattr : uintptr : 232
- SYS_llistxattr : uintptr : 233
- SYS_flistxattr : uintptr : 234
- SYS_removexattr : uintptr : 235
- SYS_lremovexattr : uintptr : 236
- SYS_fremovexattr : uintptr : 237
- SYS_tkill : uintptr : 238
- SYS_sendfile64 : uintptr : 239
- SYS_futex : uintptr : 240
- SYS_sched_setaffinity : uintptr : 241
- SYS_sched_getaffinity : uintptr : 242
- SYS_io_setup : uintptr : 243
- SYS_io_destroy : uintptr : 244
- SYS_io_getevents : uintptr : 245
- SYS_io_submit : uintptr : 246
- SYS_io_cancel : uintptr : 247
- SYS_exit_group : uintptr : 248
- SYS_lookup_dcookie : uintptr : 249
- SYS_epoll_create : uintptr : 250
- SYS_epoll_ctl : uintptr : 251
- SYS_epoll_wait : uintptr : 252
- SYS_remap_file_pages : uintptr : 253
- SYS_set_tid_address : uintptr : 256
- SYS_timer_create : uintptr : 257
- SYS_timer_settime : uintptr : 258
- SYS_timer_gettime : uintptr : 259
- SYS_timer_getoverrun : uintptr : 260
- SYS_timer_delete : uintptr : 261
- SYS_clock_settime : uintptr : 262
- SYS_clock_gettime : uintptr : 263
- SYS_clock_getres : uintptr : 264
- SYS_clock_nanosleep : uintptr : 265
- SYS_statfs64 : uintptr : 266
- SYS_fstatfs64 : uintptr : 267
- SYS_tgkill : uintptr : 268
- SYS_utimes : uintptr : 269
- SYS_fadvise64_64 : uintptr : 270
- SYS_pciconfig_iobase : uintptr : 271
- SYS_pciconfig_read : uintptr : 272
- SYS_pciconfig_write : uintptr : 273
- SYS_mq_open : uintptr : 274
- SYS_mq_unlink : uintptr : 275
- SYS_mq_timedsend : uintptr : 276
- SYS_mq_timedreceive : uintptr : 277
- SYS_mq_notify : uintptr : 278
- SYS_mq_getsetattr : uintptr : 279
- SYS_waitid : uintptr : 280
- SYS_socket : uintptr : 281
- SYS_bind : uintptr : 282
- SYS_connect : uintptr : 283
- SYS_listen : uintptr : 284
- SYS_accept : uintptr : 285
- SYS_getsockname : uintptr : 286
- SYS_getpeername : uintptr : 287
- SYS_socketpair : uintptr : 288
- SYS_send : uintptr : 289
- SYS_sendto : uintptr : 290
- SYS_recv : uintptr : 291
- SYS_recvfrom : uintptr : 292
- SYS_shutdown : uintptr : 293
- SYS_setsockopt : uintptr : 294
- SYS_getsockopt : uintptr : 295
- SYS_sendmsg : uintptr : 296
- SYS_recvmsg : uintptr : 297
- SYS_semop : uintptr : 298
- SYS_semget : uintptr : 299
- SYS_semctl : uintptr : 300
- SYS_msgsnd : uintptr : 301
- SYS_msgrcv : uintptr : 302
- SYS_msgget : uintptr : 303
- SYS_msgctl : uintptr : 304
- SYS_shmat : uintptr : 305
- SYS_shmdt : uintptr : 306
- SYS_shmget : uintptr : 307
- SYS_shmctl : uintptr : 308
- SYS_add_key : uintptr : 309
- SYS_request_key : uintptr : 310
- SYS_keyctl : uintptr : 311
- SYS_semtimedop : uintptr : 312
- SYS_vserver : uintptr : 313
- SYS_ioprio_set : uintptr : 314
- SYS_ioprio_get : uintptr : 315
- SYS_inotify_init : uintptr : 316
- SYS_inotify_add_watch : uintptr : 317
- SYS_inotify_rm_watch : uintptr : 318
- SYS_mbind : uintptr : 319
- SYS_get_mempolicy : uintptr : 320
- SYS_set_mempolicy : uintptr : 321
- SYS_openat : uintptr : 322
- SYS_mkdirat : uintptr : 323
- SYS_mknodat : uintptr : 324
- SYS_fchownat : uintptr : 325
- SYS_futimesat : uintptr : 326
- SYS_fstatat64 : uintptr : 327
- SYS_unlinkat : uintptr : 328
- SYS_renameat : uintptr : 329
- SYS_linkat : uintptr : 330
- SYS_symlinkat : uintptr : 331
- SYS_readlinkat : uintptr : 332
- SYS_fchmodat : uintptr : 333
- SYS_faccessat : uintptr : 334
- SYS_pselect6 : uintptr : 335
- SYS_ppoll : uintptr : 336
- SYS_unshare : uintptr : 337
- SYS_set_robust_list : uintptr : 338
- SYS_get_robust_list : uintptr : 339
- SYS_splice : uintptr : 340
- SYS_sync_file_range : uintptr : 341
- SYS_tee : uintptr : 342
- SYS_vmsplice : uintptr : 343
- SYS_move_pages : uintptr : 344
- SYS_getcpu : uintptr : 345
- SYS_epoll_pwait : uintptr : 346
- SYS_kexec_load : uintptr : 347
- SYS_utimensat : uintptr : 348
- SYS_signalfd : uintptr : 349
- SYS_timerfd_create : uintptr : 350
- SYS_eventfd : uintptr : 351
- SYS_fallocate : uintptr : 352
- SYS_timerfd_settime : uintptr : 353
- SYS_timerfd_gettime : uintptr : 354
- SYS_signalfd4 : uintptr : 355
- SYS_eventfd2 : uintptr : 356
- SYS_epoll_create1 : uintptr : 357
- SYS_dup3 : uintptr : 358
- SYS_pipe2 : uintptr : 359
- SYS_inotify_init1 : uintptr : 360
- SYS_preadv : uintptr : 361
- SYS_pwritev : uintptr : 362
- SYS_rt_tgsigqueueinfo : uintptr : 363
- SYS_perf_event_open : uintptr : 364
- SYS_recvmmsg : uintptr : 365
- SYS_accept4 : uintptr : 366
- SYS_fanotify_init : uintptr : 367
- SYS_fanotify_mark : uintptr : 368
- SYS_prlimit64 : uintptr : 369
- SYS_name_to_handle_at : uintptr : 370
- SYS_open_by_handle_at : uintptr : 371
- SYS_clock_adjtime : uintptr : 372
- SYS_syncfs : uintptr : 373
- SYS_sendmmsg : uintptr : 374
- SYS_setns : uintptr : 375
- SYS_process_vm_readv : uintptr : 376
- SYS_process_vm_writev : uintptr : 377
- SYS_kcmp : uintptr : 378
- SYS_finit_module : uintptr : 379
- SYS_sched_setattr : uintptr : 380
- SYS_sched_getattr : uintptr : 381
- SYS_renameat2 : uintptr : 382
- SYS_seccomp : uintptr : 383
- SYS_getrandom : uintptr : 384
- SYS_memfd_create : uintptr : 385
- SYS_bpf : uintptr : 386
- SYS_execveat : uintptr : 387
- SYS_userfaultfd : uintptr : 388
- SYS_membarrier : uintptr : 389
- SYS_mlock2 : uintptr : 390
- SYS_copy_file_range : uintptr : 391
- SYS_preadv2 : uintptr : 392
- SYS_pwritev2 : uintptr : 393
- SYS_pkey_mprotect : uintptr : 394
- SYS_pkey_alloc : uintptr : 395
- SYS_pkey_free : uintptr : 396
- SYS_statx : uintptr : 397
- SYS_rseq : uintptr : 398
- SYS_io_pgetevents : uintptr : 399
- SYS_migrate_pages : uintptr : 400
- SYS_kexec_file_load : uintptr : 401
- SYS_clock_gettime64 : uintptr : 403
- SYS_clock_settime64 : uintptr : 404
- SYS_clock_adjtime64 : uintptr : 405
- SYS_clock_getres_time64 : uintptr : 406
- SYS_clock_nanosleep_time64 : uintptr : 407
- SYS_timer_gettime64 : uintptr : 408
- SYS_timer_settime64 : uintptr : 409
- SYS_timerfd_gettime64 : uintptr : 410
- SYS_timerfd_settime64 : uintptr : 411
- SYS_utimensat_time64 : uintptr : 412
- SYS_pselect6_time64 : uintptr : 413
- SYS_ppoll_time64 : uintptr : 414
- SYS_io_pgetevents_time64 : uintptr : 416
- SYS_recvmmsg_time64 : uintptr : 417
- SYS_mq_timedsend_time64 : uintptr : 418
- SYS_mq_timedreceive_time64 : uintptr : 419
- SYS_semtimedop_time64 : uintptr : 420
- SYS_rt_sigtimedwait_time64 : uintptr : 421
- SYS_futex_time64 : uintptr : 422
- SYS_sched_rr_get_interval_time64 : uintptr : 423
- SYS_pidfd_send_signal : uintptr : 424
- SYS_io_uring_setup : uintptr : 425
- SYS_io_uring_enter : uintptr : 426
- SYS_io_uring_register : uintptr : 427
- SYS_open_tree : uintptr : 428
- SYS_move_mount : uintptr : 429
- SYS_fsopen : uintptr : 430
- SYS_fsconfig : uintptr : 431
- SYS_fsmount : uintptr : 432
- SYS_fspick : uintptr : 433
- SYS_pidfd_open : uintptr : 434
- SYS_clone3 : uintptr : 435
- SYS_close_range : uintptr : 436
- SYS_openat2 : uintptr : 437
- SYS_pidfd_getfd : uintptr : 438
- SYS_faccessat2 : uintptr : 439
- SYS_process_madvise : uintptr : 440
- SYS_epoll_pwait2 : uintptr : 441
- SYS_mount_setattr : uintptr : 442
- SYS_landlock_create_ruleset : uintptr : 444
- SYS_landlock_add_rule : uintptr : 445
- SYS_landlock_restrict_self : uintptr : 446
- } else {
- #panic("Unsupported architecture")
- }
- // syscall related constants
- AT_FDCWD :: ~uintptr(99)
- AT_REMOVEDIR :: uintptr(0x200)
- AT_SYMLINK_FOLLOW :: uintptr(0x400)
- AT_SYMLINK_NOFOLLOW :: uintptr(0x100)
- // mmap flags
- PROT_NONE :: 0x0
- PROT_READ :: 0x1
- PROT_WRITE :: 0x2
- PROT_EXEC :: 0x4
- PROT_GROWSDOWN :: 0x01000000
- PROT_GROWSUP :: 0x02000000
- MAP_FIXED :: 0x10
- MAP_SHARED :: 0x1
- MAP_PRIVATE :: 0x2
- MAP_SHARED_VALIDATE :: 0x3
- MAP_ANONYMOUS :: 0x20
- // mremap flags
- MREMAP_MAYMOVE :: 1
- MREMAP_FIXED :: 2
- MREMAP_DONTUNMAP :: 4
- // madvise flags
- MADV_NORMAL :: 0
- MADV_RANDOM :: 1
- MADV_SEQUENTIAL :: 2
- MADV_WILLNEED :: 3
- MADV_DONTNEED :: 4
- MADV_FREE :: 8
- MADV_REMOVE :: 9
- MADV_DONTFORK :: 10
- MADV_DOFORK :: 11
- MADV_MERGEABLE :: 12
- MADV_UNMERGEABLE :: 13
- MADV_HUGEPAGE :: 14
- MADV_NOHUGEPAGE :: 15
- MADV_DONTDUMP :: 16
- MADV_DODUMP :: 17
- MADV_WIPEONFORK :: 18
- MADV_KEEPONFORK :: 19
- MADV_HWPOISON :: 100
- // pipe2 flags
- O_CLOEXEC :: 0o2000000
- // poll events
- POLLIN :: 0x0001
- POLLPRI :: 0x0002
- POLLOUT :: 0x0004
- POLLERR :: 0x0008
- POLLHUP :: 0x0010
- POLLNVAL :: 0x0020
- POLLRDNORM :: 0x0040
- POLLRDBAND :: 0x0080
- POLLWRNORM :: 0x0100
- POLLWRBAND :: 0x0200
- POLLMSG :: 0x0400
- POLLREMOVE :: 0x1000
- POLLRDHUP :: 0x2000
- POLLFREE :: 0x4000
- POLL_BUSY_LOOP :: 0x8000
- // perf event data
- Perf_Sample :: struct #raw_union {
- period: u64,
- frequency: u64,
- }
- Perf_Wakeup :: struct #raw_union {
- events: u32,
- watermark: u32,
- }
- Perf_Field1 :: struct #raw_union {
- breakpoint_addr: u64,
- kprobe_func: u64,
- uprobe_path: u64,
- config1: u64,
- }
- Perf_Field2 :: struct #raw_union {
- breakpoint_len: u64,
- kprobe_addr: u64,
- uprobe_offset: u64,
- config2: u64,
- }
- Perf_Event_Attr :: struct #packed {
- type: u32,
- size: u32,
- config: u64,
- sample: Perf_Sample,
- sample_type: u64,
- read_format: u64,
- flags: Perf_Flags,
- wakeup: Perf_Wakeup,
- breakpoint_type: u32,
- field1: Perf_Field1,
- field2: Perf_Field2,
- branch_sample_type: u64,
- sample_regs_user: u64,
- sample_stack_user: u32,
- clock_id: i32,
- sample_regs_intr: u64,
- aux_watermark: u32,
- sample_max_stack: u16,
- _padding: u16,
- }
- Perf_Event_Flags :: distinct bit_set[Perf_Event_Flag; u64]
- Perf_Event_Flag :: enum u64 {
- Bit0 = 0,
- Bit0_Is_Deprecated = 1,
- User_Rdpmc = 2,
- User_Time = 3,
- User_Time_Zero = 4,
- User_Time_Short = 5,
- }
- Perf_Capabilities :: struct #raw_union {
- capabilities: u64,
- flags: Perf_Event_Flags,
- }
- Perf_Event_mmap_Page :: struct #packed {
- version: u32,
- compat_version: u32,
- lock: u32,
- index: u32,
- offset: i64,
- time_enabled: u64,
- time_running: u64,
- cap: Perf_Capabilities,
- pmc_width: u16,
- time_shift: u16,
- time_mult: u32,
- time_offset: u64,
- time_zero: u64,
- size: u32,
- reserved1: u32,
- time_cycles: u64,
- time_mask: u64,
- reserved2: [116*8]u8,
- data_head: u64,
- data_tail: u64,
- data_offset: u64,
- data_size: u64,
- aux_head: u64,
- aux_tail: u64,
- aux_offset: u64,
- aux_size: u64,
- }
- Perf_Type_Id :: enum u32 {
- Hardware = 0,
- Software = 1,
- Tracepoint = 2,
- HW_Cache = 3,
- Raw = 4,
- Breakpoint = 5,
- }
- Perf_Hardware_Id :: enum u64 {
- CPU_Cycles = 0,
- Instructions = 1,
- Cache_References = 2,
- Cache_Misses = 3,
- Branch_Instructions = 4,
- Branch_Misses = 5,
- Bus_Cycles = 6,
- Stalled_Cycles_Frontend = 7,
- Stalled_Cycles_Backend = 8,
- Ref_CPU_Cycles = 9,
- }
- Perf_Flags :: distinct bit_set[Perf_Flag; u64]
- Perf_Flag :: enum u64 {
- Disabled = 0,
- Inherit = 1,
- Pinned = 2,
- Exclusive = 3,
- Exclude_User = 4,
- Exclude_Kernel = 5,
- Exclude_HV = 6,
- Exclude_Idle = 7,
- mmap = 8,
- Comm = 9,
- Freq = 10,
- Inherit_Stat = 11,
- Enable_On_Exec = 12,
- Task = 13,
- Watermark = 14,
- Precise_IP_0 = 15,
- Precise_IP_1 = 16,
- mmap_Data = 17,
- Sample_Id_All = 18,
- Exclude_Host = 19,
- Exclude_Guest = 20,
- Exclude_Callchain_Kernel = 21,
- Exclude_Callchain_User = 22,
- mmap2 = 23,
- Comm_Exec = 24,
- Use_Clockid = 25,
- Context_Switch = 26,
- Write_Backward = 27,
- Namespaces = 28,
- KSymbol = 29,
- BPF_Event = 30,
- Aux_Output = 31,
- CGroup = 32,
- Text_Poke = 33,
- Build_Id = 34,
- Inherit_Thread = 35,
- Remove_On_Exec = 36,
- Sigtrap = 37,
- }
- sys_gettid :: proc "contextless" () -> int {
- return int(intrinsics.syscall(SYS_gettid))
- }
- sys_getrandom :: proc "contextless" (buf: [^]byte, buflen: uint, flags: int) -> int {
- return int(intrinsics.syscall(SYS_getrandom, uintptr(buf), uintptr(buflen), uintptr(flags)))
- }
- sys_open :: proc "contextless" (path: cstring, flags: int, mode: uint = 0o000) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_open, uintptr(rawptr(path)), uintptr(flags), uintptr(mode)))
- } else { // NOTE: arm64 does not have open
- return int(intrinsics.syscall(SYS_openat, AT_FDCWD, uintptr(rawptr(path)), uintptr(flags), uintptr(mode)))
- }
- }
- sys_openat :: proc "contextless" (dfd: int, path: cstring, flags: int, mode: uint = 0o000) -> int {
- return int(intrinsics.syscall(SYS_openat, uintptr(dfd), uintptr(rawptr(path)), uintptr(flags), uintptr(mode)))
- }
- sys_close :: proc "contextless" (fd: int) -> int {
- return int(intrinsics.syscall(SYS_close, uintptr(fd)))
- }
- sys_read :: proc "contextless" (fd: int, buf: rawptr, size: uint) -> int {
- return int(intrinsics.syscall(SYS_read, uintptr(fd), uintptr(buf), uintptr(size)))
- }
- sys_pread :: proc "contextless" (fd: int, buf: rawptr, size: uint, offset: i64) -> int {
- when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 {
- return int(intrinsics.syscall(SYS_pread64, uintptr(fd), uintptr(buf), uintptr(size), uintptr(offset)))
- } else {
- low := uintptr(offset & 0xFFFFFFFF)
- high := uintptr(offset >> 32)
- return int(intrinsics.syscall(SYS_pread64, uintptr(fd), uintptr(buf), uintptr(size), high, low))
- }
- }
- sys_write :: proc "contextless" (fd: int, buf: rawptr, size: uint) -> int {
- return int(intrinsics.syscall(SYS_write, uintptr(fd), uintptr(buf), uintptr(size)))
- }
- sys_pwrite :: proc "contextless" (fd: int, buf: rawptr, size: uint, offset: i64) -> int {
- when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 {
- return int(intrinsics.syscall(SYS_pwrite64, uintptr(fd), uintptr(buf), uintptr(size), uintptr(offset)))
- } else {
- low := uintptr(offset & 0xFFFFFFFF)
- high := uintptr(offset >> 32)
- return int(intrinsics.syscall(SYS_pwrite64, uintptr(fd), uintptr(buf), uintptr(size), high, low))
- }
- }
- sys_lseek :: proc "contextless" (fd: int, offset: i64, whence: int) -> i64 {
- when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 {
- return i64(intrinsics.syscall(SYS_lseek, uintptr(fd), uintptr(offset), uintptr(whence)))
- } else {
- low := uintptr(offset & 0xFFFFFFFF)
- high := uintptr(offset >> 32)
- result: i64
- res := i64(intrinsics.syscall(SYS__llseek, uintptr(fd), high, low, uintptr(&result), uintptr(whence)))
- return res if res < 0 else result
- }
- }
- sys_stat :: proc "contextless" (path: cstring, stat: rawptr) -> int {
- when ODIN_ARCH == .amd64 {
- return int(intrinsics.syscall(SYS_stat, uintptr(rawptr(path)), uintptr(stat)))
- } else when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_stat64, uintptr(rawptr(path)), uintptr(stat)))
- } else { // NOTE: arm64 does not have stat
- return int(intrinsics.syscall(SYS_fstatat, AT_FDCWD, uintptr(rawptr(path)), uintptr(stat), 0))
- }
- }
- sys_fstat :: proc "contextless" (fd: int, stat: rawptr) -> int {
- when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 {
- return int(intrinsics.syscall(SYS_fstat, uintptr(fd), uintptr(stat)))
- } else {
- return int(intrinsics.syscall(SYS_fstat64, uintptr(fd), uintptr(stat)))
- }
- }
- sys_lstat :: proc "contextless" (path: cstring, stat: rawptr) -> int {
- when ODIN_ARCH == .amd64 {
- return int(intrinsics.syscall(SYS_lstat, uintptr(rawptr(path)), uintptr(stat)))
- } else when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_lstat64, uintptr(rawptr(path)), uintptr(stat)))
- } else { // NOTE: arm64 does not have any lstat
- return int(intrinsics.syscall(SYS_fstatat, AT_FDCWD, uintptr(rawptr(path)), uintptr(stat), AT_SYMLINK_NOFOLLOW))
- }
- }
- sys_readlink :: proc "contextless" (path: cstring, buf: rawptr, bufsiz: uint) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_readlink, uintptr(rawptr(path)), uintptr(buf), uintptr(bufsiz)))
- } else { // NOTE: arm64 does not have readlink
- return int(intrinsics.syscall(SYS_readlinkat, AT_FDCWD, uintptr(rawptr(path)), uintptr(buf), uintptr(bufsiz)))
- }
- }
- sys_symlink :: proc "contextless" (old_name: cstring, new_name: cstring) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_symlink, uintptr(rawptr(old_name)), uintptr(rawptr(new_name))))
- } else { // NOTE: arm64 does not have symlink
- return int(intrinsics.syscall(SYS_symlinkat, uintptr(rawptr(old_name)), AT_FDCWD, uintptr(rawptr(new_name))))
- }
- }
- sys_access :: proc "contextless" (path: cstring, mask: int) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_access, uintptr(rawptr(path)), uintptr(mask)))
- } else { // NOTE: arm64 does not have access
- return int(intrinsics.syscall(SYS_faccessat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mask)))
- }
- }
- sys_getcwd :: proc "contextless" (buf: rawptr, size: uint) -> int {
- return int(intrinsics.syscall(SYS_getcwd, uintptr(buf), uintptr(size)))
- }
- sys_chdir :: proc "contextless" (path: cstring) -> int {
- return int(intrinsics.syscall(SYS_chdir, uintptr(rawptr(path))))
- }
- sys_fchdir :: proc "contextless" (fd: int) -> int {
- return int(intrinsics.syscall(SYS_fchdir, uintptr(fd)))
- }
- sys_chmod :: proc "contextless" (path: cstring, mode: uint) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_chmod, uintptr(rawptr(path)), uintptr(mode)))
- } else { // NOTE: arm64 does not have chmod
- return int(intrinsics.syscall(SYS_fchmodat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mode)))
- }
- }
- sys_fchmod :: proc "contextless" (fd: int, mode: uint) -> int {
- return int(intrinsics.syscall(SYS_fchmod, uintptr(fd), uintptr(mode)))
- }
- sys_chown :: proc "contextless" (path: cstring, user: int, group: int) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_chown, uintptr(rawptr(path)), uintptr(user), uintptr(group)))
- } else { // NOTE: arm64 does not have chown
- return int(intrinsics.syscall(SYS_fchownat, AT_FDCWD, uintptr(rawptr(path)), uintptr(user), uintptr(group), 0))
- }
- }
- sys_fchown :: proc "contextless" (fd: int, user: int, group: int) -> int {
- return int(intrinsics.syscall(SYS_fchown, uintptr(fd), uintptr(user), uintptr(group)))
- }
- sys_lchown :: proc "contextless" (path: cstring, user: int, group: int) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_lchown, uintptr(rawptr(path)), uintptr(user), uintptr(group)))
- } else { // NOTE: arm64 does not have lchown
- return int(intrinsics.syscall(SYS_fchownat, AT_FDCWD, uintptr(rawptr(path)), uintptr(user), uintptr(group), AT_SYMLINK_NOFOLLOW))
- }
- }
- sys_rename :: proc "contextless" (old, new: cstring) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_rename, uintptr(rawptr(old)), uintptr(rawptr(new))))
- } else { // NOTE: arm64 does not have rename
- return int(intrinsics.syscall(SYS_renameat, AT_FDCWD, uintptr(rawptr(old)), uintptr(rawptr(new))))
- }
- }
- sys_link :: proc "contextless" (old_name: cstring, new_name: cstring) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_link, uintptr(rawptr(old_name)), uintptr(rawptr(new_name))))
- } else { // NOTE: arm64 does not have link
- return int(intrinsics.syscall(SYS_linkat, AT_FDCWD, uintptr(rawptr(old_name)), AT_FDCWD, uintptr(rawptr(new_name)), AT_SYMLINK_FOLLOW))
- }
- }
- sys_unlink :: proc "contextless" (path: cstring) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_unlink, uintptr(rawptr(path))))
- } else { // NOTE: arm64 does not have unlink
- return int(intrinsics.syscall(SYS_unlinkat, AT_FDCWD, uintptr(rawptr(path)), 0))
- }
- }
- sys_unlinkat :: proc "contextless" (dfd: int, path: cstring, flag: int = 0) -> int {
- return int(intrinsics.syscall(SYS_unlinkat, uintptr(dfd), uintptr(rawptr(path)), uintptr(flag)))
- }
- sys_rmdir :: proc "contextless" (path: cstring) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_rmdir, uintptr(rawptr(path))))
- } else { // NOTE: arm64 does not have rmdir
- return int(intrinsics.syscall(SYS_unlinkat, AT_FDCWD, uintptr(rawptr(path)), AT_REMOVEDIR))
- }
- }
- sys_mkdir :: proc "contextless" (path: cstring, mode: uint) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_mkdir, uintptr(rawptr(path)), uintptr(mode)))
- } else { // NOTE: arm64 does not have mkdir
- return int(intrinsics.syscall(SYS_mkdirat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mode)))
- }
- }
- sys_mkdirat :: proc "contextless" (dfd: int, path: cstring, mode: uint) -> int {
- return int(intrinsics.syscall(SYS_mkdirat, uintptr(dfd), uintptr(rawptr(path)), uintptr(mode)))
- }
- sys_mknod :: proc "contextless" (path: cstring, mode: uint, dev: int) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_mknod, uintptr(rawptr(path)), uintptr(mode), uintptr(dev)))
- } else { // NOTE: arm64 does not have mknod
- return int(intrinsics.syscall(SYS_mknodat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mode), uintptr(dev)))
- }
- }
- sys_mknodat :: proc "contextless" (dfd: int, path: cstring, mode: uint, dev: int) -> int {
- return int(intrinsics.syscall(SYS_mknodat, uintptr(dfd), uintptr(rawptr(path)), uintptr(mode), uintptr(dev)))
- }
- sys_truncate :: proc "contextless" (path: cstring, length: i64) -> int {
- when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 {
- return int(intrinsics.syscall(SYS_truncate, uintptr(rawptr(path)), uintptr(length)))
- } else {
- low := uintptr(length & 0xFFFFFFFF)
- high := uintptr(length >> 32)
- return int(intrinsics.syscall(SYS_truncate64, uintptr(rawptr(path)), high, low))
- }
- }
- sys_ftruncate :: proc "contextless" (fd: int, length: i64) -> int {
- when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 {
- return int(intrinsics.syscall(SYS_ftruncate, uintptr(fd), uintptr(length)))
- } else {
- low := uintptr(length & 0xFFFFFFFF)
- high := uintptr(length >> 32)
- return int(intrinsics.syscall(SYS_ftruncate64, uintptr(fd), high, low))
- }
- }
- sys_fsync :: proc "contextless" (fd: int) -> int {
- return int(intrinsics.syscall(SYS_fsync, uintptr(fd)))
- }
- sys_getdents64 :: proc "contextless" (fd: int, dirent: rawptr, count: int) -> int {
- return int(intrinsics.syscall(SYS_getdents64, uintptr(fd), uintptr(dirent), uintptr(count)))
- }
- sys_fork :: proc "contextless" () -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_fork))
- } else {
- return int(intrinsics.syscall(SYS_clone, SIGCHLD))
- }
- }
- sys_pipe2 :: proc "contextless" (fds: rawptr, flags: int) -> int {
- return int(intrinsics.syscall(SYS_pipe2, uintptr(fds), uintptr(flags)))
- }
- sys_dup2 :: proc "contextless" (oldfd: int, newfd: int) -> int {
- when ODIN_ARCH != .arm64 {
- return int(intrinsics.syscall(SYS_dup2, uintptr(oldfd), uintptr(newfd)))
- } else {
- return int(intrinsics.syscall(SYS_dup3, uintptr(oldfd), uintptr(newfd), 0))
- }
- }
- sys_mmap :: proc "contextless" (addr: rawptr, length: uint, prot, flags, fd: int, offset: uintptr) -> int {
- return int(intrinsics.syscall(SYS_mmap, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), offset))
- }
- sys_mremap :: proc "contextless" (addr: rawptr, old_length, new_length: uint, flags: int, new_addr: rawptr = nil) -> int {
- return int(intrinsics.syscall(SYS_mremap, uintptr(addr), uintptr(old_length), uintptr(new_length), uintptr(flags), uintptr(new_addr)))
- }
- sys_munmap :: proc "contextless" (addr: rawptr, length: uint) -> int {
- return int(intrinsics.syscall(SYS_munmap, uintptr(addr), uintptr(length)))
- }
- sys_mprotect :: proc "contextless" (addr: rawptr, length: uint, prot: int) -> int {
- return int(intrinsics.syscall(SYS_mprotect, uintptr(addr), uintptr(length), uintptr(prot)))
- }
- sys_madvise :: proc "contextless" (addr: rawptr, length: uint, advice: int) -> int {
- return int(intrinsics.syscall(SYS_madvise, uintptr(addr), uintptr(length), uintptr(advice)))
- }
- // NOTE: Unsure about if this works directly on 32 bit archs. It may need 32 bit version of the time struct.
- // As of Linux 5.1, there is a utimensat_time64 function. Maybe use this in the future?
- sys_utimensat :: proc "contextless" (dfd: int, path: cstring, times: rawptr, flags: int) -> int {
- return int(intrinsics.syscall(SYS_utimensat, uintptr(dfd), uintptr(rawptr(path)), uintptr(times), uintptr(flags)))
- }
- sys_socket :: proc "contextless" (domain: int, type: int, protocol: int) -> int {
- return int(intrinsics.syscall(SYS_socket, uintptr(domain), uintptr(type), uintptr(protocol)))
- }
- sys_connect :: proc "contextless" (sd: int, addr: rawptr, len: i32) -> int {
- return int(intrinsics.syscall(SYS_connect, uintptr(sd), uintptr(addr), uintptr(len)))
- }
- sys_accept :: proc "contextless" (sd: int, addr: rawptr, len: rawptr) -> int {
- return int(intrinsics.syscall(SYS_accept4, uintptr(sd), uintptr(addr), uintptr(len), uintptr(0)))
- }
- sys_listen :: proc "contextless" (sd: int, backlog: int) -> int {
- return int(intrinsics.syscall(SYS_listen, uintptr(sd), uintptr(backlog)))
- }
- sys_bind :: proc "contextless" (sd: int, addr: rawptr, len: i32) -> int {
- return int(intrinsics.syscall(SYS_bind, uintptr(sd), uintptr(addr), uintptr(len)))
- }
- sys_setsockopt :: proc "contextless" (sd: int, level: int, optname: int, optval: rawptr, optlen: i32) -> int {
- return int(intrinsics.syscall(SYS_setsockopt, uintptr(sd), uintptr(level), uintptr(optname), uintptr(optval), uintptr(optlen)))
- }
- sys_recvfrom :: proc "contextless" (sd: int, buf: rawptr, len: uint, flags: int, addr: rawptr, alen: uintptr) -> i64 {
- return i64(intrinsics.syscall(SYS_recvfrom, uintptr(sd), uintptr(buf), uintptr(len), uintptr(flags), uintptr(addr), uintptr(alen)))
- }
- sys_sendto :: proc "contextless" (sd: int, buf: rawptr, len: uint, flags: int, addr: rawptr, alen: i32) -> i64 {
- return i64(intrinsics.syscall(SYS_sendto, uintptr(sd), uintptr(buf), uintptr(len), uintptr(flags), uintptr(addr), uintptr(alen)))
- }
- sys_shutdown :: proc "contextless" (sd: int, how: int) -> int {
- return int(intrinsics.syscall(SYS_shutdown, uintptr(sd), uintptr(how)))
- }
- sys_perf_event_open :: proc "contextless" (event_attr: rawptr, pid: i32, cpu: i32, group_fd: i32, flags: u32) -> int {
- return int(intrinsics.syscall(SYS_perf_event_open, uintptr(event_attr), uintptr(pid), uintptr(cpu), uintptr(group_fd), uintptr(flags)))
- }
- sys_personality :: proc(persona: u64) -> int {
- return int(intrinsics.syscall(SYS_personality, uintptr(persona)))
- }
- sys_fcntl :: proc "contextless" (fd: int, cmd: int, arg: int) -> int {
- return int(intrinsics.syscall(SYS_fcntl, uintptr(fd), uintptr(cmd), uintptr(arg)))
- }
- sys_poll :: proc "contextless" (fds: rawptr, nfds: uint, timeout: int) -> int {
- // NOTE: specialcased here because `arm64` does not have `poll`
- when ODIN_ARCH == .arm64 {
- seconds := i64(timeout / 1_000)
- nanoseconds := i64((timeout % 1000) * 1_000_000)
- timeout_spec := timespec{seconds, nanoseconds}
-
- return int(intrinsics.syscall(SYS_ppoll, uintptr(fds), uintptr(nfds), uintptr(&timeout_spec), uintptr(0), uintptr(8)))
- } else {
- return int(intrinsics.syscall(SYS_poll, uintptr(fds), uintptr(nfds), uintptr(timeout)))
- }
- }
- sys_ppoll :: proc "contextless" (fds: rawptr, nfds: uint, timeout: rawptr, sigmask: rawptr, sigsetsize: uint) -> int {
- return int(intrinsics.syscall(SYS_ppoll, uintptr(fds), uintptr(nfds), uintptr(timeout), uintptr(sigmask), uintptr(sigsetsize)))
- }
- get_errno :: proc "contextless" (res: int) -> i32 {
- if res < 0 && res > -4096 {
- return i32(-res)
- }
- return 0
- }
|