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