pub mod aarch64;
pub mod x86_64;
use crate::abi::Arch;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Sysno {
Read,
Write,
Openat,
Close,
Brk,
Mmap,
Munmap,
Mprotect,
Mremap,
Madvise,
Mlock,
Mlock2,
Munlock,
Mlockall,
Munlockall,
Msync,
Mincore,
ExitGroup,
Exit,
SetTidAddress,
Ioctl,
Writev,
Uname,
Getpid,
Getppid,
Gettid,
Getuid,
Geteuid,
Getgid,
Getegid,
ClockGettime,
Gettimeofday,
ClockGetres,
Nanosleep,
ClockNanosleep,
ClockSettime,
Settimeofday,
Adjtimex,
ClockAdjtime,
Time,
Lseek,
Fstat,
Newfstatat,
Getdents64,
Getcwd,
Chdir,
Getrandom,
RtSigaction,
RtSigprocmask,
RtSigpending,
RtSigsuspend,
RtSigtimedwait,
RtSigreturn,
Sigaltstack,
Kill,
Tkill,
Tgkill,
Futex,
Fcntl,
Pipe2,
Dup,
Dup2,
Dup3,
Clone,
Execve,
Wait4,
SetRobustList,
Statfs,
Fstatfs,
Readlinkat,
Symlinkat,
Mkdirat,
Unlinkat,
Renameat,
Renameat2,
Faccessat,
Faccessat2,
Access,
Fchmodat,
Fchmod,
Fchownat,
Fchown,
Utimensat,
Umask,
Getxattr,
Lgetxattr,
Fgetxattr,
Socket,
Socketpair,
Bind,
Listen,
Accept4,
Connect,
Getsockname,
Getpeername,
Sendto,
Recvfrom,
Setsockopt,
Getsockopt,
Shutdown,
SchedYield,
SchedGetaffinity,
SchedSetaffinity,
SchedGetscheduler,
SchedSetscheduler,
SchedGetparam,
SchedGetPriorityMax,
SchedGetPriorityMin,
Getrusage,
Sysinfo,
Prlimit64,
Getrlimit,
Setrlimit,
Times,
Getpriority,
Setpriority,
Getcpu,
Prctl,
Personality,
Sethostname,
Setdomainname,
Capget,
Capset,
Membarrier,
Poll,
Ppoll,
Select,
Pselect6,
EpollCreate,
EpollCreate1,
EpollCtl,
EpollWait,
EpollPwait,
EpollPwait2,
Eventfd,
Eventfd2,
TimerfdCreate,
TimerfdSettime,
TimerfdGettime,
ArchPrctl,
Unknown(u64),
}
#[must_use]
pub fn decode(arch: Arch, nr: u64) -> Sysno {
match arch {
Arch::Aarch64 => aarch64::decode(nr),
Arch::X86_64 => x86_64::decode(nr),
}
}