nixvm 0.0.0

A portable VM-style sandbox that runs a real Linux userland by emulating Linux syscalls directly (no guest kernel, no device emulation).
Documentation
//! aarch64 guest syscall table (asm-generic numbering).
//!
//! On arm64 the syscall number is in `x8`, args in `x0..x5`, return in `x0`.

use super::Sysno;

/// Map a raw aarch64 syscall number to the normalized [`Sysno`].
#[must_use]
#[allow(clippy::too_many_lines)] // a flat syscall-number match table
pub fn decode(nr: u64) -> Sysno {
    match nr {
        63 => Sysno::Read,
        64 => Sysno::Write,
        56 => Sysno::Openat,
        57 => Sysno::Close,
        214 => Sysno::Brk,
        222 => Sysno::Mmap,
        215 => Sysno::Munmap,
        226 => Sysno::Mprotect,
        216 => Sysno::Mremap,
        233 => Sysno::Madvise,
        228 => Sysno::Mlock,
        229 => Sysno::Munlock,
        230 => Sysno::Mlockall,
        231 => Sysno::Munlockall,
        284 => Sysno::Mlock2,
        227 => Sysno::Msync,
        232 => Sysno::Mincore,
        94 => Sysno::ExitGroup,
        93 => Sysno::Exit,
        96 => Sysno::SetTidAddress,
        29 => Sysno::Ioctl,
        66 => Sysno::Writev,
        160 => Sysno::Uname,
        172 => Sysno::Getpid,
        173 => Sysno::Getppid,
        178 => Sysno::Gettid,
        174 => Sysno::Getuid,
        175 => Sysno::Geteuid,
        176 => Sysno::Getgid,
        177 => Sysno::Getegid,
        113 => Sysno::ClockGettime,
        169 => Sysno::Gettimeofday,
        114 => Sysno::ClockGetres,
        115 => Sysno::ClockNanosleep,
        101 => Sysno::Nanosleep,
        112 => Sysno::ClockSettime,
        170 => Sysno::Settimeofday,
        171 => Sysno::Adjtimex,
        266 => Sysno::ClockAdjtime,
        62 => Sysno::Lseek,
        80 => Sysno::Fstat,
        79 => Sysno::Newfstatat,
        61 => Sysno::Getdents64,
        17 => Sysno::Getcwd,
        49 => Sysno::Chdir,
        278 => Sysno::Getrandom,
        134 => Sysno::RtSigaction,
        135 => Sysno::RtSigprocmask,
        136 => Sysno::RtSigpending,
        137 => Sysno::RtSigtimedwait,
        139 => Sysno::RtSigreturn,
        133 => Sysno::RtSigsuspend,
        132 => Sysno::Sigaltstack,
        129 => Sysno::Kill,
        130 => Sysno::Tkill,
        131 => Sysno::Tgkill,
        98 => Sysno::Futex,
        25 => Sysno::Fcntl,
        59 => Sysno::Pipe2,
        23 => Sysno::Dup,
        24 => Sysno::Dup3,
        220 => Sysno::Clone,
        221 => Sysno::Execve,
        260 => Sysno::Wait4,
        99 => Sysno::SetRobustList,
        43 => Sysno::Statfs,
        44 => Sysno::Fstatfs,
        78 => Sysno::Readlinkat,
        36 => Sysno::Symlinkat,
        34 => Sysno::Mkdirat,
        35 => Sysno::Unlinkat,
        276 => Sysno::Renameat2,
        48 => Sysno::Faccessat,
        439 => Sysno::Faccessat2,
        53 => Sysno::Fchmodat,
        52 => Sysno::Fchmod,
        54 => Sysno::Fchownat,
        55 => Sysno::Fchown,
        88 => Sysno::Utimensat,
        166 => Sysno::Umask,
        8 => Sysno::Getxattr,
        9 => Sysno::Lgetxattr,
        10 => Sysno::Fgetxattr,
        198 => Sysno::Socket,
        199 => Sysno::Socketpair,
        200 => Sysno::Bind,
        201 => Sysno::Listen,
        242 => Sysno::Accept4,
        203 => Sysno::Connect,
        204 => Sysno::Getsockname,
        205 => Sysno::Getpeername,
        206 => Sysno::Sendto,
        207 => Sysno::Recvfrom,
        208 => Sysno::Setsockopt,
        209 => Sysno::Getsockopt,
        210 => Sysno::Shutdown,
        124 => Sysno::SchedYield,
        123 => Sysno::SchedGetaffinity,
        122 => Sysno::SchedSetaffinity,
        120 => Sysno::SchedGetscheduler,
        119 => Sysno::SchedSetscheduler,
        121 => Sysno::SchedGetparam,
        125 => Sysno::SchedGetPriorityMax,
        126 => Sysno::SchedGetPriorityMin,
        165 => Sysno::Getrusage,
        179 => Sysno::Sysinfo,
        261 => Sysno::Prlimit64,
        153 => Sysno::Times,
        141 => Sysno::Getpriority,
        140 => Sysno::Setpriority,
        168 => Sysno::Getcpu,
        167 => Sysno::Prctl,
        92 => Sysno::Personality,
        161 => Sysno::Sethostname,
        162 => Sysno::Setdomainname,
        90 => Sysno::Capget,
        91 => Sysno::Capset,
        283 => Sysno::Membarrier,
        73 => Sysno::Ppoll,
        72 => Sysno::Pselect6,
        20 => Sysno::EpollCreate1,
        21 => Sysno::EpollCtl,
        22 => Sysno::EpollPwait,
        441 => Sysno::EpollPwait2,
        19 => Sysno::Eventfd2,
        85 => Sysno::TimerfdCreate,
        86 => Sysno::TimerfdSettime,
        87 => Sysno::TimerfdGettime,
        other => Sysno::Unknown(other),
    }
}