diff --git a/src/header/mod.rs b/src/header/mod.rs index d3a7ba758e..b4f6c0bd86 100644 --- a/src/header/mod.rs +++ b/src/header/mod.rs @@ -102,6 +102,8 @@ pub mod sys_select; pub mod sys_socket; pub mod sys_stat; pub mod sys_statvfs; +#[allow(non_upper_case_globals)] +pub mod sys_syscall; pub mod sys_time; #[deprecated] pub mod sys_timeb; diff --git a/src/header/sys_syscall/aarch64.rs b/src/header/sys_syscall/aarch64.rs new file mode 100644 index 0000000000..369a4b045a --- /dev/null +++ b/src/header/sys_syscall/aarch64.rs @@ -0,0 +1,303 @@ +// Adapted from sc crate: https://github.com/japaric/syscall.rs/blob/master/src/platform/linux-aarch64/nr.rs +// const ([A-Z_\d]+): -> const __NR_\L$1: + +pub const __NR_accept: usize = 202; +pub const __NR_accept4: usize = 242; +pub const __NR_acct: usize = 89; +pub const __NR_add_key: usize = 217; +pub const __NR_adjtimex: usize = 171; +pub const __NR_arch_specific_syscall: usize = 244; +pub const __NR_bind: usize = 200; +pub const __NR_bpf: usize = 280; +pub const __NR_brk: usize = 214; +pub const __NR_capget: usize = 90; +pub const __NR_capset: usize = 91; +pub const __NR_chdir: usize = 49; +pub const __NR_chroot: usize = 51; +pub const __NR_clock_adjtime: usize = 266; +pub const __NR_clock_getres: usize = 114; +pub const __NR_clock_gettime: usize = 113; +pub const __NR_clock_nanosleep: usize = 115; +pub const __NR_clock_settime: usize = 112; +pub const __NR_clone: usize = 220; +pub const __NR_clone3: usize = 435; +pub const __NR_close: usize = 57; +pub const __NR_close_range: usize = 436; +pub const __NR_connect: usize = 203; +pub const __NR_copy_file_range: usize = 285; +pub const __NR_delete_module: usize = 106; +pub const __NR_dup: usize = 23; +pub const __NR_dup3: usize = 24; +pub const __NR_epoll_create1: usize = 20; +pub const __NR_epoll_ctl: usize = 21; +pub const __NR_epoll_pwait: usize = 22; +pub const __NR_epoll_pwait2: usize = 441; +pub const __NR_eventfd2: usize = 19; +pub const __NR_execve: usize = 221; +pub const __NR_execveat: usize = 281; +pub const __NR_exit: usize = 93; +pub const __NR_exit_group: usize = 94; +pub const __NR_faccessat: usize = 48; +pub const __NR_faccessat2: usize = 439; +pub const __NR_fadvise64: usize = 223; +pub const __NR_fallocate: usize = 47; +pub const __NR_fanotify_init: usize = 262; +pub const __NR_fanotify_mark: usize = 263; +pub const __NR_fchdir: usize = 50; +pub const __NR_fchmod: usize = 52; +pub const __NR_fchmodat: usize = 53; +pub const __NR_fchown: usize = 55; +pub const __NR_fchownat: usize = 54; +pub const __NR_fcntl: usize = 25; +pub const __NR_fdatasync: usize = 83; +pub const __NR_fgetxattr: usize = 10; +pub const __NR_finit_module: usize = 273; +pub const __NR_flistxattr: usize = 13; +pub const __NR_flock: usize = 32; +pub const __NR_fremovexattr: usize = 16; +pub const __NR_fsconfig: usize = 431; +pub const __NR_fsetxattr: usize = 7; +pub const __NR_fsmount: usize = 432; +pub const __NR_fsopen: usize = 430; +pub const __NR_fspick: usize = 433; +pub const __NR_fstat: usize = 80; +pub const __NR_fstatfs: usize = 44; +pub const __NR_fsync: usize = 82; +pub const __NR_ftruncate: usize = 46; +pub const __NR_futex: usize = 98; +pub const __NR_get_mempolicy: usize = 236; +pub const __NR_get_robust_list: usize = 100; +pub const __NR_getcpu: usize = 168; +pub const __NR_getcwd: usize = 17; +pub const __NR_getdents64: usize = 61; +pub const __NR_getegid: usize = 177; +pub const __NR_geteuid: usize = 175; +pub const __NR_getgid: usize = 176; +pub const __NR_getgroups: usize = 158; +pub const __NR_getitimer: usize = 102; +pub const __NR_getpeername: usize = 205; +pub const __NR_getpgid: usize = 155; +pub const __NR_getpid: usize = 172; +pub const __NR_getppid: usize = 173; +pub const __NR_getpriority: usize = 141; +pub const __NR_getrandom: usize = 278; +pub const __NR_getresgid: usize = 150; +pub const __NR_getresuid: usize = 148; +pub const __NR_getrlimit: usize = 163; +pub const __NR_getrusage: usize = 165; +pub const __NR_getsid: usize = 156; +pub const __NR_getsockname: usize = 204; +pub const __NR_getsockopt: usize = 209; +pub const __NR_gettid: usize = 178; +pub const __NR_gettimeofday: usize = 169; +pub const __NR_getuid: usize = 174; +pub const __NR_getxattr: usize = 8; +pub const __NR_init_module: usize = 105; +pub const __NR_inotify_add_watch: usize = 27; +pub const __NR_inotify_init1: usize = 26; +pub const __NR_inotify_rm_watch: usize = 28; +pub const __NR_io_cancel: usize = 3; +pub const __NR_io_destroy: usize = 1; +pub const __NR_io_getevents: usize = 4; +pub const __NR_io_pgetevents: usize = 292; +pub const __NR_io_setup: usize = 0; +pub const __NR_io_submit: usize = 2; +pub const __NR_io_uring_enter: usize = 426; +pub const __NR_io_uring_register: usize = 427; +pub const __NR_io_uring_setup: usize = 425; +pub const __NR_ioctl: usize = 29; +pub const __NR_ioprio_get: usize = 31; +pub const __NR_ioprio_set: usize = 30; +pub const __NR_kcmp: usize = 272; +pub const __NR_kexec_file_load: usize = 294; +pub const __NR_kexec_load: usize = 104; +pub const __NR_keyctl: usize = 219; +pub const __NR_kill: usize = 129; +pub const __NR_lgetxattr: usize = 9; +pub const __NR_linkat: usize = 37; +pub const __NR_listen: usize = 201; +pub const __NR_listxattr: usize = 11; +pub const __NR_llistxattr: usize = 12; +pub const __NR_lookup_dcookie: usize = 18; +pub const __NR_lremovexattr: usize = 15; +pub const __NR_lseek: usize = 62; +pub const __NR_lsetxattr: usize = 6; +pub const __NR_madvise: usize = 233; +pub const __NR_mbind: usize = 235; +pub const __NR_membarrier: usize = 283; +pub const __NR_memfd_create: usize = 279; +pub const __NR_migrate_pages: usize = 238; +pub const __NR_mincore: usize = 232; +pub const __NR_mkdirat: usize = 34; +pub const __NR_mknodat: usize = 33; +pub const __NR_mlock: usize = 228; +pub const __NR_mlock2: usize = 284; +pub const __NR_mlockall: usize = 230; +pub const __NR_mmap: usize = 222; +pub const __NR_mount: usize = 40; +pub const __NR_mount_setattr: usize = 442; +pub const __NR_move_mount: usize = 429; +pub const __NR_move_pages: usize = 239; +pub const __NR_mprotect: usize = 226; +pub const __NR_mq_getsetattr: usize = 185; +pub const __NR_mq_notify: usize = 184; +pub const __NR_mq_open: usize = 180; +pub const __NR_mq_timedreceive: usize = 183; +pub const __NR_mq_timedsend: usize = 182; +pub const __NR_mq_unlink: usize = 181; +pub const __NR_mremap: usize = 216; +pub const __NR_msgctl: usize = 187; +pub const __NR_msgget: usize = 186; +pub const __NR_msgrcv: usize = 188; +pub const __NR_msgsnd: usize = 189; +pub const __NR_msync: usize = 227; +pub const __NR_munlock: usize = 229; +pub const __NR_munlockall: usize = 231; +pub const __NR_munmap: usize = 215; +pub const __NR_name_to_handle_at: usize = 264; +pub const __NR_nanosleep: usize = 101; +pub const __NR_newfstatat: usize = 79; +pub const __NR_nfsservctl: usize = 42; +pub const __NR_open_by_handle_at: usize = 265; +pub const __NR_open_tree: usize = 428; +pub const __NR_openat: usize = 56; +pub const __NR_openat2: usize = 437; +pub const __NR_perf_event_open: usize = 241; +pub const __NR_personality: usize = 92; +pub const __NR_pidfd_getfd: usize = 438; +pub const __NR_pidfd_open: usize = 434; +pub const __NR_pidfd_send_signal: usize = 424; +pub const __NR_pipe2: usize = 59; +pub const __NR_pivot_root: usize = 41; +pub const __NR_pkey_alloc: usize = 289; +pub const __NR_pkey_free: usize = 290; +pub const __NR_pkey_mprotect: usize = 288; +pub const __NR_ppoll: usize = 73; +pub const __NR_prctl: usize = 167; +pub const __NR_pread64: usize = 67; +pub const __NR_preadv: usize = 69; +pub const __NR_preadv2: usize = 286; +pub const __NR_prlimit64: usize = 261; +pub const __NR_process_madvise: usize = 440; +pub const __NR_process_vm_readv: usize = 270; +pub const __NR_process_vm_writev: usize = 271; +pub const __NR_pselect6: usize = 72; +pub const __NR_ptrace: usize = 117; +pub const __NR_pwrite64: usize = 68; +pub const __NR_pwritev: usize = 70; +pub const __NR_pwritev2: usize = 287; +pub const __NR_quotactl: usize = 60; +pub const __NR_read: usize = 63; +pub const __NR_readahead: usize = 213; +pub const __NR_readlinkat: usize = 78; +pub const __NR_readv: usize = 65; +pub const __NR_reboot: usize = 142; +pub const __NR_recvfrom: usize = 207; +pub const __NR_recvmmsg: usize = 243; +pub const __NR_recvmsg: usize = 212; +pub const __NR_remap_file_pages: usize = 234; +pub const __NR_removexattr: usize = 14; +pub const __NR_renameat: usize = 38; +pub const __NR_renameat2: usize = 276; +pub const __NR_request_key: usize = 218; +pub const __NR_restart_syscall: usize = 128; +pub const __NR_rseq: usize = 293; +pub const __NR_rt_sigaction: usize = 134; +pub const __NR_rt_sigpending: usize = 136; +pub const __NR_rt_sigprocmask: usize = 135; +pub const __NR_rt_sigqueueinfo: usize = 138; +pub const __NR_rt_sigreturn: usize = 139; +pub const __NR_rt_sigsuspend: usize = 133; +pub const __NR_rt_sigtimedwait: usize = 137; +pub const __NR_rt_tgsigqueueinfo: usize = 240; +pub const __NR_sched_get_priority_max: usize = 125; +pub const __NR_sched_get_priority_min: usize = 126; +pub const __NR_sched_getaffinity: usize = 123; +pub const __NR_sched_getattr: usize = 275; +pub const __NR_sched_getparam: usize = 121; +pub const __NR_sched_getscheduler: usize = 120; +pub const __NR_sched_rr_get_interval: usize = 127; +pub const __NR_sched_setaffinity: usize = 122; +pub const __NR_sched_setattr: usize = 274; +pub const __NR_sched_setparam: usize = 118; +pub const __NR_sched_setscheduler: usize = 119; +pub const __NR_sched_yield: usize = 124; +pub const __NR_seccomp: usize = 277; +pub const __NR_semctl: usize = 191; +pub const __NR_semget: usize = 190; +pub const __NR_semop: usize = 193; +pub const __NR_semtimedop: usize = 192; +pub const __NR_sendfile: usize = 71; +pub const __NR_sendmmsg: usize = 269; +pub const __NR_sendmsg: usize = 211; +pub const __NR_sendto: usize = 206; +pub const __NR_set_mempolicy: usize = 237; +pub const __NR_set_robust_list: usize = 99; +pub const __NR_set_tid_address: usize = 96; +pub const __NR_setdomainname: usize = 162; +pub const __NR_setfsgid: usize = 152; +pub const __NR_setfsuid: usize = 151; +pub const __NR_setgid: usize = 144; +pub const __NR_setgroups: usize = 159; +pub const __NR_sethostname: usize = 161; +pub const __NR_setitimer: usize = 103; +pub const __NR_setns: usize = 268; +pub const __NR_setpgid: usize = 154; +pub const __NR_setpriority: usize = 140; +pub const __NR_setregid: usize = 143; +pub const __NR_setresgid: usize = 149; +pub const __NR_setresuid: usize = 147; +pub const __NR_setreuid: usize = 145; +pub const __NR_setrlimit: usize = 164; +pub const __NR_setsid: usize = 157; +pub const __NR_setsockopt: usize = 208; +pub const __NR_settimeofday: usize = 170; +pub const __NR_setuid: usize = 146; +pub const __NR_setxattr: usize = 5; +pub const __NR_shmat: usize = 196; +pub const __NR_shmctl: usize = 195; +pub const __NR_shmdt: usize = 197; +pub const __NR_shmget: usize = 194; +pub const __NR_shutdown: usize = 210; +pub const __NR_sigaltstack: usize = 132; +pub const __NR_signalfd4: usize = 74; +pub const __NR_socket: usize = 198; +pub const __NR_socketpair: usize = 199; +pub const __NR_splice: usize = 76; +pub const __NR_statfs: usize = 43; +pub const __NR_statx: usize = 291; +pub const __NR_swapoff: usize = 225; +pub const __NR_swapon: usize = 224; +pub const __NR_symlinkat: usize = 36; +pub const __NR_sync: usize = 81; +pub const __NR_sync_file_range: usize = 84; +pub const __NR_syncfs: usize = 267; +pub const __NR_syscalls: usize = 443; +pub const __NR_sysinfo: usize = 179; +pub const __NR_syslog: usize = 116; +pub const __NR_tee: usize = 77; +pub const __NR_tgkill: usize = 131; +pub const __NR_timer_create: usize = 107; +pub const __NR_timer_delete: usize = 111; +pub const __NR_timer_getoverrun: usize = 109; +pub const __NR_timer_gettime: usize = 108; +pub const __NR_timer_settime: usize = 110; +pub const __NR_timerfd_create: usize = 85; +pub const __NR_timerfd_gettime: usize = 87; +pub const __NR_timerfd_settime: usize = 86; +pub const __NR_times: usize = 153; +pub const __NR_tkill: usize = 130; +pub const __NR_truncate: usize = 45; +pub const __NR_umask: usize = 166; +pub const __NR_umount2: usize = 39; +pub const __NR_uname: usize = 160; +pub const __NR_unlinkat: usize = 35; +pub const __NR_unshare: usize = 97; +pub const __NR_userfaultfd: usize = 282; +pub const __NR_utimensat: usize = 88; +pub const __NR_vhangup: usize = 58; +pub const __NR_vmsplice: usize = 75; +pub const __NR_wait4: usize = 260; +pub const __NR_waitid: usize = 95; +pub const __NR_write: usize = 64; +pub const __NR_writev: usize = 66; diff --git a/src/header/sys_syscall/cbindgen.toml b/src/header/sys_syscall/cbindgen.toml new file mode 100644 index 0000000000..6976288d42 --- /dev/null +++ b/src/header/sys_syscall/cbindgen.toml @@ -0,0 +1,8 @@ +# POSIX header spec: https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/sys_statvfs.h.html +# +# Spec quotations relating to includes: +# - "The header shall define the fsblkcnt_t and fsfilcnt_t types as described in ." +sys_includes = ["sys/types.h"] +include_guard = "_SYS_SYSCALL_H" +language = "C" +no_includes = true diff --git a/src/header/sys_syscall/mod.rs b/src/header/sys_syscall/mod.rs new file mode 100644 index 0000000000..cb8c1350e7 --- /dev/null +++ b/src/header/sys_syscall/mod.rs @@ -0,0 +1,5 @@ +// copied from sc crate +#[cfg(all(target_os = "linux", target_arch = "aarch64"))] +pub mod aarch64; +#[cfg(all(target_os = "linux", target_arch = "x86_64"))] +pub mod x86_64; diff --git a/src/header/sys_syscall/x86_64.rs b/src/header/sys_syscall/x86_64.rs new file mode 100644 index 0000000000..d5fd94ae8a --- /dev/null +++ b/src/header/sys_syscall/x86_64.rs @@ -0,0 +1,356 @@ +// Adapted from sc crate: https://github.com/japaric/syscall.rs/blob/master/src/platform/linux-x86_64/nr.rs +// const ([A-Z_\d]+): -> const __NR_\L$1: + +pub const __NR_accept: usize = 43; +pub const __NR_accept4: usize = 288; +pub const __NR_access: usize = 21; +pub const __NR_acct: usize = 163; +pub const __NR_add_key: usize = 248; +pub const __NR_adjtimex: usize = 159; +pub const __NR_afs_syscall: usize = 183; +pub const __NR_alarm: usize = 37; +pub const __NR_arch_prctl: usize = 158; +pub const __NR_bind: usize = 49; +pub const __NR_bpf: usize = 321; +pub const __NR_brk: usize = 12; +pub const __NR_capget: usize = 125; +pub const __NR_capset: usize = 126; +pub const __NR_chdir: usize = 80; +pub const __NR_chmod: usize = 90; +pub const __NR_chown: usize = 92; +pub const __NR_chroot: usize = 161; +pub const __NR_clock_adjtime: usize = 305; +pub const __NR_clock_getres: usize = 229; +pub const __NR_clock_gettime: usize = 228; +pub const __NR_clock_nanosleep: usize = 230; +pub const __NR_clock_settime: usize = 227; +pub const __NR_clone: usize = 56; +pub const __NR_clone3: usize = 435; +pub const __NR_close: usize = 3; +pub const __NR_close_range: usize = 436; +pub const __NR_connect: usize = 42; +pub const __NR_copy_file_range: usize = 326; +pub const __NR_creat: usize = 85; +pub const __NR_create_module: usize = 174; +pub const __NR_delete_module: usize = 176; +pub const __NR_dup: usize = 32; +pub const __NR_dup2: usize = 33; +pub const __NR_dup3: usize = 292; +pub const __NR_epoll_create: usize = 213; +pub const __NR_epoll_create1: usize = 291; +pub const __NR_epoll_ctl: usize = 233; +pub const __NR_epoll_ctl_old: usize = 214; +pub const __NR_epoll_pwait: usize = 281; +pub const __NR_epoll_pwait2: usize = 441; +pub const __NR_epoll_wait: usize = 232; +pub const __NR_epoll_wait_old: usize = 215; +pub const __NR_eventfd: usize = 284; +pub const __NR_eventfd2: usize = 290; +pub const __NR_execve: usize = 59; +pub const __NR_execveat: usize = 322; +pub const __NR_exit: usize = 60; +pub const __NR_exit_group: usize = 231; +pub const __NR_faccessat: usize = 269; +pub const __NR_faccessat2: usize = 439; +pub const __NR_fadvise64: usize = 221; +pub const __NR_fallocate: usize = 285; +pub const __NR_fanotify_init: usize = 300; +pub const __NR_fanotify_mark: usize = 301; +pub const __NR_fchdir: usize = 81; +pub const __NR_fchmod: usize = 91; +pub const __NR_fchmodat: usize = 268; +pub const __NR_fchown: usize = 93; +pub const __NR_fchownat: usize = 260; +pub const __NR_fcntl: usize = 72; +pub const __NR_fdatasync: usize = 75; +pub const __NR_fgetxattr: usize = 193; +pub const __NR_finit_module: usize = 313; +pub const __NR_flistxattr: usize = 196; +pub const __NR_flock: usize = 73; +pub const __NR_fork: usize = 57; +pub const __NR_fremovexattr: usize = 199; +pub const __NR_fsconfig: usize = 431; +pub const __NR_fsetxattr: usize = 190; +pub const __NR_fsmount: usize = 432; +pub const __NR_fsopen: usize = 430; +pub const __NR_fspick: usize = 433; +pub const __NR_fstat: usize = 5; +pub const __NR_fstatfs: usize = 138; +pub const __NR_fsync: usize = 74; +pub const __NR_ftruncate: usize = 77; +pub const __NR_futex: usize = 202; +pub const __NR_futimesat: usize = 261; +pub const __NR_get_kernel_syms: usize = 177; +pub const __NR_get_mempolicy: usize = 239; +pub const __NR_get_robust_list: usize = 274; +pub const __NR_get_thread_area: usize = 211; +pub const __NR_getcpu: usize = 309; +pub const __NR_getcwd: usize = 79; +pub const __NR_getdents: usize = 78; +pub const __NR_getdents64: usize = 217; +pub const __NR_getegid: usize = 108; +pub const __NR_geteuid: usize = 107; +pub const __NR_getgid: usize = 104; +pub const __NR_getgroups: usize = 115; +pub const __NR_getitimer: usize = 36; +pub const __NR_getpeername: usize = 52; +pub const __NR_getpgid: usize = 121; +pub const __NR_getpgrp: usize = 111; +pub const __NR_getpid: usize = 39; +pub const __NR_getpmsg: usize = 181; +pub const __NR_getppid: usize = 110; +pub const __NR_getpriority: usize = 140; +pub const __NR_getrandom: usize = 318; +pub const __NR_getresgid: usize = 120; +pub const __NR_getresuid: usize = 118; +pub const __NR_getrlimit: usize = 97; +pub const __NR_getrusage: usize = 98; +pub const __NR_getsid: usize = 124; +pub const __NR_getsockname: usize = 51; +pub const __NR_getsockopt: usize = 55; +pub const __NR_gettid: usize = 186; +pub const __NR_gettimeofday: usize = 96; +pub const __NR_getuid: usize = 102; +pub const __NR_getxattr: usize = 191; +pub const __NR_init_module: usize = 175; +pub const __NR_inotify_add_watch: usize = 254; +pub const __NR_inotify_init: usize = 253; +pub const __NR_inotify_init1: usize = 294; +pub const __NR_inotify_rm_watch: usize = 255; +pub const __NR_io_cancel: usize = 210; +pub const __NR_io_destroy: usize = 207; +pub const __NR_io_getevents: usize = 208; +pub const __NR_io_pgetevents: usize = 333; +pub const __NR_io_setup: usize = 206; +pub const __NR_io_submit: usize = 209; +pub const __NR_io_uring_enter: usize = 426; +pub const __NR_io_uring_register: usize = 427; +pub const __NR_io_uring_setup: usize = 425; +pub const __NR_ioctl: usize = 16; +pub const __NR_ioperm: usize = 173; +pub const __NR_iopl: usize = 172; +pub const __NR_ioprio_get: usize = 252; +pub const __NR_ioprio_set: usize = 251; +pub const __NR_kcmp: usize = 312; +pub const __NR_kexec_file_load: usize = 320; +pub const __NR_kexec_load: usize = 246; +pub const __NR_keyctl: usize = 250; +pub const __NR_kill: usize = 62; +pub const __NR_lchown: usize = 94; +pub const __NR_lgetxattr: usize = 192; +pub const __NR_link: usize = 86; +pub const __NR_linkat: usize = 265; +pub const __NR_listen: usize = 50; +pub const __NR_listxattr: usize = 194; +pub const __NR_llistxattr: usize = 195; +pub const __NR_lookup_dcookie: usize = 212; +pub const __NR_lremovexattr: usize = 198; +pub const __NR_lseek: usize = 8; +pub const __NR_lsetxattr: usize = 189; +pub const __NR_lstat: usize = 6; +pub const __NR_madvise: usize = 28; +pub const __NR_mbind: usize = 237; +pub const __NR_membarrier: usize = 324; +pub const __NR_memfd_create: usize = 319; +pub const __NR_migrate_pages: usize = 256; +pub const __NR_mincore: usize = 27; +pub const __NR_mkdir: usize = 83; +pub const __NR_mkdirat: usize = 258; +pub const __NR_mknod: usize = 133; +pub const __NR_mknodat: usize = 259; +pub const __NR_mlock: usize = 149; +pub const __NR_mlock2: usize = 325; +pub const __NR_mlockall: usize = 151; +pub const __NR_mmap: usize = 9; +pub const __NR_modify_ldt: usize = 154; +pub const __NR_mount: usize = 165; +pub const __NR_mount_setattr: usize = 442; +pub const __NR_move_mount: usize = 429; +pub const __NR_move_pages: usize = 279; +pub const __NR_mprotect: usize = 10; +pub const __NR_mq_getsetattr: usize = 245; +pub const __NR_mq_notify: usize = 244; +pub const __NR_mq_open: usize = 240; +pub const __NR_mq_timedreceive: usize = 243; +pub const __NR_mq_timedsend: usize = 242; +pub const __NR_mq_unlink: usize = 241; +pub const __NR_mremap: usize = 25; +pub const __NR_msgctl: usize = 71; +pub const __NR_msgget: usize = 68; +pub const __NR_msgrcv: usize = 70; +pub const __NR_msgsnd: usize = 69; +pub const __NR_msync: usize = 26; +pub const __NR_munlock: usize = 150; +pub const __NR_munlockall: usize = 152; +pub const __NR_munmap: usize = 11; +pub const __NR_name_to_handle_at: usize = 303; +pub const __NR_nanosleep: usize = 35; +pub const __NR_newfstatat: usize = 262; +pub const __NR_nfsservctl: usize = 180; +pub const __NR_open: usize = 2; +pub const __NR_open_by_handle_at: usize = 304; +pub const __NR_open_tree: usize = 428; +pub const __NR_openat: usize = 257; +pub const __NR_openat2: usize = 437; +pub const __NR_pause: usize = 34; +pub const __NR_perf_event_open: usize = 298; +pub const __NR_personality: usize = 135; +pub const __NR_pidfd_getfd: usize = 438; +pub const __NR_pidfd_open: usize = 434; +pub const __NR_pidfd_send_signal: usize = 424; +pub const __NR_pipe: usize = 22; +pub const __NR_pipe2: usize = 293; +pub const __NR_pivot_root: usize = 155; +pub const __NR_pkey_alloc: usize = 330; +pub const __NR_pkey_free: usize = 331; +pub const __NR_pkey_mprotect: usize = 329; +pub const __NR_poll: usize = 7; +pub const __NR_ppoll: usize = 271; +pub const __NR_prctl: usize = 157; +pub const __NR_pread64: usize = 17; +pub const __NR_preadv: usize = 295; +pub const __NR_preadv2: usize = 327; +pub const __NR_prlimit64: usize = 302; +pub const __NR_process_madvise: usize = 440; +pub const __NR_process_vm_readv: usize = 310; +pub const __NR_process_vm_writev: usize = 311; +pub const __NR_pselect6: usize = 270; +pub const __NR_ptrace: usize = 101; +pub const __NR_putpmsg: usize = 182; +pub const __NR_pwrite64: usize = 18; +pub const __NR_pwritev: usize = 296; +pub const __NR_pwritev2: usize = 328; +pub const __NR_query_module: usize = 178; +pub const __NR_quotactl: usize = 179; +pub const __NR_read: usize = 0; +pub const __NR_readahead: usize = 187; +pub const __NR_readlink: usize = 89; +pub const __NR_readlinkat: usize = 267; +pub const __NR_readv: usize = 19; +pub const __NR_reboot: usize = 169; +pub const __NR_recvfrom: usize = 45; +pub const __NR_recvmmsg: usize = 299; +pub const __NR_recvmsg: usize = 47; +pub const __NR_remap_file_pages: usize = 216; +pub const __NR_removexattr: usize = 197; +pub const __NR_rename: usize = 82; +pub const __NR_renameat: usize = 264; +pub const __NR_renameat2: usize = 316; +pub const __NR_request_key: usize = 249; +pub const __NR_restart_syscall: usize = 219; +pub const __NR_rmdir: usize = 84; +pub const __NR_rseq: usize = 334; +pub const __NR_rt_sigaction: usize = 13; +pub const __NR_rt_sigpending: usize = 127; +pub const __NR_rt_sigprocmask: usize = 14; +pub const __NR_rt_sigqueueinfo: usize = 129; +pub const __NR_rt_sigreturn: usize = 15; +pub const __NR_rt_sigsuspend: usize = 130; +pub const __NR_rt_sigtimedwait: usize = 128; +pub const __NR_rt_tgsigqueueinfo: usize = 297; +pub const __NR_sched_get_priority_max: usize = 146; +pub const __NR_sched_get_priority_min: usize = 147; +pub const __NR_sched_getaffinity: usize = 204; +pub const __NR_sched_getattr: usize = 315; +pub const __NR_sched_getparam: usize = 143; +pub const __NR_sched_getscheduler: usize = 145; +pub const __NR_sched_rr_get_interval: usize = 148; +pub const __NR_sched_setaffinity: usize = 203; +pub const __NR_sched_setattr: usize = 314; +pub const __NR_sched_setparam: usize = 142; +pub const __NR_sched_setscheduler: usize = 144; +pub const __NR_sched_yield: usize = 24; +pub const __NR_seccomp: usize = 317; +pub const __NR_security: usize = 185; +pub const __NR_select: usize = 23; +pub const __NR_semctl: usize = 66; +pub const __NR_semget: usize = 64; +pub const __NR_semop: usize = 65; +pub const __NR_semtimedop: usize = 220; +pub const __NR_sendfile: usize = 40; +pub const __NR_sendmmsg: usize = 307; +pub const __NR_sendmsg: usize = 46; +pub const __NR_sendto: usize = 44; +pub const __NR_set_mempolicy: usize = 238; +pub const __NR_set_robust_list: usize = 273; +pub const __NR_set_thread_area: usize = 205; +pub const __NR_set_tid_address: usize = 218; +pub const __NR_setdomainname: usize = 171; +pub const __NR_setfsgid: usize = 123; +pub const __NR_setfsuid: usize = 122; +pub const __NR_setgid: usize = 106; +pub const __NR_setgroups: usize = 116; +pub const __NR_sethostname: usize = 170; +pub const __NR_setitimer: usize = 38; +pub const __NR_setns: usize = 308; +pub const __NR_setpgid: usize = 109; +pub const __NR_setpriority: usize = 141; +pub const __NR_setregid: usize = 114; +pub const __NR_setresgid: usize = 119; +pub const __NR_setresuid: usize = 117; +pub const __NR_setreuid: usize = 113; +pub const __NR_setrlimit: usize = 160; +pub const __NR_setsid: usize = 112; +pub const __NR_setsockopt: usize = 54; +pub const __NR_settimeofday: usize = 164; +pub const __NR_setuid: usize = 105; +pub const __NR_setxattr: usize = 188; +pub const __NR_shmat: usize = 30; +pub const __NR_shmctl: usize = 31; +pub const __NR_shmdt: usize = 67; +pub const __NR_shmget: usize = 29; +pub const __NR_shutdown: usize = 48; +pub const __NR_sigaltstack: usize = 131; +pub const __NR_signalfd: usize = 282; +pub const __NR_signalfd4: usize = 289; +pub const __NR_socket: usize = 41; +pub const __NR_socketpair: usize = 53; +pub const __NR_splice: usize = 275; +pub const __NR_stat: usize = 4; +pub const __NR_statfs: usize = 137; +pub const __NR_statx: usize = 332; +pub const __NR_swapoff: usize = 168; +pub const __NR_swapon: usize = 167; +pub const __NR_symlink: usize = 88; +pub const __NR_symlinkat: usize = 266; +pub const __NR_sync: usize = 162; +pub const __NR_sync_file_range: usize = 277; +pub const __NR_syncfs: usize = 306; +pub const __NR_sysfs: usize = 139; +pub const __NR_sysinfo: usize = 99; +pub const __NR_syslog: usize = 103; +pub const __NR_tee: usize = 276; +pub const __NR_tgkill: usize = 234; +pub const __NR_time: usize = 201; +pub const __NR_timer_create: usize = 222; +pub const __NR_timer_delete: usize = 226; +pub const __NR_timer_getoverrun: usize = 225; +pub const __NR_timer_gettime: usize = 224; +pub const __NR_timer_settime: usize = 223; +pub const __NR_timerfd_create: usize = 283; +pub const __NR_timerfd_gettime: usize = 287; +pub const __NR_timerfd_settime: usize = 286; +pub const __NR_times: usize = 100; +pub const __NR_tkill: usize = 200; +pub const __NR_truncate: usize = 76; +pub const __NR_tuxcall: usize = 184; +pub const __NR_umask: usize = 95; +pub const __NR_umount2: usize = 166; +pub const __NR_uname: usize = 63; +pub const __NR_unlink: usize = 87; +pub const __NR_unlinkat: usize = 263; +pub const __NR_unshare: usize = 272; +pub const __NR_uselib: usize = 134; +pub const __NR_userfaultfd: usize = 323; +pub const __NR_ustat: usize = 136; +pub const __NR_utime: usize = 132; +pub const __NR_utimensat: usize = 280; +pub const __NR_utimes: usize = 235; +pub const __NR_vfork: usize = 58; +pub const __NR_vhangup: usize = 153; +pub const __NR_vmsplice: usize = 278; +pub const __NR_vserver: usize = 236; +pub const __NR_wait4: usize = 61; +pub const __NR_waitid: usize = 247; +pub const __NR_write: usize = 1; +pub const __NR_writev: usize = 20; diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index d3bc890f48..205a77a413 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -54,6 +54,8 @@ mod brk; mod getopt; mod getpass; mod pathconf; +#[cfg(target_os = "linux")] +pub mod syscall; mod sysconf; pub const F_OK: c_int = 0; diff --git a/src/header/unistd/syscall.rs b/src/header/unistd/syscall.rs new file mode 100644 index 0000000000..d9d00218bf --- /dev/null +++ b/src/header/unistd/syscall.rs @@ -0,0 +1,14 @@ +use crate::platform::types::c_long; + +/// Non-POSIX, see . +#[unsafe(no_mangle)] +pub unsafe extern "C" fn syscall(sysno: c_long, mut args: ...) -> c_long { + let a1 = unsafe { args.arg::() }; + let a2 = unsafe { args.arg::() }; + let a3 = unsafe { args.arg::() }; + let a4 = unsafe { args.arg::() }; + let a5 = unsafe { args.arg::() }; + let a6 = unsafe { args.arg::() }; + + (unsafe { sc::syscall6(sysno as usize, a1, a2, a3, a4, a5, a6) }) as c_long +}