add non-x86 syscall ids

master
equation314 6 years ago
parent 18626a2a19
commit eca05a1685

@ -1,4 +1,284 @@
pub fn translate(id: usize) -> usize { //! AArch64 syscall ids
// FIXME: translate syscall id on aarch64 //! Reference: https://git.musl-libc.org/cgit/musl/tree/arch/aarch64/bits/syscall.h.in
id
} pub const SYS_IO_SETUP: usize = 0;
pub const SYS_IO_DESTROY: usize = 1;
pub const SYS_IO_SUBMIT: usize = 2;
pub const SYS_IO_CANCEL: usize = 3;
pub const SYS_IO_GETEVENTS: usize = 4;
pub const SYS_SETXATTR: usize = 5;
pub const SYS_LSETXATTR: usize = 6;
pub const SYS_FSETXATTR: usize = 7;
pub const SYS_GETXATTR: usize = 8;
pub const SYS_LGETXATTR: usize = 9;
pub const SYS_FGETXATTR: usize = 10;
pub const SYS_LISTXATTR: usize = 11;
pub const SYS_LLISTXATTR: usize = 12;
pub const SYS_FLISTXATTR: usize = 13;
pub const SYS_REMOVEXATTR: usize = 14;
pub const SYS_LREMOVEXATTR: usize = 15;
pub const SYS_FREMOVEXATTR: usize = 16;
pub const SYS_GETCWD: usize = 17;
pub const SYS_LOOKUP_DCOOKIE: usize = 18;
pub const SYS_EVENTFD2: usize = 19;
pub const SYS_EPOLL_CREATE1: usize = 20;
pub const SYS_EPOLL_CTL: usize = 21;
pub const SYS_EPOLL_PWAIT: usize = 22;
pub const SYS_DUP: usize = 23;
pub const SYS_DUP3: usize = 24;
pub const SYS_FCNTL: usize = 25;
pub const SYS_INOTIFY_INIT1: usize = 26;
pub const SYS_INOTIFY_ADD_WATCH: usize = 27;
pub const SYS_INOTIFY_RM_WATCH: usize = 28;
pub const SYS_IOCTL: usize = 29;
pub const SYS_IOPRIO_SET: usize = 30;
pub const SYS_IOPRIO_GET: usize = 31;
pub const SYS_FLOCK: usize = 32;
pub const SYS_MKNODAT: usize = 33;
pub const SYS_MKDIRAT: usize = 34;
pub const SYS_UNLINKAT: usize = 35;
pub const SYS_SYMLINKAT: usize = 36;
pub const SYS_LINKAT: usize = 37;
pub const SYS_RENAMEAT: usize = 38;
pub const SYS_UMOUNT2: usize = 39;
pub const SYS_MOUNT: usize = 40;
pub const SYS_PIVOT_ROOT: usize = 41;
pub const SYS_NFSSERVCTL: usize = 42;
pub const SYS_STATFS: usize = 43;
pub const SYS_FSTATFS: usize = 44;
pub const SYS_TRUNCATE: usize = 45;
pub const SYS_FTRUNCATE: usize = 46;
pub const SYS_FALLOCATE: usize = 47;
pub const SYS_FACCESSAT: usize = 48;
pub const SYS_CHDIR: usize = 49;
pub const SYS_FCHDIR: usize = 50;
pub const SYS_CHROOT: usize = 51;
pub const SYS_FCHMOD: usize = 52;
pub const SYS_FCHMODAT: usize = 53;
pub const SYS_FCHOWNAT: usize = 54;
pub const SYS_FCHOWN: usize = 55;
pub const SYS_OPENAT: usize = 56;
pub const SYS_CLOSE: usize = 57;
pub const SYS_VHANGUP: usize = 58;
pub const SYS_PIPE2: usize = 59;
pub const SYS_QUOTACTL: usize = 60;
pub const SYS_GETDENTS64: usize = 61;
pub const SYS_LSEEK: usize = 62;
pub const SYS_READ: usize = 63;
pub const SYS_WRITE: usize = 64;
pub const SYS_READV: usize = 65;
pub const SYS_WRITEV: usize = 66;
pub const SYS_PREAD64: usize = 67;
pub const SYS_PWRITE64: usize = 68;
pub const SYS_PREADV: usize = 69;
pub const SYS_PWRITEV: usize = 70;
pub const SYS_SENDFILE: usize = 71;
pub const SYS_PSELECT6: usize = 72;
pub const SYS_PPOLL: usize = 73;
pub const SYS_SIGNALFD4: usize = 74;
pub const SYS_VMSPLICE: usize = 75;
pub const SYS_SPLICE: usize = 76;
pub const SYS_TEE: usize = 77;
pub const SYS_READLINKAT: usize = 78;
pub const SYS_NEWFSTATAT: usize = 79;
pub const SYS_FSTAT: usize = 80;
pub const SYS_SYNC: usize = 81;
pub const SYS_FSYNC: usize = 82;
pub const SYS_FDATASYNC: usize = 83;
pub const SYS_SYNC_FILE_RANGE: usize = 84;
pub const SYS_TIMERFD_CREATE: usize = 85;
pub const SYS_TIMERFD_SETTIME: usize = 86;
pub const SYS_TIMERFD_GETTIME: usize = 87;
pub const SYS_UTIMENSAT: usize = 88;
pub const SYS_ACCT: usize = 89;
pub const SYS_CAPGET: usize = 90;
pub const SYS_CAPSET: usize = 91;
pub const SYS_PERSONALITY: usize = 92;
pub const SYS_EXIT: usize = 93;
pub const SYS_EXIT_GROUP: usize = 94;
pub const SYS_WAITID: usize = 95;
pub const SYS_SET_TID_ADDRESS: usize = 96;
pub const SYS_UNSHARE: usize = 97;
pub const SYS_FUTEX: usize = 98;
pub const SYS_SET_ROBUST_LIST: usize = 99;
pub const SYS_GET_ROBUST_LIST: usize = 100;
pub const SYS_NANOSLEEP: usize = 101;
pub const SYS_GETITIMER: usize = 102;
pub const SYS_SETITIMER: usize = 103;
pub const SYS_KEXEC_LOAD: usize = 104;
pub const SYS_INIT_MODULE: usize = 105;
pub const SYS_DELETE_MODULE: usize = 106;
pub const SYS_TIMER_CREATE: usize = 107;
pub const SYS_TIMER_GETTIME: usize = 108;
pub const SYS_TIMER_GETOVERRUN: usize = 109;
pub const SYS_TIMER_SETTIME: usize = 110;
pub const SYS_TIMER_DELETE: usize = 111;
pub const SYS_CLOCK_SETTIME: usize = 112;
pub const SYS_CLOCK_GETTIME: usize = 113;
pub const SYS_CLOCK_GETRES: usize = 114;
pub const SYS_CLOCK_NANOSLEEP: usize = 115;
pub const SYS_SYSLOG: usize = 116;
pub const SYS_PTRACE: usize = 117;
pub const SYS_SCHED_SETPARAM: usize = 118;
pub const SYS_SCHED_SETSCHEDULER: usize = 119;
pub const SYS_SCHED_GETSCHEDULER: usize = 120;
pub const SYS_SCHED_GETPARAM: usize = 121;
pub const SYS_SCHED_SETAFFINITY: usize = 122;
pub const SYS_SCHED_GETAFFINITY: usize = 123;
pub const SYS_SCHED_YIELD: usize = 124;
pub const SYS_SCHED_GET_PRIORITY_MAX: usize = 125;
pub const SYS_SCHED_GET_PRIORITY_MIN: usize = 126;
pub const SYS_SCHED_RR_GET_INTERVAL: usize = 127;
pub const SYS_RESTART_SYSCALL: usize = 128;
pub const SYS_KILL: usize = 129;
pub const SYS_TKILL: usize = 130;
pub const SYS_TGKILL: usize = 131;
pub const SYS_SIGALTSTACK: usize = 132;
pub const SYS_RT_SIGSUSPEND: usize = 133;
pub const SYS_RT_SIGACTION: usize = 134;
pub const SYS_RT_SIGPROCMASK: usize = 135;
pub const SYS_RT_SIGPENDING: usize = 136;
pub const SYS_RT_SIGTIMEDWAIT: usize = 137;
pub const SYS_RT_SIGQUEUEINFO: usize = 138;
pub const SYS_RT_SIGRETURN: usize = 139;
pub const SYS_SETPRIORITY: usize = 140;
pub const SYS_GETPRIORITY: usize = 141;
pub const SYS_REBOOT: usize = 142;
pub const SYS_SETREGID: usize = 143;
pub const SYS_SETGID: usize = 144;
pub const SYS_SETREUID: usize = 145;
pub const SYS_SETUID: usize = 146;
pub const SYS_SETRESUID: usize = 147;
pub const SYS_GETRESUID: usize = 148;
pub const SYS_SETRESGID: usize = 149;
pub const SYS_GETRESGID: usize = 150;
pub const SYS_SETFSUID: usize = 151;
pub const SYS_SETFSGID: usize = 152;
pub const SYS_TIMES: usize = 153;
pub const SYS_SETPGID: usize = 154;
pub const SYS_GETPGID: usize = 155;
pub const SYS_GETSID: usize = 156;
pub const SYS_SETSID: usize = 157;
pub const SYS_GETGROUPS: usize = 158;
pub const SYS_SETGROUPS: usize = 159;
pub const SYS_UNAME: usize = 160;
pub const SYS_SETHOSTNAME: usize = 161;
pub const SYS_SETDOMAINNAME: usize = 162;
pub const SYS_GETRLIMIT: usize = 163;
pub const SYS_SETRLIMIT: usize = 164;
pub const SYS_GETRUSAGE: usize = 165;
pub const SYS_UMASK: usize = 166;
pub const SYS_PRCTL: usize = 167;
pub const SYS_GETCPU: usize = 168;
pub const SYS_GETTIMEOFDAY: usize = 169;
pub const SYS_SETTIMEOFDAY: usize = 170;
pub const SYS_ADJTIMEX: usize = 171;
pub const SYS_GETPID: usize = 172;
pub const SYS_GETPPID: usize = 173;
pub const SYS_GETUID: usize = 174;
pub const SYS_GETEUID: usize = 175;
pub const SYS_GETGID: usize = 176;
pub const SYS_GETEGID: usize = 177;
pub const SYS_GETTID: usize = 178;
pub const SYS_SYSINFO: usize = 179;
pub const SYS_MQ_OPEN: usize = 180;
pub const SYS_MQ_UNLINK: usize = 181;
pub const SYS_MQ_TIMEDSEND: usize = 182;
pub const SYS_MQ_TIMEDRECEIVE: usize = 183;
pub const SYS_MQ_NOTIFY: usize = 184;
pub const SYS_MQ_GETSETATTR: usize = 185;
pub const SYS_MSGGET: usize = 186;
pub const SYS_MSGCTL: usize = 187;
pub const SYS_MSGRCV: usize = 188;
pub const SYS_MSGSND: usize = 189;
pub const SYS_SEMGET: usize = 190;
pub const SYS_SEMCTL: usize = 191;
pub const SYS_SEMTIMEDOP: usize = 192;
pub const SYS_SEMOP: usize = 193;
pub const SYS_SHMGET: usize = 194;
pub const SYS_SHMCTL: usize = 195;
pub const SYS_SHMAT: usize = 196;
pub const SYS_SHMDT: usize = 197;
pub const SYS_SOCKET: usize = 198;
pub const SYS_SOCKETPAIR: usize = 199;
pub const SYS_BIND: usize = 200;
pub const SYS_LISTEN: usize = 201;
pub const SYS_ACCEPT: usize = 202;
pub const SYS_CONNECT: usize = 203;
pub const SYS_GETSOCKNAME: usize = 204;
pub const SYS_GETPEERNAME: usize = 205;
pub const SYS_SENDTO: usize = 206;
pub const SYS_RECVFROM: usize = 207;
pub const SYS_SETSOCKOPT: usize = 208;
pub const SYS_GETSOCKOPT: usize = 209;
pub const SYS_SHUTDOWN: usize = 210;
pub const SYS_SENDMSG: usize = 211;
pub const SYS_RECVMSG: usize = 212;
pub const SYS_READAHEAD: usize = 213;
pub const SYS_BRK: usize = 214;
pub const SYS_MUNMAP: usize = 215;
pub const SYS_MREMAP: usize = 216;
pub const SYS_ADD_KEY: usize = 217;
pub const SYS_REQUEST_KEY: usize = 218;
pub const SYS_KEYCTL: usize = 219;
pub const SYS_CLONE: usize = 220;
pub const SYS_EXECVE: usize = 221;
pub const SYS_MMAP: usize = 222;
pub const SYS_FADVISE64: usize = 223;
pub const SYS_SWAPON: usize = 224;
pub const SYS_SWAPOFF: usize = 225;
pub const SYS_MPROTECT: usize = 226;
pub const SYS_MSYNC: usize = 227;
pub const SYS_MLOCK: usize = 228;
pub const SYS_MUNLOCK: usize = 229;
pub const SYS_MLOCKALL: usize = 230;
pub const SYS_MUNLOCKALL: usize = 231;
pub const SYS_MINCORE: usize = 232;
pub const SYS_MADVISE: usize = 233;
pub const SYS_REMAP_FILE_PAGES: usize = 234;
pub const SYS_MBIND: usize = 235;
pub const SYS_GET_MEMPOLICY: usize = 236;
pub const SYS_SET_MEMPOLICY: usize = 237;
pub const SYS_MIGRATE_PAGES: usize = 238;
pub const SYS_MOVE_PAGES: usize = 239;
pub const SYS_RT_TGSIGQUEUEINFO: usize = 240;
pub const SYS_PERF_EVENT_OPEN: usize = 241;
pub const SYS_ACCEPT4: usize = 242;
pub const SYS_RECVMMSG: usize = 243;
pub const SYS_WAIT4: usize = 260;
pub const SYS_PRLIMIT64: usize = 261;
pub const SYS_FANOTIFY_INIT: usize = 262;
pub const SYS_FANOTIFY_MARK: usize = 263;
pub const SYS_NAME_TO_HANDLE_AT: usize = 264;
pub const SYS_OPEN_BY_HANDLE_AT: usize = 265;
pub const SYS_CLOCK_ADJTIME: usize = 266;
pub const SYS_SYNCFS: usize = 267;
pub const SYS_SETNS: usize = 268;
pub const SYS_SENDMMSG: usize = 269;
pub const SYS_PROCESS_VM_READV: usize = 270;
pub const SYS_PROCESS_VM_WRITEV: usize = 271;
pub const SYS_KCMP: usize = 272;
pub const SYS_FINIT_MODULE: usize = 273;
pub const SYS_SCHED_SETATTR: usize = 274;
pub const SYS_SCHED_GETATTR: usize = 275;
pub const SYS_RENAMEAT2: usize = 276;
pub const SYS_SECCOMP: usize = 277;
pub const SYS_GETRANDOM: usize = 278;
pub const SYS_MEMFD_CREATE: usize = 279;
pub const SYS_BPF: usize = 280;
pub const SYS_EXECVEAT: usize = 281;
pub const SYS_USERFAULTFD: usize = 282;
pub const SYS_MEMBARRIER: usize = 283;
pub const SYS_MLOCK2: usize = 284;
pub const SYS_COPY_FILE_RANGE: usize = 285;
pub const SYS_PREADV2: usize = 286;
pub const SYS_PWRITEV2: usize = 287;
pub const SYS_PKEY_MPROTECT: usize = 288;
pub const SYS_PKEY_ALLOC: usize = 289;
pub const SYS_PKEY_FREE: usize = 290;
pub const SYS_STATX: usize = 291;
pub const SYS_IO_PGETEVENTS: usize = 292;
// custom temporary syscall
pub const SYS_MAP_PCI_DEVICE: usize = 999;
pub const SYS_GET_PADDR: usize = 998;

@ -1,34 +1,285 @@
pub fn translate(id: usize) -> usize { //! RISCV32 syscall ids
match id { //! Reference: https://github.com/riscv/riscv-musl/blob/staging/arch/riscv32/bits/syscall.h.in
17 => 79, // getcwd
25 => 72, // fcntl pub const SYS_IO_SETUP: usize = 0;
29 => 16, // ioctl pub const SYS_IO_DESTROY: usize = 1;
49 => 80, // chdir pub const SYS_IO_SUBMIT: usize = 2;
50 => 81, // fchdir pub const SYS_IO_CANCEL: usize = 3;
51 => 161, // chroot pub const SYS_IO_GETEVENTS: usize = 4;
59 => 293, // pipe2 pub const SYS_SETXATTR: usize = 5;
61 => 217, // getdents64 pub const SYS_LSETXATTR: usize = 6;
62 => 8, // lseek pub const SYS_FSETXATTR: usize = 7;
63 => 0, // read pub const SYS_GETXATTR: usize = 8;
64 => 1, // write pub const SYS_LGETXATTR: usize = 9;
65 => 19, // readv pub const SYS_FGETXATTR: usize = 10;
66 => 20, // writev pub const SYS_LISTXATTR: usize = 11;
67 => 17, // pread64 pub const SYS_LLISTXATTR: usize = 12;
68 => 18, // pwrite64 pub const SYS_FLISTXATTR: usize = 13;
69 => 295, // preadv pub const SYS_REMOVEXATTR: usize = 14;
70 => 296, // pwritev pub const SYS_LREMOVEXATTR: usize = 15;
124 => 24, // sched_yield pub const SYS_FREMOVEXATTR: usize = 16;
166 => 95, // umask pub const SYS_GETCWD: usize = 17;
172 => 39, // getpid pub const SYS_LOOKUP_DCOOKIE: usize = 18;
173 => 110, // getppid pub const SYS_EVENTFD2: usize = 19;
174 => 102, // getuid pub const SYS_EPOLL_CREATE1: usize = 20;
175 => 107, // geteuid pub const SYS_EPOLL_CTL: usize = 21;
176 => 104, // getgid pub const SYS_EPOLL_PWAIT: usize = 22;
177 => 108, // getegid pub const SYS_DUP: usize = 23;
214 => 12, // brk pub const SYS_DUP3: usize = 24;
220 => 56, // clone pub const SYS_FCNTL: usize = 25;
221 => 59, // execve pub const SYS_INOTIFY_INIT1: usize = 26;
260 => 61, // wait4 pub const SYS_INOTIFY_ADD_WATCH: usize = 27;
_ => panic!("riscv syscall id {} not found", id) pub const SYS_INOTIFY_RM_WATCH: usize = 28;
} pub const SYS_IOCTL: usize = 29;
} pub const SYS_IOPRIO_SET: usize = 30;
pub const SYS_IOPRIO_GET: usize = 31;
pub const SYS_FLOCK: usize = 32;
pub const SYS_MKNODAT: usize = 33;
pub const SYS_MKDIRAT: usize = 34;
pub const SYS_UNLINKAT: usize = 35;
pub const SYS_SYMLINKAT: usize = 36;
pub const SYS_LINKAT: usize = 37;
pub const SYS_RENAMEAT: usize = 38; // FIXME
pub const SYS_UMOUNT2: usize = 39;
pub const SYS_MOUNT: usize = 40;
pub const SYS_PIVOT_ROOT: usize = 41;
pub const SYS_NFSSERVCTL: usize = 42;
pub const SYS_STATFS: usize = 43;
pub const SYS_FSTATFS: usize = 44;
pub const SYS_TRUNCATE: usize = 45;
pub const SYS_FTRUNCATE: usize = 46;
pub const SYS_FALLOCATE: usize = 47;
pub const SYS_FACCESSAT: usize = 48;
pub const SYS_CHDIR: usize = 49;
pub const SYS_FCHDIR: usize = 50;
pub const SYS_CHROOT: usize = 51;
pub const SYS_FCHMOD: usize = 52;
pub const SYS_FCHMODAT: usize = 53;
pub const SYS_FCHOWNAT: usize = 54;
pub const SYS_FCHOWN: usize = 55;
pub const SYS_OPENAT: usize = 56;
pub const SYS_CLOSE: usize = 57;
pub const SYS_VHANGUP: usize = 58;
pub const SYS_PIPE2: usize = 59;
pub const SYS_QUOTACTL: usize = 60;
pub const SYS_GETDENTS64: usize = 61;
pub const SYS_LSEEK: usize = 62;
pub const SYS_READ: usize = 63;
pub const SYS_WRITE: usize = 64;
pub const SYS_READV: usize = 65;
pub const SYS_WRITEV: usize = 66;
pub const SYS_PREAD64: usize = 67;
pub const SYS_PWRITE64: usize = 68;
pub const SYS_PREADV: usize = 69;
pub const SYS_PWRITEV: usize = 70;
pub const SYS_SENDFILE: usize = 71;
pub const SYS_PSELECT6: usize = 72;
pub const SYS_PPOLL: usize = 73;
pub const SYS_SIGNALFD4: usize = 74;
pub const SYS_VMSPLICE: usize = 75;
pub const SYS_SPLICE: usize = 76;
pub const SYS_TEE: usize = 77;
pub const SYS_READLINKAT: usize = 78;
pub const SYS_NEWFSTATAT: usize = 79;
pub const SYS_FSTAT: usize = 80;
pub const SYS_SYNC: usize = 81;
pub const SYS_FSYNC: usize = 82;
pub const SYS_FDATASYNC: usize = 83;
pub const SYS_SYNC_FILE_RANGE: usize = 84;
pub const SYS_TIMERFD_CREATE: usize = 85;
pub const SYS_TIMERFD_SETTIME: usize = 86;
pub const SYS_TIMERFD_GETTIME: usize = 87;
pub const SYS_UTIMENSAT: usize = 88;
pub const SYS_ACCT: usize = 89;
pub const SYS_CAPGET: usize = 90;
pub const SYS_CAPSET: usize = 91;
pub const SYS_PERSONALITY: usize = 92;
pub const SYS_EXIT: usize = 93;
pub const SYS_EXIT_GROUP: usize = 94;
pub const SYS_WAITID: usize = 95;
pub const SYS_SET_TID_ADDRESS: usize = 96;
pub const SYS_UNSHARE: usize = 97;
pub const SYS_FUTEX: usize = 98;
pub const SYS_SET_ROBUST_LIST: usize = 99;
pub const SYS_GET_ROBUST_LIST: usize = 100;
pub const SYS_NANOSLEEP: usize = 101;
pub const SYS_GETITIMER: usize = 102;
pub const SYS_SETITIMER: usize = 103;
pub const SYS_KEXEC_LOAD: usize = 104;
pub const SYS_INIT_MODULE: usize = 105;
pub const SYS_DELETE_MODULE: usize = 106;
pub const SYS_TIMER_CREATE: usize = 107;
pub const SYS_TIMER_GETTIME: usize = 108;
pub const SYS_TIMER_GETOVERRUN: usize = 109;
pub const SYS_TIMER_SETTIME: usize = 110;
pub const SYS_TIMER_DELETE: usize = 111;
pub const SYS_CLOCK_SETTIME: usize = 112;
pub const SYS_CLOCK_GETTIME: usize = 113;
pub const SYS_CLOCK_GETRES: usize = 114;
pub const SYS_CLOCK_NANOSLEEP: usize = 115;
pub const SYS_SYSLOG: usize = 116;
pub const SYS_PTRACE: usize = 117;
pub const SYS_SCHED_SETPARAM: usize = 118;
pub const SYS_SCHED_SETSCHEDULER: usize = 119;
pub const SYS_SCHED_GETSCHEDULER: usize = 120;
pub const SYS_SCHED_GETPARAM: usize = 121;
pub const SYS_SCHED_SETAFFINITY: usize = 122;
pub const SYS_SCHED_GETAFFINITY: usize = 123;
pub const SYS_SCHED_YIELD: usize = 124;
pub const SYS_SCHED_GET_PRIORITY_MAX: usize = 125;
pub const SYS_SCHED_GET_PRIORITY_MIN: usize = 126;
pub const SYS_SCHED_RR_GET_INTERVAL: usize = 127;
pub const SYS_RESTART_SYSCALL: usize = 128;
pub const SYS_KILL: usize = 129;
pub const SYS_TKILL: usize = 130;
pub const SYS_TGKILL: usize = 131;
pub const SYS_SIGALTSTACK: usize = 132;
pub const SYS_RT_SIGSUSPEND: usize = 133;
pub const SYS_RT_SIGACTION: usize = 134;
pub const SYS_RT_SIGPROCMASK: usize = 135;
pub const SYS_RT_SIGPENDING: usize = 136;
pub const SYS_RT_SIGTIMEDWAIT: usize = 137;
pub const SYS_RT_SIGQUEUEINFO: usize = 138;
pub const SYS_RT_SIGRETURN: usize = 139;
pub const SYS_SETPRIORITY: usize = 140;
pub const SYS_GETPRIORITY: usize = 141;
pub const SYS_REBOOT: usize = 142;
pub const SYS_SETREGID: usize = 143;
pub const SYS_SETGID: usize = 144;
pub const SYS_SETREUID: usize = 145;
pub const SYS_SETUID: usize = 146;
pub const SYS_SETRESUID: usize = 147;
pub const SYS_GETRESUID: usize = 148;
pub const SYS_SETRESGID: usize = 149;
pub const SYS_GETRESGID: usize = 150;
pub const SYS_SETFSUID: usize = 151;
pub const SYS_SETFSGID: usize = 152;
pub const SYS_TIMES: usize = 153;
pub const SYS_SETPGID: usize = 154;
pub const SYS_GETPGID: usize = 155;
pub const SYS_GETSID: usize = 156;
pub const SYS_SETSID: usize = 157;
pub const SYS_GETGROUPS: usize = 158;
pub const SYS_SETGROUPS: usize = 159;
pub const SYS_UNAME: usize = 160;
pub const SYS_SETHOSTNAME: usize = 161;
pub const SYS_SETDOMAINNAME: usize = 162;
pub const SYS_GETRLIMIT: usize = 163;
pub const SYS_SETRLIMIT: usize = 164;
pub const SYS_GETRUSAGE: usize = 165;
pub const SYS_UMASK: usize = 166;
pub const SYS_PRCTL: usize = 167;
pub const SYS_GETCPU: usize = 168;
pub const SYS_GETTIMEOFDAY: usize = 169;
pub const SYS_SETTIMEOFDAY: usize = 170;
pub const SYS_ADJTIMEX: usize = 171;
pub const SYS_GETPID: usize = 172;
pub const SYS_GETPPID: usize = 173;
pub const SYS_GETUID: usize = 174;
pub const SYS_GETEUID: usize = 175;
pub const SYS_GETGID: usize = 176;
pub const SYS_GETEGID: usize = 177;
pub const SYS_GETTID: usize = 178;
pub const SYS_SYSINFO: usize = 179;
pub const SYS_MQ_OPEN: usize = 180;
pub const SYS_MQ_UNLINK: usize = 181;
pub const SYS_MQ_TIMEDSEND: usize = 182;
pub const SYS_MQ_TIMEDRECEIVE: usize = 183;
pub const SYS_MQ_NOTIFY: usize = 184;
pub const SYS_MQ_GETSETATTR: usize = 185;
pub const SYS_MSGGET: usize = 186;
pub const SYS_MSGCTL: usize = 187;
pub const SYS_MSGRCV: usize = 188;
pub const SYS_MSGSND: usize = 189;
pub const SYS_SEMGET: usize = 190;
pub const SYS_SEMCTL: usize = 191;
pub const SYS_SEMTIMEDOP: usize = 192;
pub const SYS_SEMOP: usize = 193;
pub const SYS_SHMGET: usize = 194;
pub const SYS_SHMCTL: usize = 195;
pub const SYS_SHMAT: usize = 196;
pub const SYS_SHMDT: usize = 197;
pub const SYS_SOCKET: usize = 198;
pub const SYS_SOCKETPAIR: usize = 199;
pub const SYS_BIND: usize = 200;
pub const SYS_LISTEN: usize = 201;
pub const SYS_ACCEPT: usize = 202;
pub const SYS_CONNECT: usize = 203;
pub const SYS_GETSOCKNAME: usize = 204;
pub const SYS_GETPEERNAME: usize = 205;
pub const SYS_SENDTO: usize = 206;
pub const SYS_RECVFROM: usize = 207;
pub const SYS_SETSOCKOPT: usize = 208;
pub const SYS_GETSOCKOPT: usize = 209;
pub const SYS_SHUTDOWN: usize = 210;
pub const SYS_SENDMSG: usize = 211;
pub const SYS_RECVMSG: usize = 212;
pub const SYS_READAHEAD: usize = 213;
pub const SYS_BRK: usize = 214;
pub const SYS_MUNMAP: usize = 215;
pub const SYS_MREMAP: usize = 216;
pub const SYS_ADD_KEY: usize = 217;
pub const SYS_REQUEST_KEY: usize = 218;
pub const SYS_KEYCTL: usize = 219;
pub const SYS_CLONE: usize = 220;
pub const SYS_EXECVE: usize = 221;
pub const SYS_MMAP: usize = 222;
pub const SYS_FADVISE64: usize = 223;
pub const SYS_SWAPON: usize = 224;
pub const SYS_SWAPOFF: usize = 225;
pub const SYS_MPROTECT: usize = 226;
pub const SYS_MSYNC: usize = 227;
pub const SYS_MLOCK: usize = 228;
pub const SYS_MUNLOCK: usize = 229;
pub const SYS_MLOCKALL: usize = 230;
pub const SYS_MUNLOCKALL: usize = 231;
pub const SYS_MINCORE: usize = 232;
pub const SYS_MADVISE: usize = 233;
pub const SYS_REMAP_FILE_PAGES: usize = 234;
pub const SYS_MBIND: usize = 235;
pub const SYS_GET_MEMPOLICY: usize = 236;
pub const SYS_SET_MEMPOLICY: usize = 237;
pub const SYS_MIGRATE_PAGES: usize = 238;
pub const SYS_MOVE_PAGES: usize = 239;
pub const SYS_RT_TGSIGQUEUEINFO: usize = 240;
pub const SYS_PERF_EVENT_OPEN: usize = 241;
pub const SYS_ACCEPT4: usize = 242;
pub const SYS_RECVMMSG: usize = 243;
pub const SYS_ARCH_SPECIFIC_SYSCALL: usize = 244;
pub const SYS_WAIT4: usize = 260;
pub const SYS_PRLIMIT64: usize = 261;
pub const SYS_FANOTIFY_INIT: usize = 262;
pub const SYS_FANOTIFY_MARK: usize = 263;
pub const SYS_NAME_TO_HANDLE_AT: usize = 264;
pub const SYS_OPEN_BY_HANDLE_AT: usize = 265;
pub const SYS_CLOCK_ADJTIME: usize = 266;
pub const SYS_SYNCFS: usize = 267;
pub const SYS_SETNS: usize = 268;
pub const SYS_SENDMMSG: usize = 269;
pub const SYS_PROCESS_VM_READV: usize = 270;
pub const SYS_PROCESS_VM_WRITEV: usize = 271;
pub const SYS_KCMP: usize = 272;
pub const SYS_FINIT_MODULE: usize = 273;
pub const SYS_SCHED_SETATTR: usize = 274;
pub const SYS_SCHED_GETATTR: usize = 275;
pub const SYS_RENAMEAT2: usize = 276;
pub const SYS_SECCOMP: usize = 277;
pub const SYS_GETRANDOM: usize = 278;
pub const SYS_MEMFD_CREATE: usize = 279;
pub const SYS_BPF: usize = 280;
pub const SYS_EXECVEAT: usize = 281;
pub const SYS_USERFAULTFD: usize = 282;
pub const SYS_MEMBARRIER: usize = 283;
pub const SYS_MLOCK2: usize = 284;
pub const SYS_COPY_FILE_RANGE: usize = 285;
pub const SYS_PREADV2: usize = 286;
pub const SYS_PWRITEV2: usize = 287;
pub const SYS_PKEY_MPROTECT: usize = 288;
pub const SYS_PKEY_ALLOC: usize = 289;
pub const SYS_PKEY_FREE: usize = 290;
pub const SYS_SYSRISCV: usize = SYS_ARCH_SPECIFIC_SYSCALL;
pub const SYS_RISCV_FLUSH_ICACHE: usize = SYS_SYSRISCV + 15;
// custom temporary syscall
pub const SYS_MAP_PCI_DEVICE: usize = 999;
pub const SYS_GET_PADDR: usize = 998;

@ -1,4 +1,342 @@
/// We use x86_64 syscall numbers //! x86_64 syscall ids
pub fn translate(id: usize) -> usize { //! Reference: https://git.musl-libc.org/cgit/musl/tree/arch/x86_64/bits/syscall.h.in
id
} pub const SYS_READ: usize = 0;
pub const SYS_WRITE: usize = 1;
pub const SYS_OPEN: usize = 2;
pub const SYS_CLOSE: usize = 3;
pub const SYS_STAT: usize = 4;
pub const SYS_FSTAT: usize = 5;
pub const SYS_LSTAT: usize = 6;
pub const SYS_POLL: usize = 7;
pub const SYS_LSEEK: usize = 8;
pub const SYS_MMAP: usize = 9;
pub const SYS_MPROTECT: usize = 10;
pub const SYS_MUNMAP: usize = 11;
pub const SYS_BRK: usize = 12;
pub const SYS_RT_SIGACTION: usize = 13;
pub const SYS_RT_SIGPROCMASK: usize = 14;
pub const SYS_RT_SIGRETURN: usize = 15;
pub const SYS_IOCTL: usize = 16;
pub const SYS_PREAD64: usize = 17;
pub const SYS_PWRITE64: usize = 18;
pub const SYS_READV: usize = 19;
pub const SYS_WRITEV: usize = 20;
pub const SYS_ACCESS: usize = 21;
pub const SYS_PIPE: usize = 22;
pub const SYS_SELECT: usize = 23;
pub const SYS_SCHED_YIELD: usize = 24;
pub const SYS_MREMAP: usize = 25;
pub const SYS_MSYNC: usize = 26;
pub const SYS_MINCORE: usize = 27;
pub const SYS_MADVISE: usize = 28;
pub const SYS_SHMGET: usize = 29;
pub const SYS_SHMAT: usize = 30;
pub const SYS_SHMCTL: usize = 31;
pub const SYS_DUP: usize = 32;
pub const SYS_DUP2: usize = 33;
pub const SYS_PAUSE: usize = 34;
pub const SYS_NANOSLEEP: usize = 35;
pub const SYS_GETITIMER: usize = 36;
pub const SYS_ALARM: usize = 37;
pub const SYS_SETITIMER: usize = 38;
pub const SYS_GETPID: usize = 39;
pub const SYS_SENDFILE: usize = 40;
pub const SYS_SOCKET: usize = 41;
pub const SYS_CONNECT: usize = 42;
pub const SYS_ACCEPT: usize = 43;
pub const SYS_SENDTO: usize = 44;
pub const SYS_RECVFROM: usize = 45;
pub const SYS_SENDMSG: usize = 46;
pub const SYS_RECVMSG: usize = 47;
pub const SYS_SHUTDOWN: usize = 48;
pub const SYS_BIND: usize = 49;
pub const SYS_LISTEN: usize = 50;
pub const SYS_GETSOCKNAME: usize = 51;
pub const SYS_GETPEERNAME: usize = 52;
pub const SYS_SOCKETPAIR: usize = 53;
pub const SYS_SETSOCKOPT: usize = 54;
pub const SYS_GETSOCKOPT: usize = 55;
pub const SYS_CLONE: usize = 56;
pub const SYS_FORK: usize = 57;
pub const SYS_VFORK: usize = 58;
pub const SYS_EXECVE: usize = 59;
pub const SYS_EXIT: usize = 60;
pub const SYS_WAIT4: usize = 61;
pub const SYS_KILL: usize = 62;
pub const SYS_UNAME: usize = 63;
pub const SYS_SEMGET: usize = 64;
pub const SYS_SEMOP: usize = 65;
pub const SYS_SEMCTL: usize = 66;
pub const SYS_SHMDT: usize = 67;
pub const SYS_MSGGET: usize = 68;
pub const SYS_MSGSND: usize = 69;
pub const SYS_MSGRCV: usize = 70;
pub const SYS_MSGCTL: usize = 71;
pub const SYS_FCNTL: usize = 72;
pub const SYS_FLOCK: usize = 73;
pub const SYS_FSYNC: usize = 74;
pub const SYS_FDATASYNC: usize = 75;
pub const SYS_TRUNCATE: usize = 76;
pub const SYS_FTRUNCATE: usize = 77;
pub const SYS_GETDENTS: usize = 78;
pub const SYS_GETCWD: usize = 79;
pub const SYS_CHDIR: usize = 80;
pub const SYS_FCHDIR: usize = 81;
pub const SYS_RENAME: usize = 82;
pub const SYS_MKDIR: usize = 83;
pub const SYS_RMDIR: usize = 84;
pub const SYS_CREAT: usize = 85;
pub const SYS_LINK: usize = 86;
pub const SYS_UNLINK: usize = 87;
pub const SYS_SYMLINK: usize = 88;
pub const SYS_READLINK: usize = 89;
pub const SYS_CHMOD: usize = 90;
pub const SYS_FCHMOD: usize = 91;
pub const SYS_CHOWN: usize = 92;
pub const SYS_FCHOWN: usize = 93;
pub const SYS_LCHOWN: usize = 94;
pub const SYS_UMASK: usize = 95;
pub const SYS_GETTIMEOFDAY: usize = 96;
pub const SYS_GETRLIMIT: usize = 97;
pub const SYS_GETRUSAGE: usize = 98;
pub const SYS_SYSINFO: usize = 99;
pub const SYS_TIMES: usize = 100;
pub const SYS_PTRACE: usize = 101;
pub const SYS_GETUID: usize = 102;
pub const SYS_SYSLOG: usize = 103;
pub const SYS_GETGID: usize = 104;
pub const SYS_SETUID: usize = 105;
pub const SYS_SETGID: usize = 106;
pub const SYS_GETEUID: usize = 107;
pub const SYS_GETEGID: usize = 108;
pub const SYS_SETPGID: usize = 109;
pub const SYS_GETPPID: usize = 110;
pub const SYS_GETPGRP: usize = 111;
pub const SYS_SETSID: usize = 112;
pub const SYS_SETREUID: usize = 113;
pub const SYS_SETREGID: usize = 114;
pub const SYS_GETGROUPS: usize = 115;
pub const SYS_SETGROUPS: usize = 116;
pub const SYS_SETRESUID: usize = 117;
pub const SYS_GETRESUID: usize = 118;
pub const SYS_SETRESGID: usize = 119;
pub const SYS_GETRESGID: usize = 120;
pub const SYS_GETPGID: usize = 121;
pub const SYS_SETFSUID: usize = 122;
pub const SYS_SETFSGID: usize = 123;
pub const SYS_GETSID: usize = 124;
pub const SYS_CAPGET: usize = 125;
pub const SYS_CAPSET: usize = 126;
pub const SYS_RT_SIGPENDING: usize = 127;
pub const SYS_RT_SIGTIMEDWAIT: usize = 128;
pub const SYS_RT_SIGQUEUEINFO: usize = 129;
pub const SYS_RT_SIGSUSPEND: usize = 130;
pub const SYS_SIGALTSTACK: usize = 131;
pub const SYS_UTIME: usize = 132;
pub const SYS_MKNOD: usize = 133;
pub const SYS_USELIB: usize = 134;
pub const SYS_PERSONALITY: usize = 135;
pub const SYS_USTAT: usize = 136;
pub const SYS_STATFS: usize = 137;
pub const SYS_FSTATFS: usize = 138;
pub const SYS_SYSFS: usize = 139;
pub const SYS_GETPRIORITY: usize = 140;
pub const SYS_SETPRIORITY: usize = 141;
pub const SYS_SCHED_SETPARAM: usize = 142;
pub const SYS_SCHED_GETPARAM: usize = 143;
pub const SYS_SCHED_SETSCHEDULER: usize = 144;
pub const SYS_SCHED_GETSCHEDULER: usize = 145;
pub const SYS_SCHED_GET_PRIORITY_MAX: usize = 146;
pub const SYS_SCHED_GET_PRIORITY_MIN: usize = 147;
pub const SYS_SCHED_RR_GET_INTERVAL: usize = 148;
pub const SYS_MLOCK: usize = 149;
pub const SYS_MUNLOCK: usize = 150;
pub const SYS_MLOCKALL: usize = 151;
pub const SYS_MUNLOCKALL: usize = 152;
pub const SYS_VHANGUP: usize = 153;
pub const SYS_MODIFY_LDT: usize = 154;
pub const SYS_PIVOT_ROOT: usize = 155;
pub const SYS__SYSCTL: usize = 156;
pub const SYS_PRCTL: usize = 157;
pub const SYS_ARCH_PRCTL: usize = 158;
pub const SYS_ADJTIMEX: usize = 159;
pub const SYS_SETRLIMIT: usize = 160;
pub const SYS_CHROOT: usize = 161;
pub const SYS_SYNC: usize = 162;
pub const SYS_ACCT: usize = 163;
pub const SYS_SETTIMEOFDAY: usize = 164;
pub const SYS_MOUNT: usize = 165;
pub const SYS_UMOUNT2: usize = 166;
pub const SYS_SWAPON: usize = 167;
pub const SYS_SWAPOFF: usize = 168;
pub const SYS_REBOOT: usize = 169;
pub const SYS_SETHOSTNAME: usize = 170;
pub const SYS_SETDOMAINNAME: usize = 171;
pub const SYS_IOPL: usize = 172;
pub const SYS_IOPERM: usize = 173;
pub const SYS_CREATE_MODULE: usize = 174;
pub const SYS_INIT_MODULE: usize = 175;
pub const SYS_DELETE_MODULE: usize = 176;
pub const SYS_GET_KERNEL_SYMS: usize = 177;
pub const SYS_QUERY_MODULE: usize = 178;
pub const SYS_QUOTACTL: usize = 179;
pub const SYS_NFSSERVCTL: usize = 180;
pub const SYS_GETPMSG: usize = 181;
pub const SYS_PUTPMSG: usize = 182;
pub const SYS_AFS_SYSCALL: usize = 183;
pub const SYS_TUXCALL: usize = 184;
pub const SYS_SECURITY: usize = 185;
pub const SYS_GETTID: usize = 186;
pub const SYS_READAHEAD: usize = 187;
pub const SYS_SETXATTR: usize = 188;
pub const SYS_LSETXATTR: usize = 189;
pub const SYS_FSETXATTR: usize = 190;
pub const SYS_GETXATTR: usize = 191;
pub const SYS_LGETXATTR: usize = 192;
pub const SYS_FGETXATTR: usize = 193;
pub const SYS_LISTXATTR: usize = 194;
pub const SYS_LLISTXATTR: usize = 195;
pub const SYS_FLISTXATTR: usize = 196;
pub const SYS_REMOVEXATTR: usize = 197;
pub const SYS_LREMOVEXATTR: usize = 198;
pub const SYS_FREMOVEXATTR: usize = 199;
pub const SYS_TKILL: usize = 200;
pub const SYS_TIME: usize = 201;
pub const SYS_FUTEX: usize = 202;
pub const SYS_SCHED_SETAFFINITY: usize = 203;
pub const SYS_SCHED_GETAFFINITY: usize = 204;
pub const SYS_SET_THREAD_AREA: usize = 205;
pub const SYS_IO_SETUP: usize = 206;
pub const SYS_IO_DESTROY: usize = 207;
pub const SYS_IO_GETEVENTS: usize = 208;
pub const SYS_IO_SUBMIT: usize = 209;
pub const SYS_IO_CANCEL: usize = 210;
pub const SYS_GET_THREAD_AREA: usize = 211;
pub const SYS_LOOKUP_DCOOKIE: usize = 212;
pub const SYS_EPOLL_CREATE: usize = 213;
pub const SYS_EPOLL_CTL_OLD: usize = 214;
pub const SYS_EPOLL_WAIT_OLD: usize = 215;
pub const SYS_REMAP_FILE_PAGES: usize = 216;
pub const SYS_GETDENTS64: usize = 217;
pub const SYS_SET_TID_ADDRESS: usize = 218;
pub const SYS_RESTART_SYSCALL: usize = 219;
pub const SYS_SEMTIMEDOP: usize = 220;
pub const SYS_FADVISE64: usize = 221;
pub const SYS_TIMER_CREATE: usize = 222;
pub const SYS_TIMER_SETTIME: usize = 223;
pub const SYS_TIMER_GETTIME: usize = 224;
pub const SYS_TIMER_GETOVERRUN: usize = 225;
pub const SYS_TIMER_DELETE: usize = 226;
pub const SYS_CLOCK_SETTIME: usize = 227;
pub const SYS_CLOCK_GETTIME: usize = 228;
pub const SYS_CLOCK_GETRES: usize = 229;
pub const SYS_CLOCK_NANOSLEEP: usize = 230;
pub const SYS_EXIT_GROUP: usize = 231;
pub const SYS_EPOLL_WAIT: usize = 232;
pub const SYS_EPOLL_CTL: usize = 233;
pub const SYS_TGKILL: usize = 234;
pub const SYS_UTIMES: usize = 235;
pub const SYS_VSERVER: usize = 236;
pub const SYS_MBIND: usize = 237;
pub const SYS_SET_MEMPOLICY: usize = 238;
pub const SYS_GET_MEMPOLICY: usize = 239;
pub const SYS_MQ_OPEN: usize = 240;
pub const SYS_MQ_UNLINK: usize = 241;
pub const SYS_MQ_TIMEDSEND: usize = 242;
pub const SYS_MQ_TIMEDRECEIVE: usize = 243;
pub const SYS_MQ_NOTIFY: usize = 244;
pub const SYS_MQ_GETSETATTR: usize = 245;
pub const SYS_KEXEC_LOAD: usize = 246;
pub const SYS_WAITID: usize = 247;
pub const SYS_ADD_KEY: usize = 248;
pub const SYS_REQUEST_KEY: usize = 249;
pub const SYS_KEYCTL: usize = 250;
pub const SYS_IOPRIO_SET: usize = 251;
pub const SYS_IOPRIO_GET: usize = 252;
pub const SYS_INOTIFY_INIT: usize = 253;
pub const SYS_INOTIFY_ADD_WATCH: usize = 254;
pub const SYS_INOTIFY_RM_WATCH: usize = 255;
pub const SYS_MIGRATE_PAGES: usize = 256;
pub const SYS_OPENAT: usize = 257;
pub const SYS_MKDIRAT: usize = 258;
pub const SYS_MKNODAT: usize = 259;
pub const SYS_FCHOWNAT: usize = 260;
pub const SYS_FUTIMESAT: usize = 261;
pub const SYS_NEWFSTATAT: usize = 262;
pub const SYS_UNLINKAT: usize = 263;
pub const SYS_RENAMEAT: usize = 264;
pub const SYS_LINKAT: usize = 265;
pub const SYS_SYMLINKAT: usize = 266;
pub const SYS_READLINKAT: usize = 267;
pub const SYS_FCHMODAT: usize = 268;
pub const SYS_FACCESSAT: usize = 269;
pub const SYS_PSELECT6: usize = 270;
pub const SYS_PPOLL: usize = 271;
pub const SYS_UNSHARE: usize = 272;
pub const SYS_SET_ROBUST_LIST: usize = 273;
pub const SYS_GET_ROBUST_LIST: usize = 274;
pub const SYS_SPLICE: usize = 275;
pub const SYS_TEE: usize = 276;
pub const SYS_SYNC_FILE_RANGE: usize = 277;
pub const SYS_VMSPLICE: usize = 278;
pub const SYS_MOVE_PAGES: usize = 279;
pub const SYS_UTIMENSAT: usize = 280;
pub const SYS_EPOLL_PWAIT: usize = 281;
pub const SYS_SIGNALFD: usize = 282;
pub const SYS_TIMERFD_CREATE: usize = 283;
pub const SYS_EVENTFD: usize = 284;
pub const SYS_FALLOCATE: usize = 285;
pub const SYS_TIMERFD_SETTIME: usize = 286;
pub const SYS_TIMERFD_GETTIME: usize = 287;
pub const SYS_ACCEPT4: usize = 288;
pub const SYS_SIGNALFD4: usize = 289;
pub const SYS_EVENTFD2: usize = 290;
pub const SYS_EPOLL_CREATE1: usize = 291;
pub const SYS_DUP3: usize = 292;
pub const SYS_PIPE2: usize = 293;
pub const SYS_INOTIFY_INIT1: usize = 294;
pub const SYS_PREADV: usize = 295;
pub const SYS_PWRITEV: usize = 296;
pub const SYS_RT_TGSIGQUEUEINFO: usize = 297;
pub const SYS_PERF_EVENT_OPEN: usize = 298;
pub const SYS_RECVMMSG: usize = 299;
pub const SYS_FANOTIFY_INIT: usize = 300;
pub const SYS_FANOTIFY_MARK: usize = 301;
pub const SYS_PRLIMIT64: usize = 302;
pub const SYS_NAME_TO_HANDLE_AT: usize = 303;
pub const SYS_OPEN_BY_HANDLE_AT: usize = 304;
pub const SYS_CLOCK_ADJTIME: usize = 305;
pub const SYS_SYNCFS: usize = 306;
pub const SYS_SENDMMSG: usize = 307;
pub const SYS_SETNS: usize = 308;
pub const SYS_GETCPU: usize = 309;
pub const SYS_PROCESS_VM_READV: usize = 310;
pub const SYS_PROCESS_VM_WRITEV: usize = 311;
pub const SYS_KCMP: usize = 312;
pub const SYS_FINIT_MODULE: usize = 313;
pub const SYS_SCHED_SETATTR: usize = 314;
pub const SYS_SCHED_GETATTR: usize = 315;
pub const SYS_RENAMEAT2: usize = 316;
pub const SYS_SECCOMP: usize = 317;
pub const SYS_GETRANDOM: usize = 318;
pub const SYS_MEMFD_CREATE: usize = 319;
pub const SYS_KEXEC_FILE_LOAD: usize = 320;
pub const SYS_BPF: usize = 321;
pub const SYS_EXECVEAT: usize = 322;
pub const SYS_USERFAULTFD: usize = 323;
pub const SYS_MEMBARRIER: usize = 324;
pub const SYS_MLOCK2: usize = 325;
pub const SYS_COPY_FILE_RANGE: usize = 326;
pub const SYS_PREADV2: usize = 327;
pub const SYS_PWRITEV2: usize = 328;
pub const SYS_PKEY_MPROTECT: usize = 329;
pub const SYS_PKEY_ALLOC: usize = 330;
pub const SYS_PKEY_FREE: usize = 331;
pub const SYS_STATX: usize = 332;
pub const SYS_IO_PGETEVENTS: usize = 333;
pub const SYS_RSEQ: usize = 334;
// custom temporary syscall
pub const SYS_MAP_PCI_DEVICE: usize = 999;
pub const SYS_GET_PADDR: usize = 998;

@ -33,7 +33,6 @@ mod custom;
/// System call dispatcher /// System call dispatcher
pub fn syscall(id: usize, args: [usize; 6], tf: &mut TrapFrame) -> isize { pub fn syscall(id: usize, args: [usize; 6], tf: &mut TrapFrame) -> isize {
let x86_64_id = syscall::translate(id);
let cid = cpu::id(); let cid = cpu::id();
let pid = { let pid = {
process().pid.clone() process().pid.clone()
@ -41,201 +40,182 @@ pub fn syscall(id: usize, args: [usize; 6], tf: &mut TrapFrame) -> isize {
let tid = processor().tid(); let tid = processor().tid();
if !pid.is_init() { if !pid.is_init() {
// we trust pid 0 process // we trust pid 0 process
debug!("{}:{}:{} syscall id {}->{} begin", cid, pid, tid, id, x86_64_id); debug!("{}:{}:{} syscall id {} begin", cid, pid, tid, id);
} }
// use syscall numbers in Linux x86_64 // use syscall numbers in Linux x86_64
// See https://filippo.io/linux-syscall-table/ // See https://filippo.io/linux-syscall-table/
// And https://fedora.juszkiewicz.com.pl/syscalls.html. // And https://fedora.juszkiewicz.com.pl/syscalls.html.
let ret = match x86_64_id { let ret = match id {
// file // file
000 => sys_read(args[0], args[1] as *mut u8, args[2]), syscall::SYS_READ => sys_read(args[0], args[1] as *mut u8, args[2]),
001 => sys_write(args[0], args[1] as *const u8, args[2]), syscall::SYS_WRITE => sys_write(args[0], args[1] as *const u8, args[2]),
002 => sys_open(args[0] as *const u8, args[1], args[2]), syscall::SYS_CLOSE => sys_close(args[0]),
003 => sys_close(args[0]), syscall::SYS_FSTAT => sys_fstat(args[0], args[1] as *mut Stat),
004 => sys_stat(args[0] as *const u8, args[1] as *mut Stat), syscall::SYS_LSEEK => sys_lseek(args[0], args[1] as i64, args[2] as u8),
005 => sys_fstat(args[0], args[1] as *mut Stat), syscall::SYS_MMAP => sys_mmap(args[0], args[1], args[2], args[3], args[4] as i32, args[5]),
006 => sys_lstat(args[0] as *const u8, args[1] as *mut Stat), syscall::SYS_MPROTECT => sys_mprotect(args[0], args[1], args[2]),
007 => sys_poll(args[0] as *mut PollFd, args[1], args[2]), syscall::SYS_MUNMAP => sys_munmap(args[0], args[1]),
008 => sys_lseek(args[0], args[1] as i64, args[2] as u8), syscall::SYS_PREAD64 => sys_pread(args[0], args[1] as *mut u8, args[2], args[3]),
009 => sys_mmap(args[0], args[1], args[2], args[3], args[4] as i32, args[5]), syscall::SYS_PWRITE64 => sys_pwrite(args[0], args[1] as *const u8, args[2], args[3]),
010 => sys_mprotect(args[0], args[1], args[2]), syscall::SYS_READV => sys_readv(args[0], args[1] as *const IoVec, args[2]),
011 => sys_munmap(args[0], args[1]), syscall::SYS_WRITEV => sys_writev(args[0], args[1] as *const IoVec, args[2]),
017 => sys_pread(args[0], args[1] as *mut u8, args[2], args[3]), syscall::SYS_SCHED_YIELD => sys_yield(),
018 => sys_pwrite(args[0], args[1] as *const u8, args[2], args[3]), syscall::SYS_NANOSLEEP => sys_nanosleep(args[0] as *const TimeSpec),
019 => sys_readv(args[0], args[1] as *const IoVec, args[2]), syscall::SYS_GETPID => sys_getpid(),
020 => sys_writev(args[0], args[1] as *const IoVec, args[2]), syscall::SYS_SOCKET => sys_socket(args[0], args[1], args[2]),
021 => sys_access(args[0] as *const u8, args[1]), syscall::SYS_CONNECT => sys_connect(args[0], args[1] as *const SockAddr, args[2]),
022 => sys_pipe(args[0] as *mut u32), syscall::SYS_ACCEPT => sys_accept(args[0], args[1] as *mut SockAddr, args[2] as *mut u32),
023 => sys_select(args[0], args[1] as *mut u32, args[2] as *mut u32, args[3] as *mut u32, args[4] as *const TimeVal), syscall::SYS_SENDTO => sys_sendto(args[0], args[1] as *const u8, args[2], args[3], args[4] as *const SockAddr, args[5]),
024 => sys_yield(), syscall::SYS_RECVFROM => sys_recvfrom(args[0], args[1] as *mut u8, args[2], args[3], args[4] as *mut SockAddr, args[5] as *mut u32),
033 => sys_dup2(args[0], args[1]), // syscall::SYS_SENDMSG => sys_sendmsg(),
// 034 => sys_pause(), // syscall::SYS_RECVMSG => sys_recvmsg(),
035 => sys_nanosleep(args[0] as *const TimeSpec), syscall::SYS_SHUTDOWN => sys_shutdown(args[0], args[1]),
039 => sys_getpid(), syscall::SYS_BIND => sys_bind(args[0], args[1] as *const SockAddr, args[2]),
041 => sys_socket(args[0], args[1], args[2]), syscall::SYS_LISTEN => sys_listen(args[0], args[1]),
042 => sys_connect(args[0], args[1] as *const SockAddr, args[2]), syscall::SYS_GETSOCKNAME => sys_getsockname(args[0], args[1] as *mut SockAddr, args[2] as *mut u32),
043 => sys_accept(args[0], args[1] as *mut SockAddr, args[2] as *mut u32), syscall::SYS_GETPEERNAME => sys_getpeername(args[0], args[1] as *mut SockAddr, args[2] as *mut u32),
044 => sys_sendto(args[0], args[1] as *const u8, args[2], args[3], args[4] as *const SockAddr, args[5]), syscall::SYS_SETSOCKOPT => sys_setsockopt(args[0], args[1], args[2], args[3] as *const u8, args[4]),
045 => sys_recvfrom(args[0], args[1] as *mut u8, args[2], args[3], args[4] as *mut SockAddr, args[5] as *mut u32), syscall::SYS_GETSOCKOPT => sys_getsockopt(args[0], args[1], args[2], args[3] as *mut u8, args[4] as *mut u32),
// 046 => sys_sendmsg(), syscall::SYS_CLONE => sys_clone(args[0], args[1], args[2] as *mut u32, args[3] as *mut u32, args[4], tf),
// 047 => sys_recvmsg(), syscall::SYS_EXECVE => sys_exec(args[0] as *const u8, args[1] as *const *const u8, args[2] as *const *const u8, tf),
048 => sys_shutdown(args[0], args[1]), syscall::SYS_EXIT => sys_exit(args[0] as usize),
049 => sys_bind(args[0], args[1] as *const SockAddr, args[2]), syscall::SYS_WAIT4 => sys_wait4(args[0] as isize, args[1] as *mut i32), // TODO: wait4
050 => sys_listen(args[0], args[1]), syscall::SYS_KILL => sys_kill(args[0], args[1]),
051 => sys_getsockname(args[0], args[1] as *mut SockAddr, args[2] as *mut u32), syscall::SYS_UNAME => sys_uname(args[0] as *mut u8),
052 => sys_getpeername(args[0], args[1] as *mut SockAddr, args[2] as *mut u32), syscall::SYS_FSYNC => sys_fsync(args[0]),
054 => sys_setsockopt(args[0], args[1], args[2], args[3] as *const u8, args[4]), syscall::SYS_FDATASYNC => sys_fdatasync(args[0]),
055 => sys_getsockopt(args[0], args[1], args[2], args[3] as *mut u8, args[4] as *mut u32), syscall::SYS_TRUNCATE => sys_truncate(args[0] as *const u8, args[1]),
056 => sys_clone(args[0], args[1], args[2] as *mut u32, args[3] as *mut u32, args[4], tf), syscall::SYS_FTRUNCATE => sys_ftruncate(args[0], args[1]),
057 => sys_fork(tf), syscall::SYS_GETCWD => sys_getcwd(args[0] as *mut u8, args[1]),
// use fork for vfork syscall::SYS_CHDIR => sys_chdir(args[0] as *const u8),
058 => sys_fork(tf), syscall::SYS_GETTIMEOFDAY => sys_gettimeofday(args[0] as *mut TimeVal, args[1] as *const u8),
059 => sys_exec(args[0] as *const u8, args[1] as *const *const u8, args[2] as *const *const u8, tf), // syscall::SYS_GETRLIMIT => sys_getrlimit(),
060 => sys_exit(args[0] as usize), syscall::SYS_GETRUSAGE => sys_getrusage(args[0], args[1] as *mut RUsage),
061 => sys_wait4(args[0] as isize, args[1] as *mut i32), // TODO: wait4 syscall::SYS_SYSINFO => sys_sysinfo(args[0] as *mut SysInfo),
062 => sys_kill(args[0], args[1]), syscall::SYS_GETPPID => sys_getppid(),
063 => sys_uname(args[0] as *mut u8), syscall::SYS_SETPRIORITY => sys_set_priority(args[0]),
// 072 => sys_fcntl(), // syscall::SYS_SETRLIMIT => sys_setrlimit(),
074 => sys_fsync(args[0]), // syscall::SYS_SYNC => sys_sync(),
075 => sys_fdatasync(args[0]), syscall::SYS_REBOOT => sys_reboot(args[0] as u32, args[1] as u32, args[2] as u32, args[3] as *const u8),
076 => sys_truncate(args[0] as *const u8, args[1]), syscall::SYS_GETTID => sys_gettid(),
077 => sys_ftruncate(args[0], args[1]), syscall::SYS_FUTEX => sys_futex(args[0], args[1] as u32, args[2] as i32, args[3] as *const TimeSpec),
079 => sys_getcwd(args[0] as *mut u8, args[1]), syscall::SYS_SCHED_GETAFFINITY => sys_sched_getaffinity(args[0], args[1], args[2] as *mut u32),
080 => sys_chdir(args[0] as *const u8), syscall::SYS_GETDENTS64 => sys_getdents64(args[0], args[1] as *mut LinuxDirent64, args[2]),
082 => sys_rename(args[0] as *const u8, args[1] as *const u8), syscall::SYS_CLOCK_GETTIME => sys_clock_gettime(args[0], args[1] as *mut TimeSpec),
083 => sys_mkdir(args[0] as *const u8, args[1]), syscall::SYS_EXIT_GROUP => sys_exit_group(args[0]),
086 => sys_link(args[0] as *const u8, args[1] as *const u8), syscall::SYS_OPENAT => sys_open(args[1] as *const u8, args[2], args[3]), // TODO: handle `dfd`
087 => sys_unlink(args[0] as *const u8), syscall::SYS_MKDIRAT => sys_mkdir(args[1] as *const u8, args[2]), // TODO: handle `dfd`
096 => sys_gettimeofday(args[0] as *mut TimeVal, args[1] as *const u8), // syscall::SYS_MKNODAT => sys_mknod(),
// 097 => sys_getrlimit(), syscall::SYS_NEWFSTATAT => sys_stat(args[1] as *const u8, args[2] as *mut Stat), // TODO: handle `dfd`, `flag`
098 => sys_getrusage(args[0], args[1] as *mut RUsage), syscall::SYS_UNLINKAT => sys_unlink(args[1] as *const u8), // TODO: handle `dfd`, `flag`
099 => sys_sysinfo(args[0] as *mut SysInfo), syscall::SYS_RENAMEAT => sys_rename(args[1] as *const u8, args[3] as *const u8), // TODO: handle `olddfd`, `newdfd`
110 => sys_getppid(), syscall::SYS_LINKAT => sys_link(args[1] as *const u8, args[3] as *const u8), // TODO: handle `olddfd`, `newdfd`, `flags`
// 133 => sys_mknod(), syscall::SYS_FACCESSAT => sys_access(args[1] as *const u8, args[2]), // TODO: handle `dfd`
141 => sys_set_priority(args[0]), syscall::SYS_ACCEPT4 => sys_accept(args[0], args[1] as *mut SockAddr, args[2] as *mut u32), // use accept for accept4
158 => sys_arch_prctl(args[0] as i32, args[1], tf), syscall::SYS_DUP3 => sys_dup2(args[0], args[1]), // TODO: handle `flags`
// 160 => sys_setrlimit(), syscall::SYS_PIPE2 => sys_pipe(args[0] as *mut u32), // TODO: handle `flags`
// 162 => sys_sync(),
169 => sys_reboot(args[0] as u32, args[1] as u32, args[2] as u32, args[3] as *const u8),
186 => sys_gettid(),
201 => sys_time(args[0] as *mut u64),
202 => sys_futex(args[0], args[1] as u32, args[2] as i32, args[3] as *const TimeSpec),
204 => sys_sched_getaffinity(args[0], args[1], args[2] as *mut u32),
217 => sys_getdents64(args[0], args[1] as *mut LinuxDirent64, args[2]),
228 => sys_clock_gettime(args[0], args[1] as *mut TimeSpec),
231 => sys_exit_group(args[0]),
288 => sys_accept(args[0], args[1] as *mut SockAddr, args[2] as *mut u32), // use accept for accept4
// custom temporary syscall // custom temporary syscall
999 => sys_map_pci_device(args[0], args[1]), syscall::SYS_MAP_PCI_DEVICE => sys_map_pci_device(args[0], args[1]),
998 => sys_get_paddr(args[0] as *const u64, args[1] as *mut u64, args[2]), syscall::SYS_GET_PADDR => sys_get_paddr(args[0] as *const u64, args[1] as *mut u64, args[2]),
// 293 => sys_pipe(),
// for musl: empty impl // for musl: empty impl
012 => { syscall::SYS_BRK => {
warn!("sys_brk is unimplemented"); warn!("sys_brk is unimplemented");
Ok(0) Ok(0)
} }
013 => { syscall::SYS_RT_SIGACTION => {
warn!("sys_sigaction is unimplemented"); warn!("sys_sigaction is unimplemented");
Ok(0) Ok(0)
} }
014 => { syscall::SYS_RT_SIGPROCMASK => {
warn!("sys_sigprocmask is unimplemented"); warn!("sys_sigprocmask is unimplemented");
Ok(0) Ok(0)
} }
016 => { syscall::SYS_IOCTL => {
warn!("sys_ioctl is unimplemented"); warn!("sys_ioctl is unimplemented");
Ok(0) Ok(0)
} }
028 => { syscall::SYS_MADVISE => {
warn!("sys_madvise is unimplemented"); warn!("sys_madvise is unimplemented");
Ok(0) Ok(0)
} }
037 => { syscall::SYS_SETITIMER => {
warn!("sys_alarm is unimplemented");
Ok(0)
}
038 => {
warn!("sys_setitimer is unimplemented"); warn!("sys_setitimer is unimplemented");
Ok(0) Ok(0)
} }
072 => { syscall::SYS_FCNTL => {
warn!("sys_fcntl is unimplemented"); warn!("sys_fcntl is unimplemented");
Ok(0) Ok(0)
} }
089 => { syscall::SYS_UMASK => {
warn!("sys_readlink is unimplemented");
Err(SysError::ENOENT)
}
092 => {
warn!("sys_chown is unimplemented");
Ok(0)
}
095 => {
warn!("sys_umask is unimplemented"); warn!("sys_umask is unimplemented");
Ok(0o777) Ok(0o777)
} }
102 => { syscall::SYS_GETUID => {
warn!("sys_getuid is unimplemented"); warn!("sys_getuid is unimplemented");
Ok(0) Ok(0)
} }
104 => { syscall::SYS_GETGID => {
warn!("sys_getgid is unimplemented"); warn!("sys_getgid is unimplemented");
Ok(0) Ok(0)
} }
105 => { syscall::SYS_SETUID => {
warn!("sys_setuid is unimplemented"); warn!("sys_setuid is unimplemented");
Ok(0) Ok(0)
} }
107 => { syscall::SYS_GETEUID => {
warn!("sys_geteuid is unimplemented"); warn!("sys_geteuid is unimplemented");
Ok(0) Ok(0)
} }
108 => { syscall::SYS_GETEGID => {
warn!("sys_getegid is unimplemented"); warn!("sys_getegid is unimplemented");
Ok(0) Ok(0)
} }
112 => { syscall::SYS_SETSID => {
warn!("sys_setsid is unimplemented"); warn!("sys_setsid is unimplemented");
Ok(0) Ok(0)
} }
131 => { syscall::SYS_SIGALTSTACK => {
warn!("sys_sigaltstack is unimplemented"); warn!("sys_sigaltstack is unimplemented");
Ok(0) Ok(0)
} }
162 => { syscall::SYS_SYNC => {
warn!("sys_sync is unimplemented"); warn!("sys_sync is unimplemented");
Ok(0) Ok(0)
} }
213 => { syscall::SYS_SET_TID_ADDRESS => {
warn!("sys_epoll_create is unimplemented");
Err(SysError::ENOSYS)
}
218 => {
warn!("sys_set_tid_address is unimplemented"); warn!("sys_set_tid_address is unimplemented");
Ok(thread::current().id()) Ok(thread::current().id())
} }
280 => { syscall::SYS_UTIMENSAT => {
warn!("sys_utimensat is unimplemented"); warn!("sys_utimensat is unimplemented");
Ok(0) Ok(0)
} }
291 => { syscall::SYS_EPOLL_CREATE1 => {
warn!("sys_epoll_create1 is unimplemented"); warn!("sys_epoll_create1 is unimplemented");
Err(SysError::ENOSYS) Err(SysError::ENOSYS)
} }
302 => { syscall::SYS_PRLIMIT64 => {
warn!("sys_prlimit64 is unimplemented"); warn!("sys_prlimit64 is unimplemented");
Ok(0) Ok(0)
} }
_ => { _ => {
error!("unknown syscall id: {}->{}, args: {:x?}", id, x86_64_id, args); #[cfg(target_arch = "x86_64")]
let x86_64_ret = x86_64_syscall(id, args, tf);
#[cfg(not(target_arch = "x86_64"))]
let x86_64_ret = None;
if let Some(ret) = x86_64_ret {
ret
} else {
error!("unknown syscall id: {}, args: {:x?}", id, args);
crate::trap::error(tf); crate::trap::error(tf);
} }
}
}; };
if !pid.is_init() { if !pid.is_init() {
// we trust pid 0 process // we trust pid 0 process
debug!("{}:{}:{} syscall id {}->{} ret with {:x?}", cid, pid, tid, id, x86_64_id, ret); debug!("{}:{}:{} syscall id {} ret with {:x?}", cid, pid, tid, id, ret);
} }
match ret { match ret {
Ok(code) => code as isize, Ok(code) => code as isize,
@ -243,6 +223,50 @@ pub fn syscall(id: usize, args: [usize; 6], tf: &mut TrapFrame) -> isize {
} }
} }
#[cfg(target_arch = "x86_64")]
fn x86_64_syscall(id: usize, args: [usize; 6], tf: &mut TrapFrame) -> Option<SysResult> {
let ret = match id {
syscall::SYS_OPEN => sys_open(args[0] as *const u8, args[1], args[2]),
syscall::SYS_STAT => sys_stat(args[0] as *const u8, args[1] as *mut Stat),
syscall::SYS_LSTAT => sys_lstat(args[0] as *const u8, args[1] as *mut Stat),
syscall::SYS_POLL => sys_poll(args[0] as *mut PollFd, args[1], args[2]),
syscall::SYS_ACCESS => sys_access(args[0] as *const u8, args[1]),
syscall::SYS_PIPE => sys_pipe(args[0] as *mut u32),
syscall::SYS_SELECT => sys_select(args[0], args[1] as *mut u32, args[2] as *mut u32, args[3] as *mut u32, args[4] as *const TimeVal),
syscall::SYS_DUP2 => sys_dup2(args[0], args[1]),
// syscall::SYS_PAUSE => sys_pause(),
SYS_FORK => sys_fork(tf),
// use fork for vfork
syscall::SYS_VFORK => sys_fork(tf),
syscall::SYS_RENAME => sys_rename(args[0] as *const u8, args[1] as *const u8),
syscall::SYS_MKDIR => sys_mkdir(args[0] as *const u8, args[1]),
syscall::SYS_LINK => sys_link(args[0] as *const u8, args[1] as *const u8),
syscall::SYS_UNLINK => sys_unlink(args[0] as *const u8),
syscall::SYS_ARCH_PRCTL => sys_arch_prctl(args[0] as i32, args[1], tf),
syscall::SYS_TIME => sys_time(args[0] as *mut u64),
syscall::SYS_ALARM => {
warn!("sys_alarm is unimplemented");
Ok(0)
}
syscall::SYS_READLINK => {
warn!("sys_readlink is unimplemented");
Err(SysError::ENOENT)
}
syscall::SYS_CHOWN => {
warn!("sys_chown is unimplemented");
Ok(0)
}
syscall::SYS_EPOLL_CREATE => {
warn!("sys_epoll_create is unimplemented");
Err(SysError::ENOSYS)
}
_ => {
return None;
}
};
Some(ret)
}
pub type SysResult = Result<usize, SysError>; pub type SysResult = Result<usize, SysError>;
#[allow(dead_code)] #[allow(dead_code)]

@ -1 +1 @@
Subproject commit 06084d9925a9f8e4234fefeabcbffc96cedf1e90 Subproject commit 10d49723dfbdb9015f16beb55e97c108de7e19da
Loading…
Cancel
Save