///|
fn syscall_x86_64(name : String) -> Int? {
match name {
"read" => Some(0)
"write" => Some(1)
"open" => Some(2)
"close" => Some(3)
"fstat" => Some(5)
"poll" => Some(7)
"lseek" => Some(8)
"mmap" => Some(9)
"mprotect" => Some(10)
"munmap" => Some(11)
"brk" => Some(12)
"rt_sigaction" => Some(13)
"rt_sigprocmask" => Some(14)
"rt_sigreturn" => Some(15)
"ioctl" => Some(16)
"pread64" => Some(17)
"sigaltstack" => Some(131)
"statfs" => Some(137)
"access" => Some(21)
"pipe" => Some(22)
"dup" => Some(32)
"dup2" => Some(33)
"socket" => Some(41)
"connect" => Some(42)
"accept" => Some(43)
"sendto" => Some(44)
"recvfrom" => Some(45)
"bind" => Some(49)
"listen" => Some(50)
"clone" => Some(56)
"execve" => Some(59)
"exit" => Some(60)
"wait4" => Some(61)
"fcntl" => Some(72)
"getcwd" => Some(79)
"chdir" => Some(80)
"readlink" => Some(89)
"arch_prctl" => Some(158)
"prctl" => Some(157)
"gettid" => Some(186)
"futex" => Some(202)
"sched_getaffinity" => Some(204)
"getpid" => Some(39)
"set_tid_address" => Some(218)
"set_robust_list" => Some(273)
"clock_gettime" => Some(228)
"exit_group" => Some(231)
"openat" => Some(257)
"splice" => Some(275)
"mkdirat" => Some(258)
"newfstatat" => Some(262)
"unlinkat" => Some(263)
"renameat2" => Some(316)
"getrandom" => Some(318)
"statx" => Some(332)
"execveat" => Some(322)
"accept4" => Some(288)
"dup3" => Some(292)
"pipe2" => Some(293)
"prlimit64" => Some(302)
"rseq" => Some(334)
"clone3" => Some(435)
_ => None
}
}
///|
fn syscall_aarch64(name : String) -> Int? {
match name {
"read" => Some(63)
"write" => Some(64)
"close" => Some(57)
"fstat" => Some(80)
"lseek" => Some(62)
"mmap" => Some(222)
"mprotect" => Some(226)
"munmap" => Some(215)
"brk" => Some(214)
"rt_sigaction" => Some(134)
"rt_sigprocmask" => Some(135)
"rt_sigreturn" => Some(139)
"ioctl" => Some(29)
"pread64" => Some(67)
"splice" => Some(76)
"faccessat" => Some(48)
"faccessat2" => Some(439)
"dup" => Some(23)
"dup3" => Some(24)
"socket" => Some(198)
"connect" => Some(203)
"accept" => Some(202)
"accept4" => Some(242)
"sendto" => Some(206)
"recvfrom" => Some(207)
"bind" => Some(200)
"listen" => Some(201)
"clone" => Some(220)
"clone3" => Some(435)
"execve" => Some(221)
"execveat" => Some(281)
"exit" => Some(93)
"exit_group" => Some(94)
"wait4" => Some(260)
"fcntl" => Some(25)
"getcwd" => Some(17)
"chdir" => Some(49)
"readlinkat" => Some(78)
"prctl" => Some(167)
"gettid" => Some(178)
"futex" => Some(98)
"getpid" => Some(172)
"set_tid_address" => Some(96)
"set_robust_list" => Some(99)
"clock_gettime" => Some(113)
"sched_getaffinity" => Some(123)
"sigaltstack" => Some(132)
"statfs" => Some(43)
"openat" => Some(56)
"mkdirat" => Some(34)
"newfstatat" => Some(79)
"unlinkat" => Some(35)
"renameat2" => Some(276)
"getrandom" => Some(278)
"statx" => Some(291)
"ppoll" => Some(73)
"pipe2" => Some(59)
"prlimit64" => Some(261)
"rseq" => Some(293)
_ => None
}
}
///|
pub fn syscall_number(architecture : Architecture, name : String) -> Int? {
match architecture {
X86_64 => syscall_x86_64(name)
AArch64 => syscall_aarch64(name)
}
}
///|
pub fn Architecture::audit_value(self : Architecture) -> UInt {
match self {
X86_64 => 0xc000003eU
AArch64 => 0xc00000b7U
}
}