syscalls_linux.odin 82 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431
  1. package unix
  2. import "base:intrinsics"
  3. // Linux has inconsistent system call numbering across architectures,
  4. // for largely historical reasons. This attempts to provide a unified
  5. // Odin-side interface for system calls that are required for the core
  6. // library to work.
  7. // For authorative system call numbers, the following files in the kernel
  8. // source can be used:
  9. //
  10. // amd64: arch/x86/entry/syscalls/syscall_64.tbl
  11. // arm64: include/uapi/asm-generic/unistd.h
  12. // 386: arch/x86/entry/syscalls/sycall_32.tbl
  13. // arm: arch/arm/tools/syscall.tbl
  14. when ODIN_ARCH == .amd64 {
  15. SYS_read : uintptr : 0
  16. SYS_write : uintptr : 1
  17. SYS_open : uintptr : 2
  18. SYS_close : uintptr : 3
  19. SYS_stat : uintptr : 4
  20. SYS_fstat : uintptr : 5
  21. SYS_lstat : uintptr : 6
  22. SYS_poll : uintptr : 7
  23. SYS_lseek : uintptr : 8
  24. SYS_mmap : uintptr : 9
  25. SYS_mprotect : uintptr : 10
  26. SYS_munmap : uintptr : 11
  27. SYS_brk : uintptr : 12
  28. SYS_rt_sigaction : uintptr : 13
  29. SYS_rt_sigprocmask : uintptr : 14
  30. SYS_rt_sigreturn : uintptr : 15
  31. SYS_ioctl : uintptr : 16
  32. SYS_pread64 : uintptr : 17
  33. SYS_pwrite64 : uintptr : 18
  34. SYS_readv : uintptr : 19
  35. SYS_writev : uintptr : 20
  36. SYS_access : uintptr : 21
  37. SYS_pipe : uintptr : 22
  38. SYS_select : uintptr : 23
  39. SYS_sched_yield : uintptr : 24
  40. SYS_mremap : uintptr : 25
  41. SYS_msync : uintptr : 26
  42. SYS_mincore : uintptr : 27
  43. SYS_madvise : uintptr : 28
  44. SYS_shmget : uintptr : 29
  45. SYS_shmat : uintptr : 30
  46. SYS_shmctl : uintptr : 31
  47. SYS_dup : uintptr : 32
  48. SYS_dup2 : uintptr : 33
  49. SYS_pause : uintptr : 34
  50. SYS_nanosleep : uintptr : 35
  51. SYS_getitimer : uintptr : 36
  52. SYS_alarm : uintptr : 37
  53. SYS_setitimer : uintptr : 38
  54. SYS_getpid : uintptr : 39
  55. SYS_sendfile : uintptr : 40
  56. SYS_socket : uintptr : 41
  57. SYS_connect : uintptr : 42
  58. SYS_accept : uintptr : 43
  59. SYS_sendto : uintptr : 44
  60. SYS_recvfrom : uintptr : 45
  61. SYS_sendmsg : uintptr : 46
  62. SYS_recvmsg : uintptr : 47
  63. SYS_shutdown : uintptr : 48
  64. SYS_bind : uintptr : 49
  65. SYS_listen : uintptr : 50
  66. SYS_getsockname : uintptr : 51
  67. SYS_getpeername : uintptr : 52
  68. SYS_socketpair : uintptr : 53
  69. SYS_setsockopt : uintptr : 54
  70. SYS_getsockopt : uintptr : 55
  71. SYS_clone : uintptr : 56
  72. SYS_fork : uintptr : 57
  73. SYS_vfork : uintptr : 58
  74. SYS_execve : uintptr : 59
  75. SYS_exit : uintptr : 60
  76. SYS_wait4 : uintptr : 61
  77. SYS_kill : uintptr : 62
  78. SYS_uname : uintptr : 63
  79. SYS_semget : uintptr : 64
  80. SYS_semop : uintptr : 65
  81. SYS_semctl : uintptr : 66
  82. SYS_shmdt : uintptr : 67
  83. SYS_msgget : uintptr : 68
  84. SYS_msgsnd : uintptr : 69
  85. SYS_msgrcv : uintptr : 70
  86. SYS_msgctl : uintptr : 71
  87. SYS_fcntl : uintptr : 72
  88. SYS_flock : uintptr : 73
  89. SYS_fsync : uintptr : 74
  90. SYS_fdatasync : uintptr : 75
  91. SYS_truncate : uintptr : 76
  92. SYS_ftruncate : uintptr : 77
  93. SYS_getdents : uintptr : 78
  94. SYS_getcwd : uintptr : 79
  95. SYS_chdir : uintptr : 80
  96. SYS_fchdir : uintptr : 81
  97. SYS_rename : uintptr : 82
  98. SYS_mkdir : uintptr : 83
  99. SYS_rmdir : uintptr : 84
  100. SYS_creat : uintptr : 85
  101. SYS_link : uintptr : 86
  102. SYS_unlink : uintptr : 87
  103. SYS_symlink : uintptr : 88
  104. SYS_readlink : uintptr : 89
  105. SYS_chmod : uintptr : 90
  106. SYS_fchmod : uintptr : 91
  107. SYS_chown : uintptr : 92
  108. SYS_fchown : uintptr : 93
  109. SYS_lchown : uintptr : 94
  110. SYS_umask : uintptr : 95
  111. SYS_gettimeofday : uintptr : 96
  112. SYS_getrlimit : uintptr : 97
  113. SYS_getrusage : uintptr : 98
  114. SYS_sysinfo : uintptr : 99
  115. SYS_times : uintptr : 100
  116. SYS_ptrace : uintptr : 101
  117. SYS_getuid : uintptr : 102
  118. SYS_syslog : uintptr : 103
  119. SYS_getgid : uintptr : 104
  120. SYS_setuid : uintptr : 105
  121. SYS_setgid : uintptr : 106
  122. SYS_geteuid : uintptr : 107
  123. SYS_getegid : uintptr : 108
  124. SYS_setpgid : uintptr : 109
  125. SYS_getppid : uintptr : 110
  126. SYS_getpgrp : uintptr : 111
  127. SYS_setsid : uintptr : 112
  128. SYS_setreuid : uintptr : 113
  129. SYS_setregid : uintptr : 114
  130. SYS_getgroups : uintptr : 115
  131. SYS_setgroups : uintptr : 116
  132. SYS_setresuid : uintptr : 117
  133. SYS_getresuid : uintptr : 118
  134. SYS_setresgid : uintptr : 119
  135. SYS_getresgid : uintptr : 120
  136. SYS_getpgid : uintptr : 121
  137. SYS_setfsuid : uintptr : 122
  138. SYS_setfsgid : uintptr : 123
  139. SYS_getsid : uintptr : 124
  140. SYS_capget : uintptr : 125
  141. SYS_capset : uintptr : 126
  142. SYS_rt_sigpending : uintptr : 127
  143. SYS_rt_sigtimedwait : uintptr : 128
  144. SYS_rt_sigqueueinfo : uintptr : 129
  145. SYS_rt_sigsuspend : uintptr : 130
  146. SYS_sigaltstack : uintptr : 131
  147. SYS_utime : uintptr : 132
  148. SYS_mknod : uintptr : 133
  149. SYS_uselib : uintptr : 134
  150. SYS_personality : uintptr : 135
  151. SYS_ustat : uintptr : 136
  152. SYS_statfs : uintptr : 137
  153. SYS_fstatfs : uintptr : 138
  154. SYS_sysfs : uintptr : 139
  155. SYS_getpriority : uintptr : 140
  156. SYS_setpriority : uintptr : 141
  157. SYS_sched_setparam : uintptr : 142
  158. SYS_sched_getparam : uintptr : 143
  159. SYS_sched_setscheduler : uintptr : 144
  160. SYS_sched_getscheduler : uintptr : 145
  161. SYS_sched_get_priority_max : uintptr : 146
  162. SYS_sched_get_priority_min : uintptr : 147
  163. SYS_sched_rr_get_interval : uintptr : 148
  164. SYS_mlock : uintptr : 149
  165. SYS_munlock : uintptr : 150
  166. SYS_mlockall : uintptr : 151
  167. SYS_munlockall : uintptr : 152
  168. SYS_vhangup : uintptr : 153
  169. SYS_modify_ldt : uintptr : 154
  170. SYS_pivot_root : uintptr : 155
  171. SYS__sysctl : uintptr : 156
  172. SYS_prctl : uintptr : 157
  173. SYS_arch_prctl : uintptr : 158
  174. SYS_adjtimex : uintptr : 159
  175. SYS_setrlimit : uintptr : 160
  176. SYS_chroot : uintptr : 161
  177. SYS_sync : uintptr : 162
  178. SYS_acct : uintptr : 163
  179. SYS_settimeofday : uintptr : 164
  180. SYS_mount : uintptr : 165
  181. SYS_umount2 : uintptr : 166
  182. SYS_swapon : uintptr : 167
  183. SYS_swapoff : uintptr : 168
  184. SYS_reboot : uintptr : 169
  185. SYS_sethostname : uintptr : 170
  186. SYS_setdomainname : uintptr : 171
  187. SYS_iopl : uintptr : 172
  188. SYS_ioperm : uintptr : 173
  189. SYS_create_module : uintptr : 174
  190. SYS_init_module : uintptr : 175
  191. SYS_delete_module : uintptr : 176
  192. SYS_get_kernel_syms : uintptr : 177
  193. SYS_query_module : uintptr : 178
  194. SYS_quotactl : uintptr : 179
  195. SYS_nfsservctl : uintptr : 180
  196. SYS_getpmsg : uintptr : 181
  197. SYS_putpmsg : uintptr : 182
  198. SYS_afs_syscall : uintptr : 183
  199. SYS_tuxcall : uintptr : 184
  200. SYS_security : uintptr : 185
  201. SYS_gettid : uintptr : 186
  202. SYS_readahead : uintptr : 187
  203. SYS_setxattr : uintptr : 188
  204. SYS_lsetxattr : uintptr : 189
  205. SYS_fsetxattr : uintptr : 190
  206. SYS_getxattr : uintptr : 191
  207. SYS_lgetxattr : uintptr : 192
  208. SYS_fgetxattr : uintptr : 193
  209. SYS_listxattr : uintptr : 194
  210. SYS_llistxattr : uintptr : 195
  211. SYS_flistxattr : uintptr : 196
  212. SYS_removexattr : uintptr : 197
  213. SYS_lremovexattr : uintptr : 198
  214. SYS_fremovexattr : uintptr : 199
  215. SYS_tkill : uintptr : 200
  216. SYS_time : uintptr : 201
  217. SYS_futex : uintptr : 202
  218. SYS_sched_setaffinity : uintptr : 203
  219. SYS_sched_getaffinity : uintptr : 204
  220. SYS_set_thread_area : uintptr : 205
  221. SYS_io_setup : uintptr : 206
  222. SYS_io_destroy : uintptr : 207
  223. SYS_io_getevents : uintptr : 208
  224. SYS_io_submit : uintptr : 209
  225. SYS_io_cancel : uintptr : 210
  226. SYS_get_thread_area : uintptr : 211
  227. SYS_lookup_dcookie : uintptr : 212
  228. SYS_epoll_create : uintptr : 213
  229. SYS_epoll_ctl_old : uintptr : 214
  230. SYS_epoll_wait_old : uintptr : 215
  231. SYS_remap_file_pages : uintptr : 216
  232. SYS_getdents64 : uintptr : 217
  233. SYS_set_tid_address : uintptr : 218
  234. SYS_restart_syscall : uintptr : 219
  235. SYS_semtimedop : uintptr : 220
  236. SYS_fadvise64 : uintptr : 221
  237. SYS_timer_create : uintptr : 222
  238. SYS_timer_settime : uintptr : 223
  239. SYS_timer_gettime : uintptr : 224
  240. SYS_timer_getoverrun : uintptr : 225
  241. SYS_timer_delete : uintptr : 226
  242. SYS_clock_settime : uintptr : 227
  243. SYS_clock_gettime : uintptr : 228
  244. SYS_clock_getres : uintptr : 229
  245. SYS_clock_nanosleep : uintptr : 230
  246. SYS_exit_group : uintptr : 231
  247. SYS_epoll_wait : uintptr : 232
  248. SYS_epoll_ctl : uintptr : 233
  249. SYS_tgkill : uintptr : 234
  250. SYS_utimes : uintptr : 235
  251. SYS_vserver : uintptr : 236
  252. SYS_mbind : uintptr : 237
  253. SYS_set_mempolicy : uintptr : 238
  254. SYS_get_mempolicy : uintptr : 239
  255. SYS_mq_open : uintptr : 240
  256. SYS_mq_unlink : uintptr : 241
  257. SYS_mq_timedsend : uintptr : 242
  258. SYS_mq_timedreceive : uintptr : 243
  259. SYS_mq_notify : uintptr : 244
  260. SYS_mq_getsetattr : uintptr : 245
  261. SYS_kexec_load : uintptr : 246
  262. SYS_waitid : uintptr : 247
  263. SYS_add_key : uintptr : 248
  264. SYS_request_key : uintptr : 249
  265. SYS_keyctl : uintptr : 250
  266. SYS_ioprio_set : uintptr : 251
  267. SYS_ioprio_get : uintptr : 252
  268. SYS_inotify_init : uintptr : 253
  269. SYS_inotify_add_watch : uintptr : 254
  270. SYS_inotify_rm_watch : uintptr : 255
  271. SYS_migrate_pages : uintptr : 256
  272. SYS_openat : uintptr : 257
  273. SYS_mkdirat : uintptr : 258
  274. SYS_mknodat : uintptr : 259
  275. SYS_fchownat : uintptr : 260
  276. SYS_futimesat : uintptr : 261
  277. SYS_fstatat : uintptr : 262
  278. SYS_unlinkat : uintptr : 263
  279. SYS_renameat : uintptr : 264
  280. SYS_linkat : uintptr : 265
  281. SYS_symlinkat : uintptr : 266
  282. SYS_readlinkat : uintptr : 267
  283. SYS_fchmodat : uintptr : 268
  284. SYS_faccessat : uintptr : 269
  285. SYS_pselect6 : uintptr : 270
  286. SYS_ppoll : uintptr : 271
  287. SYS_unshare : uintptr : 272
  288. SYS_set_robust_list : uintptr : 273
  289. SYS_get_robust_list : uintptr : 274
  290. SYS_splice : uintptr : 275
  291. SYS_tee : uintptr : 276
  292. SYS_sync_file_range : uintptr : 277
  293. SYS_vmsplice : uintptr : 278
  294. SYS_move_pages : uintptr : 279
  295. SYS_utimensat : uintptr : 280
  296. SYS_epoll_pwait : uintptr : 281
  297. SYS_signalfd : uintptr : 282
  298. SYS_timerfd_create : uintptr : 283
  299. SYS_eventfd : uintptr : 284
  300. SYS_fallocate : uintptr : 285
  301. SYS_timerfd_settime : uintptr : 286
  302. SYS_timerfd_gettime : uintptr : 287
  303. SYS_accept4 : uintptr : 288
  304. SYS_signalfd4 : uintptr : 289
  305. SYS_eventfd2 : uintptr : 290
  306. SYS_epoll_create1 : uintptr : 291
  307. SYS_dup3 : uintptr : 292
  308. SYS_pipe2 : uintptr : 293
  309. SYS_inotify_init1 : uintptr : 294
  310. SYS_preadv : uintptr : 295
  311. SYS_pwritev : uintptr : 296
  312. SYS_rt_tgsigqueueinfo : uintptr : 297
  313. SYS_perf_event_open : uintptr : 298
  314. SYS_recvmmsg : uintptr : 299
  315. SYS_fanotify_init : uintptr : 300
  316. SYS_fanotify_mark : uintptr : 301
  317. SYS_prlimit64 : uintptr : 302
  318. SYS_name_to_handle_at : uintptr : 303
  319. SYS_open_by_handle_at : uintptr : 304
  320. SYS_clock_adjtime : uintptr : 305
  321. SYS_syncfs : uintptr : 306
  322. SYS_sendmmsg : uintptr : 307
  323. SYS_setns : uintptr : 308
  324. SYS_getcpu : uintptr : 309
  325. SYS_process_vm_readv : uintptr : 310
  326. SYS_process_vm_writev : uintptr : 311
  327. SYS_kcmp : uintptr : 312
  328. SYS_finit_module : uintptr : 313
  329. SYS_sched_setattr : uintptr : 314
  330. SYS_sched_getattr : uintptr : 315
  331. SYS_renameat2 : uintptr : 316
  332. SYS_seccomp : uintptr : 317
  333. SYS_getrandom : uintptr : 318
  334. SYS_memfd_create : uintptr : 319
  335. SYS_kexec_file_load : uintptr : 320
  336. SYS_bpf : uintptr : 321
  337. SYS_execveat : uintptr : 322
  338. SYS_userfaultfd : uintptr : 323
  339. SYS_membarrier : uintptr : 324
  340. SYS_mlock2 : uintptr : 325
  341. SYS_copy_file_range : uintptr : 326
  342. SYS_preadv2 : uintptr : 327
  343. SYS_pwritev2 : uintptr : 328
  344. SYS_pkey_mprotect : uintptr : 329
  345. SYS_pkey_alloc : uintptr : 330
  346. SYS_pkey_free : uintptr : 331
  347. SYS_statx : uintptr : 332
  348. SYS_io_pgetevents : uintptr : 333
  349. SYS_rseq : uintptr : 334
  350. SYS_pidfd_send_signal : uintptr : 424
  351. SYS_io_uring_setup : uintptr : 425
  352. SYS_io_uring_enter : uintptr : 426
  353. SYS_io_uring_register : uintptr : 427
  354. SYS_open_tree : uintptr : 428
  355. SYS_move_mount : uintptr : 429
  356. SYS_fsopen : uintptr : 430
  357. SYS_fsconfig : uintptr : 431
  358. SYS_fsmount : uintptr : 432
  359. SYS_fspick : uintptr : 433
  360. SYS_pidfd_open : uintptr : 434
  361. SYS_clone3 : uintptr : 435
  362. SYS_close_range : uintptr : 436
  363. SYS_openat2 : uintptr : 437
  364. SYS_pidfd_getfd : uintptr : 438
  365. SYS_faccessat2 : uintptr : 439
  366. SYS_process_madvise : uintptr : 440
  367. SYS_epoll_pwait2 : uintptr : 441
  368. SYS_mount_setattr : uintptr : 442
  369. SYS_landlock_create_ruleset : uintptr : 444
  370. SYS_landlock_add_rule : uintptr : 445
  371. SYS_landlock_restrict_self : uintptr : 446
  372. SYS_memfd_secret : uintptr : 447
  373. } else when ODIN_ARCH == .arm64 {
  374. SYS_io_setup : uintptr : 0
  375. SYS_io_destroy : uintptr : 1
  376. SYS_io_submit : uintptr : 2
  377. SYS_io_cancel : uintptr : 3
  378. SYS_io_getevents : uintptr : 4
  379. SYS_setxattr : uintptr : 5
  380. SYS_lsetxattr : uintptr : 6
  381. SYS_fsetxattr : uintptr : 7
  382. SYS_getxattr : uintptr : 8
  383. SYS_lgetxattr : uintptr : 9
  384. SYS_fgetxattr : uintptr : 10
  385. SYS_listxattr : uintptr : 11
  386. SYS_llistxattr : uintptr : 12
  387. SYS_flistxattr : uintptr : 13
  388. SYS_removexattr : uintptr : 14
  389. SYS_lremovexattr : uintptr : 15
  390. SYS_fremovexattr : uintptr : 16
  391. SYS_getcwd : uintptr : 17
  392. SYS_lookup_dcookie : uintptr : 18
  393. SYS_eventfd2 : uintptr : 19
  394. SYS_epoll_create1 : uintptr : 20
  395. SYS_epoll_ctl : uintptr : 21
  396. SYS_epoll_pwait : uintptr : 22
  397. SYS_dup : uintptr : 23
  398. SYS_dup3 : uintptr : 24
  399. SYS_fcntl : uintptr : 25
  400. SYS_inotify_init1 : uintptr : 26
  401. SYS_inotify_add_watch : uintptr : 27
  402. SYS_inotify_rm_watch : uintptr : 28
  403. SYS_ioctl : uintptr : 29
  404. SYS_ioprio_set : uintptr : 30
  405. SYS_ioprio_get : uintptr : 31
  406. SYS_flock : uintptr : 32
  407. SYS_mknodat : uintptr : 33
  408. SYS_mkdirat : uintptr : 34
  409. SYS_unlinkat : uintptr : 35
  410. SYS_symlinkat : uintptr : 36
  411. SYS_linkat : uintptr : 37
  412. SYS_renameat : uintptr : 38
  413. SYS_umount2 : uintptr : 39
  414. SYS_mount : uintptr : 40
  415. SYS_pivot_root : uintptr : 41
  416. SYS_nfsservctl : uintptr : 42
  417. SYS_statfs : uintptr : 43
  418. SYS_fstatfs : uintptr : 44
  419. SYS_truncate : uintptr : 45
  420. SYS_ftruncate : uintptr : 46
  421. SYS_fallocate : uintptr : 47
  422. SYS_faccessat : uintptr : 48
  423. SYS_chdir : uintptr : 49
  424. SYS_fchdir : uintptr : 50
  425. SYS_chroot : uintptr : 51
  426. SYS_fchmod : uintptr : 52
  427. SYS_fchmodat : uintptr : 53
  428. SYS_fchownat : uintptr : 54
  429. SYS_fchown : uintptr : 55
  430. SYS_openat : uintptr : 56
  431. SYS_close : uintptr : 57
  432. SYS_vhangup : uintptr : 58
  433. SYS_pipe2 : uintptr : 59
  434. SYS_quotactl : uintptr : 60
  435. SYS_getdents64 : uintptr : 61
  436. SYS_lseek : uintptr : 62
  437. SYS_read : uintptr : 63
  438. SYS_write : uintptr : 64
  439. SYS_readv : uintptr : 65
  440. SYS_writev : uintptr : 66
  441. SYS_pread64 : uintptr : 67
  442. SYS_pwrite64 : uintptr : 68
  443. SYS_preadv : uintptr : 69
  444. SYS_pwritev : uintptr : 70
  445. SYS_sendfile : uintptr : 71
  446. SYS_pselect6 : uintptr : 72
  447. SYS_ppoll : uintptr : 73
  448. SYS_signalfd4 : uintptr : 74
  449. SYS_vmsplice : uintptr : 75
  450. SYS_splice : uintptr : 76
  451. SYS_tee : uintptr : 77
  452. SYS_readlinkat : uintptr : 78
  453. SYS_fstatat : uintptr : 79
  454. SYS_fstat : uintptr : 80
  455. SYS_sync : uintptr : 81
  456. SYS_fsync : uintptr : 82
  457. SYS_fdatasync : uintptr : 83
  458. SYS_sync_file_range : uintptr : 84
  459. SYS_timerfd_create : uintptr : 85
  460. SYS_timerfd_settime : uintptr : 86
  461. SYS_timerfd_gettime : uintptr : 87
  462. SYS_utimensat : uintptr : 88
  463. SYS_acct : uintptr : 89
  464. SYS_capget : uintptr : 90
  465. SYS_capset : uintptr : 91
  466. SYS_personality : uintptr : 92
  467. SYS_exit : uintptr : 93
  468. SYS_exit_group : uintptr : 94
  469. SYS_waitid : uintptr : 95
  470. SYS_set_tid_address : uintptr : 96
  471. SYS_unshare : uintptr : 97
  472. SYS_futex : uintptr : 98
  473. SYS_set_robust_list : uintptr : 99
  474. SYS_get_robust_list : uintptr : 100
  475. SYS_nanosleep : uintptr : 101
  476. SYS_getitimer : uintptr : 102
  477. SYS_setitimer : uintptr : 103
  478. SYS_kexec_load : uintptr : 104
  479. SYS_init_module : uintptr : 105
  480. SYS_delete_module : uintptr : 106
  481. SYS_timer_create : uintptr : 107
  482. SYS_timer_gettime : uintptr : 108
  483. SYS_timer_getoverrun : uintptr : 109
  484. SYS_timer_settime : uintptr : 110
  485. SYS_timer_delete : uintptr : 111
  486. SYS_clock_settime : uintptr : 112
  487. SYS_clock_gettime : uintptr : 113
  488. SYS_clock_getres : uintptr : 114
  489. SYS_clock_nanosleep : uintptr : 115
  490. SYS_syslog : uintptr : 116
  491. SYS_ptrace : uintptr : 117
  492. SYS_sched_setparam : uintptr : 118
  493. SYS_sched_setscheduler : uintptr : 119
  494. SYS_sched_getscheduler : uintptr : 120
  495. SYS_sched_getparam : uintptr : 121
  496. SYS_sched_setaffinity : uintptr : 122
  497. SYS_sched_getaffinity : uintptr : 123
  498. SYS_sched_yield : uintptr : 124
  499. SYS_sched_get_priority_max : uintptr : 125
  500. SYS_sched_get_priority_min : uintptr : 126
  501. SYS_sched_rr_get_interval : uintptr : 127
  502. SYS_restart_syscall : uintptr : 128
  503. SYS_kill : uintptr : 129
  504. SYS_tkill : uintptr : 130
  505. SYS_tgkill : uintptr : 131
  506. SYS_sigaltstack : uintptr : 132
  507. SYS_rt_sigsuspend : uintptr : 133
  508. SYS_rt_sigaction : uintptr : 134
  509. SYS_rt_sigprocmask : uintptr : 135
  510. SYS_rt_sigpending : uintptr : 136
  511. SYS_rt_sigtimedwait : uintptr : 137
  512. SYS_rt_sigqueueinfo : uintptr : 138
  513. SYS_rt_sigreturn : uintptr : 139
  514. SYS_setpriority : uintptr : 140
  515. SYS_getpriority : uintptr : 141
  516. SYS_reboot : uintptr : 142
  517. SYS_setregid : uintptr : 143
  518. SYS_setgid : uintptr : 144
  519. SYS_setreuid : uintptr : 145
  520. SYS_setuid : uintptr : 146
  521. SYS_setresuid : uintptr : 147
  522. SYS_getresuid : uintptr : 148
  523. SYS_setresgid : uintptr : 149
  524. SYS_getresgid : uintptr : 150
  525. SYS_setfsuid : uintptr : 151
  526. SYS_setfsgid : uintptr : 152
  527. SYS_times : uintptr : 153
  528. SYS_setpgid : uintptr : 154
  529. SYS_getpgid : uintptr : 155
  530. SYS_getsid : uintptr : 156
  531. SYS_setsid : uintptr : 157
  532. SYS_getgroups : uintptr : 158
  533. SYS_setgroups : uintptr : 159
  534. SYS_uname : uintptr : 160
  535. SYS_sethostname : uintptr : 161
  536. SYS_setdomainname : uintptr : 162
  537. SYS_getrlimit : uintptr : 163
  538. SYS_setrlimit : uintptr : 164
  539. SYS_getrusage : uintptr : 165
  540. SYS_umask : uintptr : 166
  541. SYS_prctl : uintptr : 167
  542. SYS_getcpu : uintptr : 168
  543. SYS_gettimeofday : uintptr : 169
  544. SYS_settimeofday : uintptr : 170
  545. SYS_adjtimex : uintptr : 171
  546. SYS_getpid : uintptr : 172
  547. SYS_getppid : uintptr : 173
  548. SYS_getuid : uintptr : 174
  549. SYS_geteuid : uintptr : 175
  550. SYS_getgid : uintptr : 176
  551. SYS_getegid : uintptr : 177
  552. SYS_gettid : uintptr : 178
  553. SYS_sysinfo : uintptr : 179
  554. SYS_mq_open : uintptr : 180
  555. SYS_mq_unlink : uintptr : 181
  556. SYS_mq_timedsend : uintptr : 182
  557. SYS_mq_timedreceive : uintptr : 183
  558. SYS_mq_notify : uintptr : 184
  559. SYS_mq_getsetattr : uintptr : 185
  560. SYS_msgget : uintptr : 186
  561. SYS_msgctl : uintptr : 187
  562. SYS_msgrcv : uintptr : 188
  563. SYS_msgsnd : uintptr : 189
  564. SYS_semget : uintptr : 190
  565. SYS_semctl : uintptr : 191
  566. SYS_semtimedop : uintptr : 192
  567. SYS_semop : uintptr : 193
  568. SYS_shmget : uintptr : 194
  569. SYS_shmctl : uintptr : 195
  570. SYS_shmat : uintptr : 196
  571. SYS_shmdt : uintptr : 197
  572. SYS_socket : uintptr : 198
  573. SYS_socketpair : uintptr : 199
  574. SYS_bind : uintptr : 200
  575. SYS_listen : uintptr : 201
  576. SYS_accept : uintptr : 202
  577. SYS_connect : uintptr : 203
  578. SYS_getsockname : uintptr : 204
  579. SYS_getpeername : uintptr : 205
  580. SYS_sendto : uintptr : 206
  581. SYS_recvfrom : uintptr : 207
  582. SYS_setsockopt : uintptr : 208
  583. SYS_getsockopt : uintptr : 209
  584. SYS_shutdown : uintptr : 210
  585. SYS_sendmsg : uintptr : 211
  586. SYS_recvmsg : uintptr : 212
  587. SYS_readahead : uintptr : 213
  588. SYS_brk : uintptr : 214
  589. SYS_munmap : uintptr : 215
  590. SYS_mremap : uintptr : 216
  591. SYS_add_key : uintptr : 217
  592. SYS_request_key : uintptr : 218
  593. SYS_keyctl : uintptr : 219
  594. SYS_clone : uintptr : 220
  595. SYS_execve : uintptr : 221
  596. SYS_mmap : uintptr : 222
  597. SYS_fadvise64 : uintptr : 223
  598. SYS_swapon : uintptr : 224
  599. SYS_swapoff : uintptr : 225
  600. SYS_mprotect : uintptr : 226
  601. SYS_msync : uintptr : 227
  602. SYS_mlock : uintptr : 228
  603. SYS_munlock : uintptr : 229
  604. SYS_mlockall : uintptr : 230
  605. SYS_munlockall : uintptr : 231
  606. SYS_mincore : uintptr : 232
  607. SYS_madvise : uintptr : 233
  608. SYS_remap_file_pages : uintptr : 234
  609. SYS_mbind : uintptr : 235
  610. SYS_get_mempolicy : uintptr : 236
  611. SYS_set_mempolicy : uintptr : 237
  612. SYS_migrate_pages : uintptr : 238
  613. SYS_move_pages : uintptr : 239
  614. SYS_rt_tgsigqueueinfo : uintptr : 240
  615. SYS_perf_event_open : uintptr : 241
  616. SYS_accept4 : uintptr : 242
  617. SYS_recvmmsg : uintptr : 243
  618. SYS_arch_specific_syscall : uintptr : 244
  619. SYS_wait4 : uintptr : 260
  620. SYS_prlimit64 : uintptr : 261
  621. SYS_fanotify_init : uintptr : 262
  622. SYS_fanotify_mark : uintptr : 263
  623. SYS_clock_adjtime : uintptr : 266
  624. SYS_syncfs : uintptr : 267
  625. SYS_setns : uintptr : 268
  626. SYS_sendmmsg : uintptr : 269
  627. SYS_process_vm_readv : uintptr : 270
  628. SYS_process_vm_writev : uintptr : 271
  629. SYS_kcmp : uintptr : 272
  630. SYS_finit_module : uintptr : 273
  631. SYS_sched_setattr : uintptr : 274
  632. SYS_sched_getattr : uintptr : 275
  633. SYS_renameat2 : uintptr : 276
  634. SYS_seccomp : uintptr : 277
  635. SYS_getrandom : uintptr : 278
  636. SYS_memfd_create : uintptr : 279
  637. SYS_bpf : uintptr : 280
  638. SYS_execveat : uintptr : 281
  639. SYS_userfaultfd : uintptr : 282
  640. SYS_membarrier : uintptr : 283
  641. SYS_mlock2 : uintptr : 284
  642. SYS_copy_file_range : uintptr : 285
  643. SYS_preadv2 : uintptr : 286
  644. SYS_pwritev2 : uintptr : 287
  645. SYS_pkey_mprotect : uintptr : 288
  646. SYS_pkey_alloc : uintptr : 289
  647. SYS_pkey_free : uintptr : 290
  648. SYS_statx : uintptr : 291
  649. SYS_io_pgetevents : uintptr : 292
  650. SYS_rseq : uintptr : 293
  651. SYS_kexec_file_load : uintptr : 294
  652. SYS_pidfd_send_signal : uintptr : 424
  653. SYS_io_uring_setup : uintptr : 425
  654. SYS_io_uring_enter : uintptr : 426
  655. SYS_io_uring_register : uintptr : 427
  656. SYS_open_tree : uintptr : 428
  657. SYS_move_mount : uintptr : 429
  658. SYS_fsopen : uintptr : 430
  659. SYS_fsconfig : uintptr : 431
  660. SYS_fsmount : uintptr : 432
  661. SYS_fspick : uintptr : 433
  662. SYS_pidfd_open : uintptr : 434
  663. SYS_clone3 : uintptr : 435
  664. SYS_close_range : uintptr : 436
  665. SYS_openat2 : uintptr : 437
  666. SYS_pidfd_getfd : uintptr : 438
  667. SYS_faccessat2 : uintptr : 439
  668. SYS_process_madvise : uintptr : 440
  669. SYS_epoll_pwait2 : uintptr : 441
  670. SYS_mount_setattr : uintptr : 442
  671. SYS_landlock_create_ruleset : uintptr : 444
  672. SYS_landlock_add_rule : uintptr : 445
  673. SYS_landlock_restrict_self : uintptr : 446
  674. SIGCHLD :: 17
  675. } else when ODIN_ARCH == .i386 {
  676. SYS_restart_syscall : uintptr : 0
  677. SYS_exit : uintptr : 1
  678. SYS_fork : uintptr : 2
  679. SYS_read : uintptr : 3
  680. SYS_write : uintptr : 4
  681. SYS_open : uintptr : 5
  682. SYS_close : uintptr : 6
  683. SYS_waitpid : uintptr : 7
  684. SYS_creat : uintptr : 8
  685. SYS_link : uintptr : 9
  686. SYS_unlink : uintptr : 10
  687. SYS_execve : uintptr : 11
  688. SYS_chdir : uintptr : 12
  689. SYS_time : uintptr : 13
  690. SYS_mknod : uintptr : 14
  691. SYS_chmod : uintptr : 15
  692. SYS_lchown : uintptr : 16
  693. SYS_break : uintptr : 17
  694. SYS_oldstat : uintptr : 18
  695. SYS_lseek : uintptr : 19
  696. SYS_getpid : uintptr : 20
  697. SYS_mount : uintptr : 21
  698. SYS_umount : uintptr : 22
  699. SYS_setuid : uintptr : 23
  700. SYS_getuid : uintptr : 24
  701. SYS_stime : uintptr : 25
  702. SYS_ptrace : uintptr : 26
  703. SYS_alarm : uintptr : 27
  704. SYS_oldfstat : uintptr : 28
  705. SYS_pause : uintptr : 29
  706. SYS_utime : uintptr : 30
  707. SYS_stty : uintptr : 31
  708. SYS_gtty : uintptr : 32
  709. SYS_access : uintptr : 33
  710. SYS_nice : uintptr : 34
  711. SYS_ftime : uintptr : 35
  712. SYS_sync : uintptr : 36
  713. SYS_kill : uintptr : 37
  714. SYS_rename : uintptr : 38
  715. SYS_mkdir : uintptr : 39
  716. SYS_rmdir : uintptr : 40
  717. SYS_dup : uintptr : 41
  718. SYS_pipe : uintptr : 42
  719. SYS_times : uintptr : 43
  720. SYS_prof : uintptr : 44
  721. SYS_brk : uintptr : 45
  722. SYS_setgid : uintptr : 46
  723. SYS_getgid : uintptr : 47
  724. SYS_signal : uintptr : 48
  725. SYS_geteuid : uintptr : 49
  726. SYS_getegid : uintptr : 50
  727. SYS_acct : uintptr : 51
  728. SYS_umount2 : uintptr : 52
  729. SYS_lock : uintptr : 53
  730. SYS_ioctl : uintptr : 54
  731. SYS_fcntl : uintptr : 55
  732. SYS_mpx : uintptr : 56
  733. SYS_setpgid : uintptr : 57
  734. SYS_ulimit : uintptr : 58
  735. SYS_oldolduname : uintptr : 59
  736. SYS_umask : uintptr : 60
  737. SYS_chroot : uintptr : 61
  738. SYS_ustat : uintptr : 62
  739. SYS_dup2 : uintptr : 63
  740. SYS_getppid : uintptr : 64
  741. SYS_getpgrp : uintptr : 65
  742. SYS_setsid : uintptr : 66
  743. SYS_sigaction : uintptr : 67
  744. SYS_sgetmask : uintptr : 68
  745. SYS_ssetmask : uintptr : 69
  746. SYS_setreuid : uintptr : 70
  747. SYS_setregid : uintptr : 71
  748. SYS_sigsuspend : uintptr : 72
  749. SYS_sigpending : uintptr : 73
  750. SYS_sethostname : uintptr : 74
  751. SYS_setrlimit : uintptr : 75
  752. SYS_getrlimit : uintptr : 76
  753. SYS_getrusage : uintptr : 77
  754. SYS_gettimeofday : uintptr : 78
  755. SYS_settimeofday : uintptr : 79
  756. SYS_getgroups : uintptr : 80
  757. SYS_setgroups : uintptr : 81
  758. SYS_select : uintptr : 82
  759. SYS_symlink : uintptr : 83
  760. SYS_oldlstat : uintptr : 84
  761. SYS_readlink : uintptr : 85
  762. SYS_uselib : uintptr : 86
  763. SYS_swapon : uintptr : 87
  764. SYS_reboot : uintptr : 88
  765. SYS_readdir : uintptr : 89
  766. SYS_old_mmap : uintptr : 90 // 90 is "sys_old_mmap", we want mmap2
  767. SYS_munmap : uintptr : 91
  768. SYS_truncate : uintptr : 92
  769. SYS_ftruncate : uintptr : 93
  770. SYS_fchmod : uintptr : 94
  771. SYS_fchown : uintptr : 95
  772. SYS_getpriority : uintptr : 96
  773. SYS_setpriority : uintptr : 97
  774. SYS_profil : uintptr : 98
  775. SYS_statfs : uintptr : 99
  776. SYS_fstatfs : uintptr : 100
  777. SYS_ioperm : uintptr : 101
  778. SYS_socketcall : uintptr : 102
  779. SYS_syslog : uintptr : 103
  780. SYS_setitimer : uintptr : 104
  781. SYS_getitimer : uintptr : 105
  782. SYS_stat : uintptr : 106
  783. SYS_lstat : uintptr : 107
  784. SYS_fstat : uintptr : 108
  785. SYS_olduname : uintptr : 109
  786. SYS_iopl : uintptr : 110
  787. SYS_vhangup : uintptr : 111
  788. SYS_idle : uintptr : 112
  789. SYS_vm86old : uintptr : 113
  790. SYS_wait4 : uintptr : 114
  791. SYS_swapoff : uintptr : 115
  792. SYS_sysinfo : uintptr : 116
  793. SYS_ipc : uintptr : 117
  794. SYS_fsync : uintptr : 118
  795. SYS_sigreturn : uintptr : 119
  796. SYS_clone : uintptr : 120
  797. SYS_setdomainname : uintptr : 121
  798. SYS_uname : uintptr : 122
  799. SYS_modify_ldt : uintptr : 123
  800. SYS_adjtimex : uintptr : 124
  801. SYS_mprotect : uintptr : 125
  802. SYS_sigprocmask : uintptr : 126
  803. SYS_create_module : uintptr : 127
  804. SYS_init_module : uintptr : 128
  805. SYS_delete_module : uintptr : 129
  806. SYS_get_kernel_syms : uintptr : 130
  807. SYS_quotactl : uintptr : 131
  808. SYS_getpgid : uintptr : 132
  809. SYS_fchdir : uintptr : 133
  810. SYS_bdflush : uintptr : 134
  811. SYS_sysfs : uintptr : 135
  812. SYS_personality : uintptr : 136
  813. SYS_afs_syscall : uintptr : 137
  814. SYS_setfsuid : uintptr : 138
  815. SYS_setfsgid : uintptr : 139
  816. SYS__llseek : uintptr : 140
  817. SYS_getdents : uintptr : 141
  818. SYS__newselect : uintptr : 142
  819. SYS_flock : uintptr : 143
  820. SYS_msync : uintptr : 144
  821. SYS_readv : uintptr : 145
  822. SYS_writev : uintptr : 146
  823. SYS_getsid : uintptr : 147
  824. SYS_fdatasync : uintptr : 148
  825. SYS__sysctl : uintptr : 149
  826. SYS_mlock : uintptr : 150
  827. SYS_munlock : uintptr : 151
  828. SYS_mlockall : uintptr : 152
  829. SYS_munlockall : uintptr : 153
  830. SYS_sched_setparam : uintptr : 154
  831. SYS_sched_getparam : uintptr : 155
  832. SYS_sched_setscheduler : uintptr : 156
  833. SYS_sched_getscheduler : uintptr : 157
  834. SYS_sched_yield : uintptr : 158
  835. SYS_sched_get_priority_max : uintptr : 159
  836. SYS_sched_get_priority_min : uintptr : 160
  837. SYS_sched_rr_get_interval : uintptr : 161
  838. SYS_nanosleep : uintptr : 162
  839. SYS_mremap : uintptr : 163
  840. SYS_setresuid : uintptr : 164
  841. SYS_getresuid : uintptr : 165
  842. SYS_vm86 : uintptr : 166
  843. SYS_query_module : uintptr : 167
  844. SYS_poll : uintptr : 168
  845. SYS_nfsservctl : uintptr : 169
  846. SYS_setresgid : uintptr : 170
  847. SYS_getresgid : uintptr : 171
  848. SYS_prctl : uintptr : 172
  849. SYS_rt_sigreturn : uintptr : 173
  850. SYS_rt_sigaction : uintptr : 174
  851. SYS_rt_sigprocmask : uintptr : 175
  852. SYS_rt_sigpending : uintptr : 176
  853. SYS_rt_sigtimedwait : uintptr : 177
  854. SYS_rt_sigqueueinfo : uintptr : 178
  855. SYS_rt_sigsuspend : uintptr : 179
  856. SYS_pread64 : uintptr : 180
  857. SYS_pwrite64 : uintptr : 181
  858. SYS_chown : uintptr : 182
  859. SYS_getcwd : uintptr : 183
  860. SYS_capget : uintptr : 184
  861. SYS_capset : uintptr : 185
  862. SYS_sigaltstack : uintptr : 186
  863. SYS_sendfile : uintptr : 187
  864. SYS_getpmsg : uintptr : 188
  865. SYS_putpmsg : uintptr : 189
  866. SYS_vfork : uintptr : 190
  867. SYS_ugetrlimit : uintptr : 191
  868. SYS_mmap : uintptr : 192 // actually mmap2
  869. SYS_truncate64 : uintptr : 193
  870. SYS_ftruncate64 : uintptr : 194
  871. SYS_stat64 : uintptr : 195
  872. SYS_lstat64 : uintptr : 196
  873. SYS_fstat64 : uintptr : 197
  874. SYS_lchown32 : uintptr : 198
  875. SYS_getuid32 : uintptr : 199
  876. SYS_getgid32 : uintptr : 200
  877. SYS_geteuid32 : uintptr : 201
  878. SYS_getegid32 : uintptr : 202
  879. SYS_setreuid32 : uintptr : 203
  880. SYS_setregid32 : uintptr : 204
  881. SYS_getgroups32 : uintptr : 205
  882. SYS_setgroups32 : uintptr : 206
  883. SYS_fchown32 : uintptr : 207
  884. SYS_setresuid32 : uintptr : 208
  885. SYS_getresuid32 : uintptr : 209
  886. SYS_setresgid32 : uintptr : 210
  887. SYS_getresgid32 : uintptr : 211
  888. SYS_chown32 : uintptr : 212
  889. SYS_setuid32 : uintptr : 213
  890. SYS_setgid32 : uintptr : 214
  891. SYS_setfsuid32 : uintptr : 215
  892. SYS_setfsgid32 : uintptr : 216
  893. SYS_pivot_root : uintptr : 217
  894. SYS_mincore : uintptr : 218
  895. SYS_madvise : uintptr : 219
  896. SYS_getdents64 : uintptr : 220
  897. SYS_fcntl64 : uintptr : 221
  898. SYS_gettid : uintptr : 224
  899. SYS_readahead : uintptr : 225
  900. SYS_setxattr : uintptr : 226
  901. SYS_lsetxattr : uintptr : 227
  902. SYS_fsetxattr : uintptr : 228
  903. SYS_getxattr : uintptr : 229
  904. SYS_lgetxattr : uintptr : 230
  905. SYS_fgetxattr : uintptr : 231
  906. SYS_listxattr : uintptr : 232
  907. SYS_llistxattr : uintptr : 233
  908. SYS_flistxattr : uintptr : 234
  909. SYS_removexattr : uintptr : 235
  910. SYS_lremovexattr : uintptr : 236
  911. SYS_fremovexattr : uintptr : 237
  912. SYS_tkill : uintptr : 238
  913. SYS_sendfile64 : uintptr : 239
  914. SYS_futex : uintptr : 240
  915. SYS_sched_setaffinity : uintptr : 241
  916. SYS_sched_getaffinity : uintptr : 242
  917. SYS_set_thread_area : uintptr : 243
  918. SYS_get_thread_area : uintptr : 244
  919. SYS_io_setup : uintptr : 245
  920. SYS_io_destroy : uintptr : 246
  921. SYS_io_getevents : uintptr : 247
  922. SYS_io_submit : uintptr : 248
  923. SYS_io_cancel : uintptr : 249
  924. SYS_fadvise64 : uintptr : 250
  925. SYS_exit_group : uintptr : 252
  926. SYS_lookup_dcookie : uintptr : 253
  927. SYS_epoll_create : uintptr : 254
  928. SYS_epoll_ctl : uintptr : 255
  929. SYS_epoll_wait : uintptr : 256
  930. SYS_remap_file_pages : uintptr : 257
  931. SYS_set_tid_address : uintptr : 258
  932. SYS_timer_create : uintptr : 259
  933. SYS_timer_settime : uintptr : 260
  934. SYS_timer_gettime : uintptr : 261
  935. SYS_timer_getoverrun : uintptr : 262
  936. SYS_timer_delete : uintptr : 263
  937. SYS_clock_settime : uintptr : 264
  938. SYS_clock_gettime : uintptr : 265
  939. SYS_clock_getres : uintptr : 266
  940. SYS_clock_nanosleep : uintptr : 267
  941. SYS_statfs64 : uintptr : 268
  942. SYS_fstatfs64 : uintptr : 269
  943. SYS_tgkill : uintptr : 270
  944. SYS_utimes : uintptr : 271
  945. SYS_fadvise64_64 : uintptr : 272
  946. SYS_vserver : uintptr : 273
  947. SYS_mbind : uintptr : 274
  948. SYS_get_mempolicy : uintptr : 275
  949. SYS_set_mempolicy : uintptr : 276
  950. SYS_mq_open : uintptr : 277
  951. SYS_mq_unlink : uintptr : 278
  952. SYS_mq_timedsend : uintptr : 279
  953. SYS_mq_timedreceive : uintptr : 280
  954. SYS_mq_notify : uintptr : 281
  955. SYS_mq_getsetattr : uintptr : 282
  956. SYS_kexec_load : uintptr : 283
  957. SYS_waitid : uintptr : 284
  958. SYS_add_key : uintptr : 286
  959. SYS_request_key : uintptr : 287
  960. SYS_keyctl : uintptr : 288
  961. SYS_ioprio_set : uintptr : 289
  962. SYS_ioprio_get : uintptr : 290
  963. SYS_inotify_init : uintptr : 291
  964. SYS_inotify_add_watch : uintptr : 292
  965. SYS_inotify_rm_watch : uintptr : 293
  966. SYS_migrate_pages : uintptr : 294
  967. SYS_openat : uintptr : 295
  968. SYS_mkdirat : uintptr : 296
  969. SYS_mknodat : uintptr : 297
  970. SYS_fchownat : uintptr : 298
  971. SYS_futimesat : uintptr : 299
  972. SYS_fstatat64 : uintptr : 300
  973. SYS_unlinkat : uintptr : 301
  974. SYS_renameat : uintptr : 302
  975. SYS_linkat : uintptr : 303
  976. SYS_symlinkat : uintptr : 304
  977. SYS_readlinkat : uintptr : 305
  978. SYS_fchmodat : uintptr : 306
  979. SYS_faccessat : uintptr : 307
  980. SYS_pselect6 : uintptr : 308
  981. SYS_ppoll : uintptr : 309
  982. SYS_unshare : uintptr : 310
  983. SYS_set_robust_list : uintptr : 311
  984. SYS_get_robust_list : uintptr : 312
  985. SYS_splice : uintptr : 313
  986. SYS_sync_file_range : uintptr : 314
  987. SYS_tee : uintptr : 315
  988. SYS_vmsplice : uintptr : 316
  989. SYS_move_pages : uintptr : 317
  990. SYS_getcpu : uintptr : 318
  991. SYS_epoll_pwait : uintptr : 319
  992. SYS_utimensat : uintptr : 320
  993. SYS_signalfd : uintptr : 321
  994. SYS_timerfd_create : uintptr : 322
  995. SYS_eventfd : uintptr : 323
  996. SYS_fallocate : uintptr : 324
  997. SYS_timerfd_settime : uintptr : 325
  998. SYS_timerfd_gettime : uintptr : 326
  999. SYS_signalfd4 : uintptr : 327
  1000. SYS_eventfd2 : uintptr : 328
  1001. SYS_epoll_create1 : uintptr : 329
  1002. SYS_dup3 : uintptr : 330
  1003. SYS_pipe2 : uintptr : 331
  1004. SYS_inotify_init1 : uintptr : 332
  1005. SYS_preadv : uintptr : 333
  1006. SYS_pwritev : uintptr : 334
  1007. SYS_rt_tgsigqueueinfo : uintptr : 335
  1008. SYS_perf_event_open : uintptr : 336
  1009. SYS_recvmmsg : uintptr : 337
  1010. SYS_fanotify_init : uintptr : 338
  1011. SYS_fanotify_mark : uintptr : 339
  1012. SYS_prlimit64 : uintptr : 340
  1013. SYS_name_to_handle_at : uintptr : 341
  1014. SYS_open_by_handle_at : uintptr : 342
  1015. SYS_clock_adjtime : uintptr : 343
  1016. SYS_syncfs : uintptr : 344
  1017. SYS_sendmmsg : uintptr : 345
  1018. SYS_setns : uintptr : 346
  1019. SYS_process_vm_readv : uintptr : 347
  1020. SYS_process_vm_writev : uintptr : 348
  1021. SYS_kcmp : uintptr : 349
  1022. SYS_finit_module : uintptr : 350
  1023. SYS_sched_setattr : uintptr : 351
  1024. SYS_sched_getattr : uintptr : 352
  1025. SYS_renameat2 : uintptr : 353
  1026. SYS_seccomp : uintptr : 354
  1027. SYS_getrandom : uintptr : 355
  1028. SYS_memfd_create : uintptr : 356
  1029. SYS_bpf : uintptr : 357
  1030. SYS_execveat : uintptr : 358
  1031. SYS_socket : uintptr : 359
  1032. SYS_socketpair : uintptr : 360
  1033. SYS_bind : uintptr : 361
  1034. SYS_connect : uintptr : 362
  1035. SYS_listen : uintptr : 363
  1036. SYS_accept4 : uintptr : 364
  1037. SYS_getsockopt : uintptr : 365
  1038. SYS_setsockopt : uintptr : 366
  1039. SYS_getsockname : uintptr : 367
  1040. SYS_getpeername : uintptr : 368
  1041. SYS_sendto : uintptr : 369
  1042. SYS_sendmsg : uintptr : 370
  1043. SYS_recvfrom : uintptr : 371
  1044. SYS_recvmsg : uintptr : 372
  1045. SYS_shutdown : uintptr : 373
  1046. SYS_userfaultfd : uintptr : 374
  1047. SYS_membarrier : uintptr : 375
  1048. SYS_mlock2 : uintptr : 376
  1049. SYS_copy_file_range : uintptr : 377
  1050. SYS_preadv2 : uintptr : 378
  1051. SYS_pwritev2 : uintptr : 379
  1052. SYS_pkey_mprotect : uintptr : 380
  1053. SYS_pkey_alloc : uintptr : 381
  1054. SYS_pkey_free : uintptr : 382
  1055. SYS_statx : uintptr : 383
  1056. SYS_arch_prctl : uintptr : 384
  1057. SYS_io_pgetevents : uintptr : 385
  1058. SYS_rseq : uintptr : 386
  1059. SYS_semget : uintptr : 393
  1060. SYS_semctl : uintptr : 394
  1061. SYS_shmget : uintptr : 395
  1062. SYS_shmctl : uintptr : 396
  1063. SYS_shmat : uintptr : 397
  1064. SYS_shmdt : uintptr : 398
  1065. SYS_msgget : uintptr : 399
  1066. SYS_msgsnd : uintptr : 400
  1067. SYS_msgrcv : uintptr : 401
  1068. SYS_msgctl : uintptr : 402
  1069. SYS_clock_gettime64 : uintptr : 403
  1070. SYS_clock_settime64 : uintptr : 404
  1071. SYS_clock_adjtime64 : uintptr : 405
  1072. SYS_clock_getres_time64 : uintptr : 406
  1073. SYS_clock_nanosleep_time64 : uintptr : 407
  1074. SYS_timer_gettime64 : uintptr : 408
  1075. SYS_timer_settime64 : uintptr : 409
  1076. SYS_timerfd_gettime64 : uintptr : 410
  1077. SYS_timerfd_settime64 : uintptr : 411
  1078. SYS_utimensat_time64 : uintptr : 412
  1079. SYS_pselect6_time64 : uintptr : 413
  1080. SYS_ppoll_time64 : uintptr : 414
  1081. SYS_io_pgetevents_time64 : uintptr : 416
  1082. SYS_recvmmsg_time64 : uintptr : 417
  1083. SYS_mq_timedsend_time64 : uintptr : 418
  1084. SYS_mq_timedreceive_time64 : uintptr : 419
  1085. SYS_semtimedop_time64 : uintptr : 420
  1086. SYS_rt_sigtimedwait_time64 : uintptr : 421
  1087. SYS_futex_time64 : uintptr : 422
  1088. SYS_sched_rr_get_interval_time64 : uintptr : 423
  1089. SYS_pidfd_send_signal : uintptr : 424
  1090. SYS_io_uring_setup : uintptr : 425
  1091. SYS_io_uring_enter : uintptr : 426
  1092. SYS_io_uring_register : uintptr : 427
  1093. SYS_open_tree : uintptr : 428
  1094. SYS_move_mount : uintptr : 429
  1095. SYS_fsopen : uintptr : 430
  1096. SYS_fsconfig : uintptr : 431
  1097. SYS_fsmount : uintptr : 432
  1098. SYS_fspick : uintptr : 433
  1099. SYS_pidfd_open : uintptr : 434
  1100. SYS_clone3 : uintptr : 435
  1101. SYS_close_range : uintptr : 436
  1102. SYS_openat2 : uintptr : 437
  1103. SYS_pidfd_getfd : uintptr : 438
  1104. SYS_faccessat2 : uintptr : 439
  1105. SYS_process_madvise : uintptr : 440
  1106. SYS_epoll_pwait2 : uintptr : 441
  1107. SYS_mount_setattr : uintptr : 442
  1108. SYS_landlock_create_ruleset : uintptr : 444
  1109. SYS_landlock_add_rule : uintptr : 445
  1110. SYS_landlock_restrict_self : uintptr : 446
  1111. SYS_memfd_secret : uintptr : 447
  1112. } else when ODIN_ARCH == .arm32 { // TODO
  1113. SYS_restart_syscall : uintptr : 0
  1114. SYS_exit : uintptr : 1
  1115. SYS_fork : uintptr : 2
  1116. SYS_read : uintptr : 3
  1117. SYS_write : uintptr : 4
  1118. SYS_open : uintptr : 5
  1119. SYS_close : uintptr : 6
  1120. SYS_creat : uintptr : 8
  1121. SYS_link : uintptr : 9
  1122. SYS_unlink : uintptr : 10
  1123. SYS_execve : uintptr : 11
  1124. SYS_chdir : uintptr : 12
  1125. SYS_mknod : uintptr : 14
  1126. SYS_chmod : uintptr : 15
  1127. SYS_lchown : uintptr : 16
  1128. SYS_lseek : uintptr : 19
  1129. SYS_getpid : uintptr : 20
  1130. SYS_mount : uintptr : 21
  1131. SYS_setuid : uintptr : 23
  1132. SYS_getuid : uintptr : 24
  1133. SYS_ptrace : uintptr : 26
  1134. SYS_pause : uintptr : 29
  1135. SYS_access : uintptr : 33
  1136. SYS_nice : uintptr : 34
  1137. SYS_sync : uintptr : 36
  1138. SYS_kill : uintptr : 37
  1139. SYS_rename : uintptr : 38
  1140. SYS_mkdir : uintptr : 39
  1141. SYS_rmdir : uintptr : 40
  1142. SYS_dup : uintptr : 41
  1143. SYS_pipe : uintptr : 42
  1144. SYS_times : uintptr : 43
  1145. SYS_brk : uintptr : 45
  1146. SYS_setgid : uintptr : 46
  1147. SYS_getgid : uintptr : 47
  1148. SYS_geteuid : uintptr : 49
  1149. SYS_getegid : uintptr : 50
  1150. SYS_acct : uintptr : 51
  1151. SYS_umount2 : uintptr : 52
  1152. SYS_ioctl : uintptr : 54
  1153. SYS_fcntl : uintptr : 55
  1154. SYS_setpgid : uintptr : 57
  1155. SYS_umask : uintptr : 60
  1156. SYS_chroot : uintptr : 61
  1157. SYS_ustat : uintptr : 62
  1158. SYS_dup2 : uintptr : 63
  1159. SYS_getppid : uintptr : 64
  1160. SYS_getpgrp : uintptr : 65
  1161. SYS_setsid : uintptr : 66
  1162. SYS_sigaction : uintptr : 67
  1163. SYS_setreuid : uintptr : 70
  1164. SYS_setregid : uintptr : 71
  1165. SYS_sigsuspend : uintptr : 72
  1166. SYS_sigpending : uintptr : 73
  1167. SYS_sethostname : uintptr : 74
  1168. SYS_setrlimit : uintptr : 75
  1169. SYS_getrusage : uintptr : 77
  1170. SYS_gettimeofday : uintptr : 78
  1171. SYS_settimeofday : uintptr : 79
  1172. SYS_getgroups : uintptr : 80
  1173. SYS_setgroups : uintptr : 81
  1174. SYS_symlink : uintptr : 83
  1175. SYS_readlink : uintptr : 85
  1176. SYS_uselib : uintptr : 86
  1177. SYS_swapon : uintptr : 87
  1178. SYS_reboot : uintptr : 88
  1179. SYS_munmap : uintptr : 91
  1180. SYS_truncate : uintptr : 92
  1181. SYS_ftruncate : uintptr : 93
  1182. SYS_fchmod : uintptr : 94
  1183. SYS_fchown : uintptr : 95
  1184. SYS_getpriority : uintptr : 96
  1185. SYS_setpriority : uintptr : 97
  1186. SYS_statfs : uintptr : 99
  1187. SYS_fstatfs : uintptr : 100
  1188. SYS_syslog : uintptr : 103
  1189. SYS_setitimer : uintptr : 104
  1190. SYS_getitimer : uintptr : 105
  1191. SYS_stat : uintptr : 106
  1192. SYS_lstat : uintptr : 107
  1193. SYS_fstat : uintptr : 108
  1194. SYS_vhangup : uintptr : 111
  1195. SYS_wait4 : uintptr : 114
  1196. SYS_swapoff : uintptr : 115
  1197. SYS_sysinfo : uintptr : 116
  1198. SYS_fsync : uintptr : 118
  1199. SYS_sigreturn : uintptr : 119
  1200. SYS_clone : uintptr : 120
  1201. SYS_setdomainname : uintptr : 121
  1202. SYS_uname : uintptr : 122
  1203. SYS_adjtimex : uintptr : 124
  1204. SYS_mprotect : uintptr : 125
  1205. SYS_sigprocmask : uintptr : 126
  1206. SYS_init_module : uintptr : 128
  1207. SYS_delete_module : uintptr : 129
  1208. SYS_quotactl : uintptr : 131
  1209. SYS_getpgid : uintptr : 132
  1210. SYS_fchdir : uintptr : 133
  1211. SYS_bdflush : uintptr : 134
  1212. SYS_sysfs : uintptr : 135
  1213. SYS_personality : uintptr : 136
  1214. SYS_setfsuid : uintptr : 138
  1215. SYS_setfsgid : uintptr : 139
  1216. SYS__llseek : uintptr : 140
  1217. SYS_getdents : uintptr : 141
  1218. SYS__newselect : uintptr : 142
  1219. SYS_flock : uintptr : 143
  1220. SYS_msync : uintptr : 144
  1221. SYS_readv : uintptr : 145
  1222. SYS_writev : uintptr : 146
  1223. SYS_getsid : uintptr : 147
  1224. SYS_fdatasync : uintptr : 148
  1225. SYS__sysctl : uintptr : 149
  1226. SYS_mlock : uintptr : 150
  1227. SYS_munlock : uintptr : 151
  1228. SYS_mlockall : uintptr : 152
  1229. SYS_munlockall : uintptr : 153
  1230. SYS_sched_setparam : uintptr : 154
  1231. SYS_sched_getparam : uintptr : 155
  1232. SYS_sched_setscheduler : uintptr : 156
  1233. SYS_sched_getscheduler : uintptr : 157
  1234. SYS_sched_yield : uintptr : 158
  1235. SYS_sched_get_priority_max : uintptr : 159
  1236. SYS_sched_get_priority_min : uintptr : 160
  1237. SYS_sched_rr_get_interval : uintptr : 161
  1238. SYS_nanosleep : uintptr : 162
  1239. SYS_mremap : uintptr : 163
  1240. SYS_setresuid : uintptr : 164
  1241. SYS_getresuid : uintptr : 165
  1242. SYS_poll : uintptr : 168
  1243. SYS_nfsservctl : uintptr : 169
  1244. SYS_setresgid : uintptr : 170
  1245. SYS_getresgid : uintptr : 171
  1246. SYS_prctl : uintptr : 172
  1247. SYS_rt_sigreturn : uintptr : 173
  1248. SYS_rt_sigaction : uintptr : 174
  1249. SYS_rt_sigprocmask : uintptr : 175
  1250. SYS_rt_sigpending : uintptr : 176
  1251. SYS_rt_sigtimedwait : uintptr : 177
  1252. SYS_rt_sigqueueinfo : uintptr : 178
  1253. SYS_rt_sigsuspend : uintptr : 179
  1254. SYS_pread64 : uintptr : 180
  1255. SYS_pwrite64 : uintptr : 181
  1256. SYS_chown : uintptr : 182
  1257. SYS_getcwd : uintptr : 183
  1258. SYS_capget : uintptr : 184
  1259. SYS_capset : uintptr : 185
  1260. SYS_sigaltstack : uintptr : 186
  1261. SYS_sendfile : uintptr : 187
  1262. SYS_vfork : uintptr : 190
  1263. SYS_ugetrlimit : uintptr : 191
  1264. SYS_mmap : uintptr : 192 // actually mmap2
  1265. SYS_truncate64 : uintptr : 193
  1266. SYS_ftruncate64 : uintptr : 194
  1267. SYS_stat64 : uintptr : 195
  1268. SYS_lstat64 : uintptr : 196
  1269. SYS_fstat64 : uintptr : 197
  1270. SYS_lchown32 : uintptr : 198
  1271. SYS_getuid32 : uintptr : 199
  1272. SYS_getgid32 : uintptr : 200
  1273. SYS_geteuid32 : uintptr : 201
  1274. SYS_getegid32 : uintptr : 202
  1275. SYS_setreuid32 : uintptr : 203
  1276. SYS_setregid32 : uintptr : 204
  1277. SYS_getgroups32 : uintptr : 205
  1278. SYS_setgroups32 : uintptr : 206
  1279. SYS_fchown32 : uintptr : 207
  1280. SYS_setresuid32 : uintptr : 208
  1281. SYS_getresuid32 : uintptr : 209
  1282. SYS_setresgid32 : uintptr : 210
  1283. SYS_getresgid32 : uintptr : 211
  1284. SYS_chown32 : uintptr : 212
  1285. SYS_setuid32 : uintptr : 213
  1286. SYS_setgid32 : uintptr : 214
  1287. SYS_setfsuid32 : uintptr : 215
  1288. SYS_setfsgid32 : uintptr : 216
  1289. SYS_getdents64 : uintptr : 217
  1290. SYS_pivot_root : uintptr : 218
  1291. SYS_mincore : uintptr : 219
  1292. SYS_madvise : uintptr : 220
  1293. SYS_fcntl64 : uintptr : 221
  1294. SYS_gettid : uintptr : 224
  1295. SYS_readahead : uintptr : 225
  1296. SYS_setxattr : uintptr : 226
  1297. SYS_lsetxattr : uintptr : 227
  1298. SYS_fsetxattr : uintptr : 228
  1299. SYS_getxattr : uintptr : 229
  1300. SYS_lgetxattr : uintptr : 230
  1301. SYS_fgetxattr : uintptr : 231
  1302. SYS_listxattr : uintptr : 232
  1303. SYS_llistxattr : uintptr : 233
  1304. SYS_flistxattr : uintptr : 234
  1305. SYS_removexattr : uintptr : 235
  1306. SYS_lremovexattr : uintptr : 236
  1307. SYS_fremovexattr : uintptr : 237
  1308. SYS_tkill : uintptr : 238
  1309. SYS_sendfile64 : uintptr : 239
  1310. SYS_futex : uintptr : 240
  1311. SYS_sched_setaffinity : uintptr : 241
  1312. SYS_sched_getaffinity : uintptr : 242
  1313. SYS_io_setup : uintptr : 243
  1314. SYS_io_destroy : uintptr : 244
  1315. SYS_io_getevents : uintptr : 245
  1316. SYS_io_submit : uintptr : 246
  1317. SYS_io_cancel : uintptr : 247
  1318. SYS_exit_group : uintptr : 248
  1319. SYS_lookup_dcookie : uintptr : 249
  1320. SYS_epoll_create : uintptr : 250
  1321. SYS_epoll_ctl : uintptr : 251
  1322. SYS_epoll_wait : uintptr : 252
  1323. SYS_remap_file_pages : uintptr : 253
  1324. SYS_set_tid_address : uintptr : 256
  1325. SYS_timer_create : uintptr : 257
  1326. SYS_timer_settime : uintptr : 258
  1327. SYS_timer_gettime : uintptr : 259
  1328. SYS_timer_getoverrun : uintptr : 260
  1329. SYS_timer_delete : uintptr : 261
  1330. SYS_clock_settime : uintptr : 262
  1331. SYS_clock_gettime : uintptr : 263
  1332. SYS_clock_getres : uintptr : 264
  1333. SYS_clock_nanosleep : uintptr : 265
  1334. SYS_statfs64 : uintptr : 266
  1335. SYS_fstatfs64 : uintptr : 267
  1336. SYS_tgkill : uintptr : 268
  1337. SYS_utimes : uintptr : 269
  1338. SYS_fadvise64_64 : uintptr : 270
  1339. SYS_pciconfig_iobase : uintptr : 271
  1340. SYS_pciconfig_read : uintptr : 272
  1341. SYS_pciconfig_write : uintptr : 273
  1342. SYS_mq_open : uintptr : 274
  1343. SYS_mq_unlink : uintptr : 275
  1344. SYS_mq_timedsend : uintptr : 276
  1345. SYS_mq_timedreceive : uintptr : 277
  1346. SYS_mq_notify : uintptr : 278
  1347. SYS_mq_getsetattr : uintptr : 279
  1348. SYS_waitid : uintptr : 280
  1349. SYS_socket : uintptr : 281
  1350. SYS_bind : uintptr : 282
  1351. SYS_connect : uintptr : 283
  1352. SYS_listen : uintptr : 284
  1353. SYS_accept : uintptr : 285
  1354. SYS_getsockname : uintptr : 286
  1355. SYS_getpeername : uintptr : 287
  1356. SYS_socketpair : uintptr : 288
  1357. SYS_send : uintptr : 289
  1358. SYS_sendto : uintptr : 290
  1359. SYS_recv : uintptr : 291
  1360. SYS_recvfrom : uintptr : 292
  1361. SYS_shutdown : uintptr : 293
  1362. SYS_setsockopt : uintptr : 294
  1363. SYS_getsockopt : uintptr : 295
  1364. SYS_sendmsg : uintptr : 296
  1365. SYS_recvmsg : uintptr : 297
  1366. SYS_semop : uintptr : 298
  1367. SYS_semget : uintptr : 299
  1368. SYS_semctl : uintptr : 300
  1369. SYS_msgsnd : uintptr : 301
  1370. SYS_msgrcv : uintptr : 302
  1371. SYS_msgget : uintptr : 303
  1372. SYS_msgctl : uintptr : 304
  1373. SYS_shmat : uintptr : 305
  1374. SYS_shmdt : uintptr : 306
  1375. SYS_shmget : uintptr : 307
  1376. SYS_shmctl : uintptr : 308
  1377. SYS_add_key : uintptr : 309
  1378. SYS_request_key : uintptr : 310
  1379. SYS_keyctl : uintptr : 311
  1380. SYS_semtimedop : uintptr : 312
  1381. SYS_vserver : uintptr : 313
  1382. SYS_ioprio_set : uintptr : 314
  1383. SYS_ioprio_get : uintptr : 315
  1384. SYS_inotify_init : uintptr : 316
  1385. SYS_inotify_add_watch : uintptr : 317
  1386. SYS_inotify_rm_watch : uintptr : 318
  1387. SYS_mbind : uintptr : 319
  1388. SYS_get_mempolicy : uintptr : 320
  1389. SYS_set_mempolicy : uintptr : 321
  1390. SYS_openat : uintptr : 322
  1391. SYS_mkdirat : uintptr : 323
  1392. SYS_mknodat : uintptr : 324
  1393. SYS_fchownat : uintptr : 325
  1394. SYS_futimesat : uintptr : 326
  1395. SYS_fstatat64 : uintptr : 327
  1396. SYS_unlinkat : uintptr : 328
  1397. SYS_renameat : uintptr : 329
  1398. SYS_linkat : uintptr : 330
  1399. SYS_symlinkat : uintptr : 331
  1400. SYS_readlinkat : uintptr : 332
  1401. SYS_fchmodat : uintptr : 333
  1402. SYS_faccessat : uintptr : 334
  1403. SYS_pselect6 : uintptr : 335
  1404. SYS_ppoll : uintptr : 336
  1405. SYS_unshare : uintptr : 337
  1406. SYS_set_robust_list : uintptr : 338
  1407. SYS_get_robust_list : uintptr : 339
  1408. SYS_splice : uintptr : 340
  1409. SYS_sync_file_range : uintptr : 341
  1410. SYS_tee : uintptr : 342
  1411. SYS_vmsplice : uintptr : 343
  1412. SYS_move_pages : uintptr : 344
  1413. SYS_getcpu : uintptr : 345
  1414. SYS_epoll_pwait : uintptr : 346
  1415. SYS_kexec_load : uintptr : 347
  1416. SYS_utimensat : uintptr : 348
  1417. SYS_signalfd : uintptr : 349
  1418. SYS_timerfd_create : uintptr : 350
  1419. SYS_eventfd : uintptr : 351
  1420. SYS_fallocate : uintptr : 352
  1421. SYS_timerfd_settime : uintptr : 353
  1422. SYS_timerfd_gettime : uintptr : 354
  1423. SYS_signalfd4 : uintptr : 355
  1424. SYS_eventfd2 : uintptr : 356
  1425. SYS_epoll_create1 : uintptr : 357
  1426. SYS_dup3 : uintptr : 358
  1427. SYS_pipe2 : uintptr : 359
  1428. SYS_inotify_init1 : uintptr : 360
  1429. SYS_preadv : uintptr : 361
  1430. SYS_pwritev : uintptr : 362
  1431. SYS_rt_tgsigqueueinfo : uintptr : 363
  1432. SYS_perf_event_open : uintptr : 364
  1433. SYS_recvmmsg : uintptr : 365
  1434. SYS_accept4 : uintptr : 366
  1435. SYS_fanotify_init : uintptr : 367
  1436. SYS_fanotify_mark : uintptr : 368
  1437. SYS_prlimit64 : uintptr : 369
  1438. SYS_name_to_handle_at : uintptr : 370
  1439. SYS_open_by_handle_at : uintptr : 371
  1440. SYS_clock_adjtime : uintptr : 372
  1441. SYS_syncfs : uintptr : 373
  1442. SYS_sendmmsg : uintptr : 374
  1443. SYS_setns : uintptr : 375
  1444. SYS_process_vm_readv : uintptr : 376
  1445. SYS_process_vm_writev : uintptr : 377
  1446. SYS_kcmp : uintptr : 378
  1447. SYS_finit_module : uintptr : 379
  1448. SYS_sched_setattr : uintptr : 380
  1449. SYS_sched_getattr : uintptr : 381
  1450. SYS_renameat2 : uintptr : 382
  1451. SYS_seccomp : uintptr : 383
  1452. SYS_getrandom : uintptr : 384
  1453. SYS_memfd_create : uintptr : 385
  1454. SYS_bpf : uintptr : 386
  1455. SYS_execveat : uintptr : 387
  1456. SYS_userfaultfd : uintptr : 388
  1457. SYS_membarrier : uintptr : 389
  1458. SYS_mlock2 : uintptr : 390
  1459. SYS_copy_file_range : uintptr : 391
  1460. SYS_preadv2 : uintptr : 392
  1461. SYS_pwritev2 : uintptr : 393
  1462. SYS_pkey_mprotect : uintptr : 394
  1463. SYS_pkey_alloc : uintptr : 395
  1464. SYS_pkey_free : uintptr : 396
  1465. SYS_statx : uintptr : 397
  1466. SYS_rseq : uintptr : 398
  1467. SYS_io_pgetevents : uintptr : 399
  1468. SYS_migrate_pages : uintptr : 400
  1469. SYS_kexec_file_load : uintptr : 401
  1470. SYS_clock_gettime64 : uintptr : 403
  1471. SYS_clock_settime64 : uintptr : 404
  1472. SYS_clock_adjtime64 : uintptr : 405
  1473. SYS_clock_getres_time64 : uintptr : 406
  1474. SYS_clock_nanosleep_time64 : uintptr : 407
  1475. SYS_timer_gettime64 : uintptr : 408
  1476. SYS_timer_settime64 : uintptr : 409
  1477. SYS_timerfd_gettime64 : uintptr : 410
  1478. SYS_timerfd_settime64 : uintptr : 411
  1479. SYS_utimensat_time64 : uintptr : 412
  1480. SYS_pselect6_time64 : uintptr : 413
  1481. SYS_ppoll_time64 : uintptr : 414
  1482. SYS_io_pgetevents_time64 : uintptr : 416
  1483. SYS_recvmmsg_time64 : uintptr : 417
  1484. SYS_mq_timedsend_time64 : uintptr : 418
  1485. SYS_mq_timedreceive_time64 : uintptr : 419
  1486. SYS_semtimedop_time64 : uintptr : 420
  1487. SYS_rt_sigtimedwait_time64 : uintptr : 421
  1488. SYS_futex_time64 : uintptr : 422
  1489. SYS_sched_rr_get_interval_time64 : uintptr : 423
  1490. SYS_pidfd_send_signal : uintptr : 424
  1491. SYS_io_uring_setup : uintptr : 425
  1492. SYS_io_uring_enter : uintptr : 426
  1493. SYS_io_uring_register : uintptr : 427
  1494. SYS_open_tree : uintptr : 428
  1495. SYS_move_mount : uintptr : 429
  1496. SYS_fsopen : uintptr : 430
  1497. SYS_fsconfig : uintptr : 431
  1498. SYS_fsmount : uintptr : 432
  1499. SYS_fspick : uintptr : 433
  1500. SYS_pidfd_open : uintptr : 434
  1501. SYS_clone3 : uintptr : 435
  1502. SYS_close_range : uintptr : 436
  1503. SYS_openat2 : uintptr : 437
  1504. SYS_pidfd_getfd : uintptr : 438
  1505. SYS_faccessat2 : uintptr : 439
  1506. SYS_process_madvise : uintptr : 440
  1507. SYS_epoll_pwait2 : uintptr : 441
  1508. SYS_mount_setattr : uintptr : 442
  1509. SYS_landlock_create_ruleset : uintptr : 444
  1510. SYS_landlock_add_rule : uintptr : 445
  1511. SYS_landlock_restrict_self : uintptr : 446
  1512. } else when ODIN_ARCH == .riscv64 {
  1513. SYS_io_setup :: uintptr(0)
  1514. SYS_io_destroy :: uintptr(1)
  1515. SYS_io_submit :: uintptr(2)
  1516. SYS_io_cancel :: uintptr(3)
  1517. SYS_io_getevents :: uintptr(4)
  1518. SYS_setxattr :: uintptr(5)
  1519. SYS_lsetxattr :: uintptr(6)
  1520. SYS_fsetxattr :: uintptr(7)
  1521. SYS_getxattr :: uintptr(8)
  1522. SYS_lgetxattr :: uintptr(9)
  1523. SYS_fgetxattr :: uintptr(10)
  1524. SYS_listxattr :: uintptr(11)
  1525. SYS_llistxattr :: uintptr(12)
  1526. SYS_flistxattr :: uintptr(13)
  1527. SYS_removexattr :: uintptr(14)
  1528. SYS_lremovexattr :: uintptr(15)
  1529. SYS_fremovexattr :: uintptr(16)
  1530. SYS_getcwd :: uintptr(17)
  1531. SYS_lookup_dcookie :: uintptr(18)
  1532. SYS_eventfd2 :: uintptr(19)
  1533. SYS_epoll_create1 :: uintptr(20)
  1534. SYS_epoll_ctl :: uintptr(21)
  1535. SYS_epoll_pwait :: uintptr(22)
  1536. SYS_dup :: uintptr(23)
  1537. SYS_dup3 :: uintptr(24)
  1538. SYS_fcntl :: uintptr(25)
  1539. SYS_inotify_init1 :: uintptr(26)
  1540. SYS_inotify_add_watch :: uintptr(27)
  1541. SYS_inotify_rm_watch :: uintptr(28)
  1542. SYS_ioctl :: uintptr(29)
  1543. SYS_ioprio_set :: uintptr(30)
  1544. SYS_ioprio_get :: uintptr(31)
  1545. SYS_flock :: uintptr(32)
  1546. SYS_mknodat :: uintptr(33)
  1547. SYS_mkdirat :: uintptr(34)
  1548. SYS_unlinkat :: uintptr(35)
  1549. SYS_symlinkat :: uintptr(36)
  1550. SYS_linkat :: uintptr(37)
  1551. SYS_renameat :: uintptr(38)
  1552. SYS_umount2 :: uintptr(39)
  1553. SYS_mount :: uintptr(40)
  1554. SYS_pivot_root :: uintptr(41)
  1555. SYS_nfsservctl :: uintptr(42)
  1556. SYS_statfs :: uintptr(43)
  1557. SYS_fstatfs :: uintptr(44)
  1558. SYS_truncate :: uintptr(45)
  1559. SYS_ftruncate :: uintptr(46)
  1560. SYS_fallocate :: uintptr(47)
  1561. SYS_faccessat :: uintptr(48)
  1562. SYS_chdir :: uintptr(49)
  1563. SYS_fchdir :: uintptr(50)
  1564. SYS_chroot :: uintptr(51)
  1565. SYS_fchmod :: uintptr(52)
  1566. SYS_fchmodat :: uintptr(53)
  1567. SYS_fchownat :: uintptr(54)
  1568. SYS_fchown :: uintptr(55)
  1569. SYS_openat :: uintptr(56)
  1570. SYS_close :: uintptr(57)
  1571. SYS_vhangup :: uintptr(58)
  1572. SYS_pipe2 :: uintptr(59)
  1573. SYS_quotactl :: uintptr(60)
  1574. SYS_getdents64 :: uintptr(61)
  1575. SYS_lseek :: uintptr(62)
  1576. SYS_read :: uintptr(63)
  1577. SYS_write :: uintptr(64)
  1578. SYS_readv :: uintptr(65)
  1579. SYS_writev :: uintptr(66)
  1580. SYS_pread64 :: uintptr(67)
  1581. SYS_pwrite64 :: uintptr(68)
  1582. SYS_preadv :: uintptr(69)
  1583. SYS_pwritev :: uintptr(70)
  1584. SYS_sendfile :: uintptr(71)
  1585. SYS_pselect6 :: uintptr(72)
  1586. SYS_ppoll :: uintptr(73)
  1587. SYS_signalfd4 :: uintptr(74)
  1588. SYS_vmsplice :: uintptr(75)
  1589. SYS_splice :: uintptr(76)
  1590. SYS_tee :: uintptr(77)
  1591. SYS_readlinkat :: uintptr(78)
  1592. SYS_fstatat :: uintptr(79)
  1593. SYS_fstat :: uintptr(80)
  1594. SYS_sync :: uintptr(81)
  1595. SYS_fsync :: uintptr(82)
  1596. SYS_fdatasync :: uintptr(83)
  1597. SYS_sync_file_range2 :: uintptr(84)
  1598. SYS_sync_file_range :: uintptr(84)
  1599. SYS_timerfd_create :: uintptr(85)
  1600. SYS_timerfd_settime :: uintptr(86)
  1601. SYS_timerfd_gettime :: uintptr(87)
  1602. SYS_utimensat :: uintptr(88)
  1603. SYS_acct :: uintptr(89)
  1604. SYS_capget :: uintptr(90)
  1605. SYS_capset :: uintptr(91)
  1606. SYS_personality :: uintptr(92)
  1607. SYS_exit :: uintptr(93)
  1608. SYS_exit_group :: uintptr(94)
  1609. SYS_waitid :: uintptr(95)
  1610. SYS_set_tid_address :: uintptr(96)
  1611. SYS_unshare :: uintptr(97)
  1612. SYS_futex :: uintptr(98)
  1613. SYS_set_robust_list :: uintptr(99)
  1614. SYS_get_robust_list :: uintptr(100)
  1615. SYS_nanosleep :: uintptr(101)
  1616. SYS_getitimer :: uintptr(102)
  1617. SYS_setitimer :: uintptr(103)
  1618. SYS_kexec_load :: uintptr(104)
  1619. SYS_init_module :: uintptr(105)
  1620. SYS_delete_module :: uintptr(106)
  1621. SYS_timer_create :: uintptr(107)
  1622. SYS_timer_gettime :: uintptr(108)
  1623. SYS_timer_getoverrun :: uintptr(109)
  1624. SYS_timer_settime :: uintptr(110)
  1625. SYS_timer_delete :: uintptr(111)
  1626. SYS_clock_settime :: uintptr(112)
  1627. SYS_clock_gettime :: uintptr(113)
  1628. SYS_clock_getres :: uintptr(114)
  1629. SYS_clock_nanosleep :: uintptr(115)
  1630. SYS_syslog :: uintptr(116)
  1631. SYS_ptrace :: uintptr(117)
  1632. SYS_sched_setparam :: uintptr(118)
  1633. SYS_sched_setscheduler :: uintptr(119)
  1634. SYS_sched_getscheduler :: uintptr(120)
  1635. SYS_sched_getparam :: uintptr(121)
  1636. SYS_sched_setaffinity :: uintptr(122)
  1637. SYS_sched_getaffinity :: uintptr(123)
  1638. SYS_sched_yield :: uintptr(124)
  1639. SYS_sched_get_priority_max :: uintptr(125)
  1640. SYS_sched_get_priority_min :: uintptr(126)
  1641. SYS_sched_rr_get_interval :: uintptr(127)
  1642. SYS_restart_syscall :: uintptr(128)
  1643. SYS_kill :: uintptr(129)
  1644. SYS_tkill :: uintptr(130)
  1645. SYS_tgkill :: uintptr(131)
  1646. SYS_sigaltstack :: uintptr(132)
  1647. SYS_rt_sigsuspend :: uintptr(133)
  1648. SYS_rt_sigaction :: uintptr(134)
  1649. SYS_rt_sigprocmask :: uintptr(135)
  1650. SYS_rt_sigpending :: uintptr(136)
  1651. SYS_rt_sigtimedwait :: uintptr(137)
  1652. SYS_rt_sigqueueinfo :: uintptr(138)
  1653. SYS_rt_sigreturn :: uintptr(139)
  1654. SYS_setpriority :: uintptr(140)
  1655. SYS_getpriority :: uintptr(141)
  1656. SYS_reboot :: uintptr(142)
  1657. SYS_setregid :: uintptr(143)
  1658. SYS_setgid :: uintptr(144)
  1659. SYS_setreuid :: uintptr(145)
  1660. SYS_setuid :: uintptr(146)
  1661. SYS_setresuid :: uintptr(147)
  1662. SYS_getresuid :: uintptr(148)
  1663. SYS_setresgid :: uintptr(149)
  1664. SYS_getresgid :: uintptr(150)
  1665. SYS_setfsuid :: uintptr(151)
  1666. SYS_setfsgid :: uintptr(152)
  1667. SYS_times :: uintptr(153)
  1668. SYS_setpgid :: uintptr(154)
  1669. SYS_getpgid :: uintptr(155)
  1670. SYS_getsid :: uintptr(156)
  1671. SYS_setsid :: uintptr(157)
  1672. SYS_getgroups :: uintptr(158)
  1673. SYS_setgroups :: uintptr(159)
  1674. SYS_uname :: uintptr(160)
  1675. SYS_sethostname :: uintptr(161)
  1676. SYS_setdomainname :: uintptr(162)
  1677. SYS_getrlimit :: uintptr(163)
  1678. SYS_setrlimit :: uintptr(164)
  1679. SYS_getrusage :: uintptr(165)
  1680. SYS_umask :: uintptr(166)
  1681. SYS_prctl :: uintptr(167)
  1682. SYS_getcpu :: uintptr(168)
  1683. SYS_gettimeofday :: uintptr(169)
  1684. SYS_settimeofday :: uintptr(170)
  1685. SYS_adjtimex :: uintptr(171)
  1686. SYS_getpid :: uintptr(172)
  1687. SYS_getppid :: uintptr(173)
  1688. SYS_getuid :: uintptr(174)
  1689. SYS_geteuid :: uintptr(175)
  1690. SYS_getgid :: uintptr(176)
  1691. SYS_getegid :: uintptr(177)
  1692. SYS_gettid :: uintptr(178)
  1693. SYS_sysinfo :: uintptr(179)
  1694. SYS_mq_open :: uintptr(180)
  1695. SYS_mq_unlink :: uintptr(181)
  1696. SYS_mq_timedsend :: uintptr(182)
  1697. SYS_mq_timedreceive :: uintptr(183)
  1698. SYS_mq_notify :: uintptr(184)
  1699. SYS_mq_getsetattr :: uintptr(185)
  1700. SYS_msgget :: uintptr(186)
  1701. SYS_msgctl :: uintptr(187)
  1702. SYS_msgrcv :: uintptr(188)
  1703. SYS_msgsnd :: uintptr(189)
  1704. SYS_semget :: uintptr(190)
  1705. SYS_semctl :: uintptr(191)
  1706. SYS_semtimedop :: uintptr(192)
  1707. SYS_semop :: uintptr(193)
  1708. SYS_shmget :: uintptr(194)
  1709. SYS_shmctl :: uintptr(195)
  1710. SYS_shmat :: uintptr(196)
  1711. SYS_shmdt :: uintptr(197)
  1712. SYS_socket :: uintptr(198)
  1713. SYS_socketpair :: uintptr(199)
  1714. SYS_bind :: uintptr(200)
  1715. SYS_listen :: uintptr(201)
  1716. SYS_accept :: uintptr(202)
  1717. SYS_connect :: uintptr(203)
  1718. SYS_getsockname :: uintptr(204)
  1719. SYS_getpeername :: uintptr(205)
  1720. SYS_sendto :: uintptr(206)
  1721. SYS_recvfrom :: uintptr(207)
  1722. SYS_setsockopt :: uintptr(208)
  1723. SYS_getsockopt :: uintptr(209)
  1724. SYS_shutdown :: uintptr(210)
  1725. SYS_sendmsg :: uintptr(211)
  1726. SYS_recvmsg :: uintptr(212)
  1727. SYS_readahead :: uintptr(213)
  1728. SYS_brk :: uintptr(214)
  1729. SYS_munmap :: uintptr(215)
  1730. SYS_mremap :: uintptr(216)
  1731. SYS_add_key :: uintptr(217)
  1732. SYS_request_key :: uintptr(218)
  1733. SYS_keyctl :: uintptr(219)
  1734. SYS_clone :: uintptr(220)
  1735. SYS_execve :: uintptr(221)
  1736. SYS_mmap :: uintptr(222)
  1737. SYS_fadvise64 :: uintptr(223)
  1738. SYS_swapon :: uintptr(224)
  1739. SYS_swapoff :: uintptr(225)
  1740. SYS_mprotect :: uintptr(226)
  1741. SYS_msync :: uintptr(227)
  1742. SYS_mlock :: uintptr(228)
  1743. SYS_munlock :: uintptr(229)
  1744. SYS_mlockall :: uintptr(230)
  1745. SYS_munlockall :: uintptr(231)
  1746. SYS_mincore :: uintptr(232)
  1747. SYS_madvise :: uintptr(233)
  1748. SYS_remap_file_pages :: uintptr(234)
  1749. SYS_mbind :: uintptr(235)
  1750. SYS_get_mempolicy :: uintptr(236)
  1751. SYS_set_mempolicy :: uintptr(237)
  1752. SYS_migrate_pages :: uintptr(238)
  1753. SYS_move_pages :: uintptr(239)
  1754. SYS_rt_tgsigqueueinfo :: uintptr(240)
  1755. SYS_perf_event_open :: uintptr(241)
  1756. SYS_accept4 :: uintptr(242)
  1757. SYS_recvmmsg :: uintptr(243)
  1758. SYS_wait4 :: uintptr(260)
  1759. SYS_prlimit64 :: uintptr(261)
  1760. SYS_fanotify_init :: uintptr(262)
  1761. SYS_fanotify_mark :: uintptr(263)
  1762. SYS_name_to_handle_at :: uintptr(264)
  1763. SYS_open_by_handle_at :: uintptr(265)
  1764. SYS_clock_adjtime :: uintptr(266)
  1765. SYS_syncfs :: uintptr(267)
  1766. SYS_setns :: uintptr(268)
  1767. SYS_sendmmsg :: uintptr(269)
  1768. SYS_process_vm_readv :: uintptr(270)
  1769. SYS_process_vm_writev :: uintptr(271)
  1770. SYS_kcmp :: uintptr(272)
  1771. SYS_finit_module :: uintptr(273)
  1772. SYS_sched_setattr :: uintptr(274)
  1773. SYS_sched_getattr :: uintptr(275)
  1774. SYS_renameat2 :: uintptr(276)
  1775. SYS_seccomp :: uintptr(277)
  1776. SYS_getrandom :: uintptr(278)
  1777. SYS_memfd_create :: uintptr(279)
  1778. SYS_bpf :: uintptr(280)
  1779. SYS_execveat :: uintptr(281)
  1780. SYS_userfaultfd :: uintptr(282)
  1781. SYS_membarrier :: uintptr(283)
  1782. SYS_mlock2 :: uintptr(284)
  1783. SYS_copy_file_range :: uintptr(285)
  1784. SYS_preadv2 :: uintptr(286)
  1785. SYS_pwritev2 :: uintptr(287)
  1786. SYS_pkey_mprotect :: uintptr(288)
  1787. SYS_pkey_alloc :: uintptr(289)
  1788. SYS_pkey_free :: uintptr(290)
  1789. SYS_statx :: uintptr(291)
  1790. SYS_io_pgetevents :: uintptr(292)
  1791. SYS_rseq :: uintptr(293)
  1792. SYS_kexec_file_load :: uintptr(294)
  1793. SYS_clock_gettime64 :: uintptr(403)
  1794. SYS_clock_settime64 :: uintptr(404)
  1795. SYS_clock_adjtime64 :: uintptr(405)
  1796. SYS_clock_getres_time64 :: uintptr(406)
  1797. SYS_clock_nanosleep_time64 :: uintptr(407)
  1798. SYS_timer_gettime64 :: uintptr(408)
  1799. SYS_timer_settime64 :: uintptr(409)
  1800. SYS_timerfd_gettime64 :: uintptr(410)
  1801. SYS_timerfd_settime64 :: uintptr(411)
  1802. SYS_utimensat_time64 :: uintptr(412)
  1803. SYS_pselect6_time64 :: uintptr(413)
  1804. SYS_ppoll_time64 :: uintptr(414)
  1805. SYS_io_pgetevents_time64 :: uintptr(416)
  1806. SYS_recvmmsg_time64 :: uintptr(417)
  1807. SYS_mq_timedsend_time64 :: uintptr(418)
  1808. SYS_mq_timedreceive_time64 :: uintptr(419)
  1809. SYS_semtimedop_time64 :: uintptr(420)
  1810. SYS_rt_sigtimedwait_time64 :: uintptr(421)
  1811. SYS_futex_time64 :: uintptr(422)
  1812. SYS_sched_rr_get_interval_time64 :: uintptr(423)
  1813. SYS_pidfd_send_signal :: uintptr(424)
  1814. SYS_io_uring_setup :: uintptr(425)
  1815. SYS_io_uring_enter :: uintptr(426)
  1816. SYS_io_uring_register :: uintptr(427)
  1817. SYS_open_tree :: uintptr(428)
  1818. SYS_move_mount :: uintptr(429)
  1819. SYS_fsopen :: uintptr(430)
  1820. SYS_fsconfig :: uintptr(431)
  1821. SYS_fsmount :: uintptr(432)
  1822. SYS_fspick :: uintptr(433)
  1823. SYS_pidfd_open :: uintptr(434)
  1824. SYS_clone3 :: uintptr(435)
  1825. SYS_close_range :: uintptr(436)
  1826. SYS_openat2 :: uintptr(437)
  1827. SYS_pidfd_getfd :: uintptr(438)
  1828. SYS_faccessat2 :: uintptr(439)
  1829. SYS_process_madvise :: uintptr(440)
  1830. SYS_epoll_pwait2 :: uintptr(441)
  1831. SYS_mount_setattr :: uintptr(442)
  1832. SYS_quotactl_fd :: uintptr(443)
  1833. SYS_landlock_create_ruleset :: uintptr(444)
  1834. SYS_landlock_add_rule :: uintptr(445)
  1835. SYS_landlock_restrict_self :: uintptr(446)
  1836. SYS_memfd_secret :: uintptr(447)
  1837. SYS_process_mrelease :: uintptr(448)
  1838. SYS_futex_waitv :: uintptr(449)
  1839. SYS_set_mempolicy_home_node :: uintptr(450)
  1840. SYS_cachestat :: uintptr(451)
  1841. SYS_fchmodat2 :: uintptr(452)
  1842. SIGCHLD :: 17
  1843. } else {
  1844. #panic("Unsupported architecture")
  1845. }
  1846. // syscall related constants
  1847. AT_FDCWD :: ~uintptr(99)
  1848. AT_REMOVEDIR :: uintptr(0x200)
  1849. AT_SYMLINK_FOLLOW :: uintptr(0x400)
  1850. AT_SYMLINK_NOFOLLOW :: uintptr(0x100)
  1851. // mmap flags
  1852. PROT_NONE :: 0x0
  1853. PROT_READ :: 0x1
  1854. PROT_WRITE :: 0x2
  1855. PROT_EXEC :: 0x4
  1856. PROT_GROWSDOWN :: 0x01000000
  1857. PROT_GROWSUP :: 0x02000000
  1858. MAP_FIXED :: 0x10
  1859. MAP_SHARED :: 0x1
  1860. MAP_PRIVATE :: 0x2
  1861. MAP_SHARED_VALIDATE :: 0x3
  1862. MAP_ANONYMOUS :: 0x20
  1863. // mremap flags
  1864. MREMAP_MAYMOVE :: 1
  1865. MREMAP_FIXED :: 2
  1866. MREMAP_DONTUNMAP :: 4
  1867. // madvise flags
  1868. MADV_NORMAL :: 0
  1869. MADV_RANDOM :: 1
  1870. MADV_SEQUENTIAL :: 2
  1871. MADV_WILLNEED :: 3
  1872. MADV_DONTNEED :: 4
  1873. MADV_FREE :: 8
  1874. MADV_REMOVE :: 9
  1875. MADV_DONTFORK :: 10
  1876. MADV_DOFORK :: 11
  1877. MADV_MERGEABLE :: 12
  1878. MADV_UNMERGEABLE :: 13
  1879. MADV_HUGEPAGE :: 14
  1880. MADV_NOHUGEPAGE :: 15
  1881. MADV_DONTDUMP :: 16
  1882. MADV_DODUMP :: 17
  1883. MADV_WIPEONFORK :: 18
  1884. MADV_KEEPONFORK :: 19
  1885. MADV_HWPOISON :: 100
  1886. // pipe2 flags
  1887. O_CLOEXEC :: 0o2000000
  1888. // poll events
  1889. POLLIN :: 0x0001
  1890. POLLPRI :: 0x0002
  1891. POLLOUT :: 0x0004
  1892. POLLERR :: 0x0008
  1893. POLLHUP :: 0x0010
  1894. POLLNVAL :: 0x0020
  1895. POLLRDNORM :: 0x0040
  1896. POLLRDBAND :: 0x0080
  1897. POLLWRNORM :: 0x0100
  1898. POLLWRBAND :: 0x0200
  1899. POLLMSG :: 0x0400
  1900. POLLREMOVE :: 0x1000
  1901. POLLRDHUP :: 0x2000
  1902. POLLFREE :: 0x4000
  1903. POLL_BUSY_LOOP :: 0x8000
  1904. // perf event data
  1905. Perf_Sample :: struct #raw_union {
  1906. period: u64,
  1907. frequency: u64,
  1908. }
  1909. Perf_Wakeup :: struct #raw_union {
  1910. events: u32,
  1911. watermark: u32,
  1912. }
  1913. Perf_Field1 :: struct #raw_union {
  1914. breakpoint_addr: u64,
  1915. kprobe_func: u64,
  1916. uprobe_path: u64,
  1917. config1: u64,
  1918. }
  1919. Perf_Field2 :: struct #raw_union {
  1920. breakpoint_len: u64,
  1921. kprobe_addr: u64,
  1922. uprobe_offset: u64,
  1923. config2: u64,
  1924. }
  1925. Perf_Event_Attr :: struct #packed {
  1926. type: u32,
  1927. size: u32,
  1928. config: u64,
  1929. sample: Perf_Sample,
  1930. sample_type: u64,
  1931. read_format: u64,
  1932. flags: Perf_Flags,
  1933. wakeup: Perf_Wakeup,
  1934. breakpoint_type: u32,
  1935. field1: Perf_Field1,
  1936. field2: Perf_Field2,
  1937. branch_sample_type: u64,
  1938. sample_regs_user: u64,
  1939. sample_stack_user: u32,
  1940. clock_id: i32,
  1941. sample_regs_intr: u64,
  1942. aux_watermark: u32,
  1943. sample_max_stack: u16,
  1944. _padding: u16,
  1945. }
  1946. Perf_Event_Flags :: distinct bit_set[Perf_Event_Flag; u64]
  1947. Perf_Event_Flag :: enum u64 {
  1948. Bit0 = 0,
  1949. Bit0_Is_Deprecated = 1,
  1950. User_Rdpmc = 2,
  1951. User_Time = 3,
  1952. User_Time_Zero = 4,
  1953. User_Time_Short = 5,
  1954. }
  1955. Perf_Capabilities :: struct #raw_union {
  1956. capabilities: u64,
  1957. flags: Perf_Event_Flags,
  1958. }
  1959. Perf_Event_mmap_Page :: struct #packed {
  1960. version: u32,
  1961. compat_version: u32,
  1962. lock: u32,
  1963. index: u32,
  1964. offset: i64,
  1965. time_enabled: u64,
  1966. time_running: u64,
  1967. cap: Perf_Capabilities,
  1968. pmc_width: u16,
  1969. time_shift: u16,
  1970. time_mult: u32,
  1971. time_offset: u64,
  1972. time_zero: u64,
  1973. size: u32,
  1974. reserved1: u32,
  1975. time_cycles: u64,
  1976. time_mask: u64,
  1977. reserved2: [116*8]u8,
  1978. data_head: u64,
  1979. data_tail: u64,
  1980. data_offset: u64,
  1981. data_size: u64,
  1982. aux_head: u64,
  1983. aux_tail: u64,
  1984. aux_offset: u64,
  1985. aux_size: u64,
  1986. }
  1987. Perf_Type_Id :: enum u32 {
  1988. Hardware = 0,
  1989. Software = 1,
  1990. Tracepoint = 2,
  1991. HW_Cache = 3,
  1992. Raw = 4,
  1993. Breakpoint = 5,
  1994. }
  1995. Perf_Hardware_Id :: enum u64 {
  1996. CPU_Cycles = 0,
  1997. Instructions = 1,
  1998. Cache_References = 2,
  1999. Cache_Misses = 3,
  2000. Branch_Instructions = 4,
  2001. Branch_Misses = 5,
  2002. Bus_Cycles = 6,
  2003. Stalled_Cycles_Frontend = 7,
  2004. Stalled_Cycles_Backend = 8,
  2005. Ref_CPU_Cycles = 9,
  2006. }
  2007. Perf_Flags :: distinct bit_set[Perf_Flag; u64]
  2008. Perf_Flag :: enum u64 {
  2009. Disabled = 0,
  2010. Inherit = 1,
  2011. Pinned = 2,
  2012. Exclusive = 3,
  2013. Exclude_User = 4,
  2014. Exclude_Kernel = 5,
  2015. Exclude_HV = 6,
  2016. Exclude_Idle = 7,
  2017. mmap = 8,
  2018. Comm = 9,
  2019. Freq = 10,
  2020. Inherit_Stat = 11,
  2021. Enable_On_Exec = 12,
  2022. Task = 13,
  2023. Watermark = 14,
  2024. Precise_IP_0 = 15,
  2025. Precise_IP_1 = 16,
  2026. mmap_Data = 17,
  2027. Sample_Id_All = 18,
  2028. Exclude_Host = 19,
  2029. Exclude_Guest = 20,
  2030. Exclude_Callchain_Kernel = 21,
  2031. Exclude_Callchain_User = 22,
  2032. mmap2 = 23,
  2033. Comm_Exec = 24,
  2034. Use_Clockid = 25,
  2035. Context_Switch = 26,
  2036. Write_Backward = 27,
  2037. Namespaces = 28,
  2038. KSymbol = 29,
  2039. BPF_Event = 30,
  2040. Aux_Output = 31,
  2041. CGroup = 32,
  2042. Text_Poke = 33,
  2043. Build_Id = 34,
  2044. Inherit_Thread = 35,
  2045. Remove_On_Exec = 36,
  2046. Sigtrap = 37,
  2047. }
  2048. sys_gettid :: proc "contextless" () -> int {
  2049. return int(intrinsics.syscall(SYS_gettid))
  2050. }
  2051. sys_getrandom :: proc "contextless" (buf: [^]byte, buflen: uint, flags: int) -> int {
  2052. return int(intrinsics.syscall(SYS_getrandom, uintptr(buf), uintptr(buflen), uintptr(flags)))
  2053. }
  2054. sys_open :: proc "contextless" (path: cstring, flags: int, mode: uint = 0o000) -> int {
  2055. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2056. return int(intrinsics.syscall(SYS_open, uintptr(rawptr(path)), uintptr(flags), uintptr(mode)))
  2057. } else { // NOTE: arm64 does not have open
  2058. return int(intrinsics.syscall(SYS_openat, AT_FDCWD, uintptr(rawptr(path)), uintptr(flags), uintptr(mode)))
  2059. }
  2060. }
  2061. sys_openat :: proc "contextless" (dfd: int, path: cstring, flags: int, mode: uint = 0o000) -> int {
  2062. return int(intrinsics.syscall(SYS_openat, uintptr(dfd), uintptr(rawptr(path)), uintptr(flags), uintptr(mode)))
  2063. }
  2064. sys_close :: proc "contextless" (fd: int) -> int {
  2065. return int(intrinsics.syscall(SYS_close, uintptr(fd)))
  2066. }
  2067. sys_read :: proc "contextless" (fd: int, buf: rawptr, size: uint) -> int {
  2068. return int(intrinsics.syscall(SYS_read, uintptr(fd), uintptr(buf), uintptr(size)))
  2069. }
  2070. sys_pread :: proc "contextless" (fd: int, buf: rawptr, size: uint, offset: i64) -> int {
  2071. when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2072. return int(intrinsics.syscall(SYS_pread64, uintptr(fd), uintptr(buf), uintptr(size), uintptr(offset)))
  2073. } else {
  2074. low := uintptr(offset & 0xFFFFFFFF)
  2075. high := uintptr(offset >> 32)
  2076. return int(intrinsics.syscall(SYS_pread64, uintptr(fd), uintptr(buf), uintptr(size), high, low))
  2077. }
  2078. }
  2079. sys_write :: proc "contextless" (fd: int, buf: rawptr, size: uint) -> int {
  2080. return int(intrinsics.syscall(SYS_write, uintptr(fd), uintptr(buf), uintptr(size)))
  2081. }
  2082. sys_pwrite :: proc "contextless" (fd: int, buf: rawptr, size: uint, offset: i64) -> int {
  2083. when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2084. return int(intrinsics.syscall(SYS_pwrite64, uintptr(fd), uintptr(buf), uintptr(size), uintptr(offset)))
  2085. } else {
  2086. low := uintptr(offset & 0xFFFFFFFF)
  2087. high := uintptr(offset >> 32)
  2088. return int(intrinsics.syscall(SYS_pwrite64, uintptr(fd), uintptr(buf), uintptr(size), high, low))
  2089. }
  2090. }
  2091. sys_lseek :: proc "contextless" (fd: int, offset: i64, whence: int) -> i64 {
  2092. when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2093. return i64(intrinsics.syscall(SYS_lseek, uintptr(fd), uintptr(offset), uintptr(whence)))
  2094. } else {
  2095. low := uintptr(offset & 0xFFFFFFFF)
  2096. high := uintptr(offset >> 32)
  2097. result: i64
  2098. res := i64(intrinsics.syscall(SYS__llseek, uintptr(fd), high, low, uintptr(&result), uintptr(whence)))
  2099. return res if res < 0 else result
  2100. }
  2101. }
  2102. sys_stat :: proc "contextless" (path: cstring, stat: rawptr) -> int {
  2103. when ODIN_ARCH == .amd64 {
  2104. return int(intrinsics.syscall(SYS_stat, uintptr(rawptr(path)), uintptr(stat)))
  2105. } else when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2106. return int(intrinsics.syscall(SYS_stat64, uintptr(rawptr(path)), uintptr(stat)))
  2107. } else { // NOTE: arm64 does not have stat
  2108. return int(intrinsics.syscall(SYS_fstatat, AT_FDCWD, uintptr(rawptr(path)), uintptr(stat), 0))
  2109. }
  2110. }
  2111. sys_fstat :: proc "contextless" (fd: int, stat: rawptr) -> int {
  2112. when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2113. return int(intrinsics.syscall(SYS_fstat, uintptr(fd), uintptr(stat)))
  2114. } else {
  2115. return int(intrinsics.syscall(SYS_fstat64, uintptr(fd), uintptr(stat)))
  2116. }
  2117. }
  2118. sys_lstat :: proc "contextless" (path: cstring, stat: rawptr) -> int {
  2119. when ODIN_ARCH == .amd64 {
  2120. return int(intrinsics.syscall(SYS_lstat, uintptr(rawptr(path)), uintptr(stat)))
  2121. } else when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2122. return int(intrinsics.syscall(SYS_lstat64, uintptr(rawptr(path)), uintptr(stat)))
  2123. } else { // NOTE: arm64 does not have any lstat
  2124. return int(intrinsics.syscall(SYS_fstatat, AT_FDCWD, uintptr(rawptr(path)), uintptr(stat), AT_SYMLINK_NOFOLLOW))
  2125. }
  2126. }
  2127. sys_readlink :: proc "contextless" (path: cstring, buf: rawptr, bufsiz: uint) -> int {
  2128. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2129. return int(intrinsics.syscall(SYS_readlink, uintptr(rawptr(path)), uintptr(buf), uintptr(bufsiz)))
  2130. } else { // NOTE: arm64 does not have readlink
  2131. return int(intrinsics.syscall(SYS_readlinkat, AT_FDCWD, uintptr(rawptr(path)), uintptr(buf), uintptr(bufsiz)))
  2132. }
  2133. }
  2134. sys_symlink :: proc "contextless" (old_name: cstring, new_name: cstring) -> int {
  2135. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2136. return int(intrinsics.syscall(SYS_symlink, uintptr(rawptr(old_name)), uintptr(rawptr(new_name))))
  2137. } else { // NOTE: arm64 does not have symlink
  2138. return int(intrinsics.syscall(SYS_symlinkat, uintptr(rawptr(old_name)), AT_FDCWD, uintptr(rawptr(new_name))))
  2139. }
  2140. }
  2141. sys_access :: proc "contextless" (path: cstring, mask: int) -> int {
  2142. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2143. return int(intrinsics.syscall(SYS_access, uintptr(rawptr(path)), uintptr(mask)))
  2144. } else { // NOTE: arm64 does not have access
  2145. return int(intrinsics.syscall(SYS_faccessat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mask)))
  2146. }
  2147. }
  2148. sys_getcwd :: proc "contextless" (buf: rawptr, size: uint) -> int {
  2149. return int(intrinsics.syscall(SYS_getcwd, uintptr(buf), uintptr(size)))
  2150. }
  2151. sys_chdir :: proc "contextless" (path: cstring) -> int {
  2152. return int(intrinsics.syscall(SYS_chdir, uintptr(rawptr(path))))
  2153. }
  2154. sys_fchdir :: proc "contextless" (fd: int) -> int {
  2155. return int(intrinsics.syscall(SYS_fchdir, uintptr(fd)))
  2156. }
  2157. sys_chmod :: proc "contextless" (path: cstring, mode: uint) -> int {
  2158. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2159. return int(intrinsics.syscall(SYS_chmod, uintptr(rawptr(path)), uintptr(mode)))
  2160. } else { // NOTE: arm64 does not have chmod
  2161. return int(intrinsics.syscall(SYS_fchmodat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mode)))
  2162. }
  2163. }
  2164. sys_fchmod :: proc "contextless" (fd: int, mode: uint) -> int {
  2165. return int(intrinsics.syscall(SYS_fchmod, uintptr(fd), uintptr(mode)))
  2166. }
  2167. sys_chown :: proc "contextless" (path: cstring, user: int, group: int) -> int {
  2168. when ODIN_ARCH != .arm64 && ODIN_ARCH !=. riscv64 {
  2169. return int(intrinsics.syscall(SYS_chown, uintptr(rawptr(path)), uintptr(user), uintptr(group)))
  2170. } else { // NOTE: arm64 does not have chown
  2171. return int(intrinsics.syscall(SYS_fchownat, AT_FDCWD, uintptr(rawptr(path)), uintptr(user), uintptr(group), 0))
  2172. }
  2173. }
  2174. sys_fchown :: proc "contextless" (fd: int, user: int, group: int) -> int {
  2175. return int(intrinsics.syscall(SYS_fchown, uintptr(fd), uintptr(user), uintptr(group)))
  2176. }
  2177. sys_lchown :: proc "contextless" (path: cstring, user: int, group: int) -> int {
  2178. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2179. return int(intrinsics.syscall(SYS_lchown, uintptr(rawptr(path)), uintptr(user), uintptr(group)))
  2180. } else { // NOTE: arm64 does not have lchown
  2181. return int(intrinsics.syscall(SYS_fchownat, AT_FDCWD, uintptr(rawptr(path)), uintptr(user), uintptr(group), AT_SYMLINK_NOFOLLOW))
  2182. }
  2183. }
  2184. sys_rename :: proc "contextless" (old, new: cstring) -> int {
  2185. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2186. return int(intrinsics.syscall(SYS_rename, uintptr(rawptr(old)), uintptr(rawptr(new))))
  2187. } else { // NOTE: arm64 does not have rename
  2188. return int(intrinsics.syscall(SYS_renameat, AT_FDCWD, uintptr(rawptr(old)), uintptr(rawptr(new))))
  2189. }
  2190. }
  2191. sys_link :: proc "contextless" (old_name: cstring, new_name: cstring) -> int {
  2192. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2193. return int(intrinsics.syscall(SYS_link, uintptr(rawptr(old_name)), uintptr(rawptr(new_name))))
  2194. } else { // NOTE: arm64 does not have link
  2195. return int(intrinsics.syscall(SYS_linkat, AT_FDCWD, uintptr(rawptr(old_name)), AT_FDCWD, uintptr(rawptr(new_name)), AT_SYMLINK_FOLLOW))
  2196. }
  2197. }
  2198. sys_unlink :: proc "contextless" (path: cstring) -> int {
  2199. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2200. return int(intrinsics.syscall(SYS_unlink, uintptr(rawptr(path))))
  2201. } else { // NOTE: arm64 does not have unlink
  2202. return int(intrinsics.syscall(SYS_unlinkat, AT_FDCWD, uintptr(rawptr(path)), 0))
  2203. }
  2204. }
  2205. sys_unlinkat :: proc "contextless" (dfd: int, path: cstring, flag: int = 0) -> int {
  2206. return int(intrinsics.syscall(SYS_unlinkat, uintptr(dfd), uintptr(rawptr(path)), uintptr(flag)))
  2207. }
  2208. sys_rmdir :: proc "contextless" (path: cstring) -> int {
  2209. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2210. return int(intrinsics.syscall(SYS_rmdir, uintptr(rawptr(path))))
  2211. } else { // NOTE: arm64 does not have rmdir
  2212. return int(intrinsics.syscall(SYS_unlinkat, AT_FDCWD, uintptr(rawptr(path)), AT_REMOVEDIR))
  2213. }
  2214. }
  2215. sys_mkdir :: proc "contextless" (path: cstring, mode: uint) -> int {
  2216. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2217. return int(intrinsics.syscall(SYS_mkdir, uintptr(rawptr(path)), uintptr(mode)))
  2218. } else { // NOTE: arm64 does not have mkdir
  2219. return int(intrinsics.syscall(SYS_mkdirat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mode)))
  2220. }
  2221. }
  2222. sys_mkdirat :: proc "contextless" (dfd: int, path: cstring, mode: uint) -> int {
  2223. return int(intrinsics.syscall(SYS_mkdirat, uintptr(dfd), uintptr(rawptr(path)), uintptr(mode)))
  2224. }
  2225. sys_mknod :: proc "contextless" (path: cstring, mode: uint, dev: int) -> int {
  2226. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2227. return int(intrinsics.syscall(SYS_mknod, uintptr(rawptr(path)), uintptr(mode), uintptr(dev)))
  2228. } else { // NOTE: arm64 does not have mknod
  2229. return int(intrinsics.syscall(SYS_mknodat, AT_FDCWD, uintptr(rawptr(path)), uintptr(mode), uintptr(dev)))
  2230. }
  2231. }
  2232. sys_mknodat :: proc "contextless" (dfd: int, path: cstring, mode: uint, dev: int) -> int {
  2233. return int(intrinsics.syscall(SYS_mknodat, uintptr(dfd), uintptr(rawptr(path)), uintptr(mode), uintptr(dev)))
  2234. }
  2235. sys_truncate :: proc "contextless" (path: cstring, length: i64) -> int {
  2236. when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2237. return int(intrinsics.syscall(SYS_truncate, uintptr(rawptr(path)), uintptr(length)))
  2238. } else {
  2239. low := uintptr(length & 0xFFFFFFFF)
  2240. high := uintptr(length >> 32)
  2241. return int(intrinsics.syscall(SYS_truncate64, uintptr(rawptr(path)), high, low))
  2242. }
  2243. }
  2244. sys_ftruncate :: proc "contextless" (fd: int, length: i64) -> int {
  2245. when ODIN_ARCH == .amd64 || ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2246. return int(intrinsics.syscall(SYS_ftruncate, uintptr(fd), uintptr(length)))
  2247. } else {
  2248. low := uintptr(length & 0xFFFFFFFF)
  2249. high := uintptr(length >> 32)
  2250. return int(intrinsics.syscall(SYS_ftruncate64, uintptr(fd), high, low))
  2251. }
  2252. }
  2253. sys_fsync :: proc "contextless" (fd: int) -> int {
  2254. return int(intrinsics.syscall(SYS_fsync, uintptr(fd)))
  2255. }
  2256. sys_getdents64 :: proc "contextless" (fd: int, dirent: rawptr, count: int) -> int {
  2257. return int(intrinsics.syscall(SYS_getdents64, uintptr(fd), uintptr(dirent), uintptr(count)))
  2258. }
  2259. sys_fork :: proc "contextless" () -> int {
  2260. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2261. return int(intrinsics.syscall(SYS_fork))
  2262. } else {
  2263. return int(intrinsics.syscall(SYS_clone, SIGCHLD))
  2264. }
  2265. }
  2266. sys_pipe2 :: proc "contextless" (fds: rawptr, flags: int) -> int {
  2267. return int(intrinsics.syscall(SYS_pipe2, uintptr(fds), uintptr(flags)))
  2268. }
  2269. sys_dup2 :: proc "contextless" (oldfd: int, newfd: int) -> int {
  2270. when ODIN_ARCH != .arm64 && ODIN_ARCH != .riscv64 {
  2271. return int(intrinsics.syscall(SYS_dup2, uintptr(oldfd), uintptr(newfd)))
  2272. } else {
  2273. return int(intrinsics.syscall(SYS_dup3, uintptr(oldfd), uintptr(newfd), 0))
  2274. }
  2275. }
  2276. sys_mmap :: proc "contextless" (addr: rawptr, length: uint, prot, flags, fd: int, offset: uintptr) -> int {
  2277. return int(intrinsics.syscall(SYS_mmap, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), offset))
  2278. }
  2279. sys_mremap :: proc "contextless" (addr: rawptr, old_length, new_length: uint, flags: int, new_addr: rawptr = nil) -> int {
  2280. return int(intrinsics.syscall(SYS_mremap, uintptr(addr), uintptr(old_length), uintptr(new_length), uintptr(flags), uintptr(new_addr)))
  2281. }
  2282. sys_munmap :: proc "contextless" (addr: rawptr, length: uint) -> int {
  2283. return int(intrinsics.syscall(SYS_munmap, uintptr(addr), uintptr(length)))
  2284. }
  2285. sys_mprotect :: proc "contextless" (addr: rawptr, length: uint, prot: int) -> int {
  2286. return int(intrinsics.syscall(SYS_mprotect, uintptr(addr), uintptr(length), uintptr(prot)))
  2287. }
  2288. sys_madvise :: proc "contextless" (addr: rawptr, length: uint, advice: int) -> int {
  2289. return int(intrinsics.syscall(SYS_madvise, uintptr(addr), uintptr(length), uintptr(advice)))
  2290. }
  2291. // NOTE: Unsure about if this works directly on 32 bit archs. It may need 32 bit version of the time struct.
  2292. // As of Linux 5.1, there is a utimensat_time64 function. Maybe use this in the future?
  2293. sys_utimensat :: proc "contextless" (dfd: int, path: cstring, times: rawptr, flags: int) -> int {
  2294. return int(intrinsics.syscall(SYS_utimensat, uintptr(dfd), uintptr(rawptr(path)), uintptr(times), uintptr(flags)))
  2295. }
  2296. sys_socket :: proc "contextless" (domain: int, type: int, protocol: int) -> int {
  2297. return int(intrinsics.syscall(SYS_socket, uintptr(domain), uintptr(type), uintptr(protocol)))
  2298. }
  2299. sys_connect :: proc "contextless" (sd: int, addr: rawptr, len: i32) -> int {
  2300. return int(intrinsics.syscall(SYS_connect, uintptr(sd), uintptr(addr), uintptr(len)))
  2301. }
  2302. sys_accept :: proc "contextless" (sd: int, addr: rawptr, len: rawptr) -> int {
  2303. return int(intrinsics.syscall(SYS_accept4, uintptr(sd), uintptr(addr), uintptr(len), uintptr(0)))
  2304. }
  2305. sys_listen :: proc "contextless" (sd: int, backlog: int) -> int {
  2306. return int(intrinsics.syscall(SYS_listen, uintptr(sd), uintptr(backlog)))
  2307. }
  2308. sys_bind :: proc "contextless" (sd: int, addr: rawptr, len: i32) -> int {
  2309. return int(intrinsics.syscall(SYS_bind, uintptr(sd), uintptr(addr), uintptr(len)))
  2310. }
  2311. sys_setsockopt :: proc "contextless" (sd: int, level: int, optname: int, optval: rawptr, optlen: i32) -> int {
  2312. return int(intrinsics.syscall(SYS_setsockopt, uintptr(sd), uintptr(level), uintptr(optname), uintptr(optval), uintptr(optlen)))
  2313. }
  2314. sys_recvfrom :: proc "contextless" (sd: int, buf: rawptr, len: uint, flags: int, addr: rawptr, alen: uintptr) -> i64 {
  2315. return i64(intrinsics.syscall(SYS_recvfrom, uintptr(sd), uintptr(buf), uintptr(len), uintptr(flags), uintptr(addr), uintptr(alen)))
  2316. }
  2317. sys_sendto :: proc "contextless" (sd: int, buf: rawptr, len: uint, flags: int, addr: rawptr, alen: i32) -> i64 {
  2318. return i64(intrinsics.syscall(SYS_sendto, uintptr(sd), uintptr(buf), uintptr(len), uintptr(flags), uintptr(addr), uintptr(alen)))
  2319. }
  2320. sys_shutdown :: proc "contextless" (sd: int, how: int) -> int {
  2321. return int(intrinsics.syscall(SYS_shutdown, uintptr(sd), uintptr(how)))
  2322. }
  2323. sys_perf_event_open :: proc "contextless" (event_attr: rawptr, pid: i32, cpu: i32, group_fd: i32, flags: u32) -> int {
  2324. return int(intrinsics.syscall(SYS_perf_event_open, uintptr(event_attr), uintptr(pid), uintptr(cpu), uintptr(group_fd), uintptr(flags)))
  2325. }
  2326. sys_personality :: proc(persona: u64) -> int {
  2327. return int(intrinsics.syscall(SYS_personality, uintptr(persona)))
  2328. }
  2329. sys_fcntl :: proc "contextless" (fd: int, cmd: int, arg: int) -> int {
  2330. return int(intrinsics.syscall(SYS_fcntl, uintptr(fd), uintptr(cmd), uintptr(arg)))
  2331. }
  2332. sys_poll :: proc "contextless" (fds: rawptr, nfds: uint, timeout: int) -> int {
  2333. // NOTE: specialcased here because `arm64` does not have `poll`
  2334. when ODIN_ARCH == .arm64 || ODIN_ARCH == .riscv64 {
  2335. seconds := i64(timeout / 1_000)
  2336. nanoseconds := i64((timeout % 1000) * 1_000_000)
  2337. timeout_spec := timespec{seconds, nanoseconds}
  2338. return int(intrinsics.syscall(SYS_ppoll, uintptr(fds), uintptr(nfds), uintptr(&timeout_spec), uintptr(0), uintptr(8)))
  2339. } else {
  2340. return int(intrinsics.syscall(SYS_poll, uintptr(fds), uintptr(nfds), uintptr(timeout)))
  2341. }
  2342. }
  2343. sys_ppoll :: proc "contextless" (fds: rawptr, nfds: uint, timeout: rawptr, sigmask: rawptr, sigsetsize: uint) -> int {
  2344. return int(intrinsics.syscall(SYS_ppoll, uintptr(fds), uintptr(nfds), uintptr(timeout), uintptr(sigmask), uintptr(sigsetsize)))
  2345. }
  2346. get_errno :: proc "contextless" (res: int) -> i32 {
  2347. if res < 0 && res > -4096 {
  2348. return i32(-res)
  2349. }
  2350. return 0
  2351. }