Kinda get network working

This commit is contained in:
Michael Mikovsky
2025-08-12 22:24:00 -06:00
parent 8b2a596b9a
commit 856d7e467f
15 changed files with 3316 additions and 3219 deletions
+402
View File
@@ -0,0 +1,402 @@
use crate::{Syscall, Sysno};
/// Creates a `Syscall` enum from a system call number and an array of arguments.
///
/// This function matches the provided `syscall_num` to a `Sysno` variant
/// and constructs the corresponding `Syscall` enum variant with the arguments.
/// If the system call number is unknown, it returns a `Syscall::Unknown` variant.
///
/// # Arguments
///
/// * `syscall_num`: The system call number as an `isize`.
/// * `args`: An array of six `isize` values representing the system call's arguments.
///
/// # Returns
///
/// A `Syscall` enum variant.
pub fn create_syscall(syscall_num: usize, args: [usize; 6]) -> Syscall {
let (arg0, arg1, arg2, arg3, arg4, arg5) =
(args[0], args[1], args[2], args[3], args[4], args[5]);
// We can't simply match on the `isize` because of the non-contiguous
// syscall numbers, like `pidfd_send_signal`. A simple `match` statement
// requires all variants to be handled, and this is a lot of code.
// Instead we can use a `match` on the `Sysno` enum, which is more
// exhaustive and less error-prone.
match unsafe { std::mem::transmute::<i32, Sysno>(syscall_num as i32) } {
Sysno::read => Syscall::Read(arg0, arg1, arg2),
Sysno::write => Syscall::Write(arg0, arg1, arg2),
Sysno::open => Syscall::Open(arg0, arg1, arg2),
Sysno::close => Syscall::Close(arg0),
Sysno::stat => Syscall::Stat(arg0, arg1),
Sysno::fstat => Syscall::Fstat(arg0, arg1),
Sysno::lstat => Syscall::Lstat(arg0, arg1),
Sysno::poll => Syscall::Poll(arg0, arg1, arg2),
Sysno::lseek => Syscall::Lseek(arg0, arg1, arg2),
Sysno::mmap => Syscall::Mmap(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::mprotect => Syscall::Mprotect(arg0, arg1, arg2),
Sysno::munmap => Syscall::Munmap(arg0, arg1),
Sysno::brk => Syscall::Brk(arg0),
Sysno::rt_sigaction => Syscall::RtSigaction(arg0, arg1, arg2, arg3),
Sysno::rt_sigprocmask => Syscall::RtSigprocmask(arg0, arg1, arg2, arg3),
Sysno::rt_sigreturn => Syscall::RtSigreturn,
Sysno::ioctl => Syscall::Ioctl(arg0, arg1, arg2),
Sysno::pread64 => Syscall::Pread64(arg0, arg1, arg2, arg3),
Sysno::pwrite64 => Syscall::Pwrite64(arg0, arg1, arg2, arg3),
Sysno::readv => Syscall::Readv(arg0, arg1, arg2),
Sysno::writev => Syscall::Writev(arg0, arg1, arg2),
Sysno::access => Syscall::Access(arg0, arg1),
Sysno::pipe => Syscall::Pipe(arg0),
Sysno::select => Syscall::Select(arg0, arg1, arg2, arg3, arg4),
Sysno::sched_yield => Syscall::SchedYield,
Sysno::mremap => Syscall::Mremap(arg0, arg1, arg2, arg3, arg4),
Sysno::msync => Syscall::Msync(arg0, arg1, arg2),
Sysno::mincore => Syscall::Mincore(arg0, arg1, arg2),
Sysno::madvise => Syscall::Madvise(arg0, arg1, arg2),
Sysno::shmget => Syscall::Shmget(arg0, arg1, arg2),
Sysno::shmat => Syscall::Shmat(arg0, arg1, arg2),
Sysno::shmctl => Syscall::Shmctl(arg0, arg1, arg2),
Sysno::dup => Syscall::Dup(arg0),
Sysno::dup2 => Syscall::Dup2(arg0, arg1),
Sysno::pause => Syscall::Pause,
Sysno::nanosleep => Syscall::Nanosleep(arg0, arg1),
Sysno::getitimer => Syscall::Getitimer(arg0, arg1),
Sysno::alarm => Syscall::Alarm(arg0),
Sysno::setitimer => Syscall::Setitimer(arg0, arg1, arg2),
Sysno::getpid => Syscall::Getpid,
Sysno::sendfile => Syscall::Sendfile(arg0, arg1, arg2, arg3),
Sysno::socket => Syscall::Socket(arg0, arg1, arg2),
Sysno::connect => Syscall::Connect(arg0, arg1, arg2),
Sysno::accept => Syscall::Accept(arg0, arg1, arg2),
Sysno::sendto => Syscall::Sendto(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::recvfrom => Syscall::Recvfrom(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::sendmsg => Syscall::Sendmsg(arg0, arg1, arg2),
Sysno::recvmsg => Syscall::Recvmsg(arg0, arg1, arg2),
Sysno::shutdown => Syscall::Shutdown(arg0, arg1),
Sysno::bind => Syscall::Bind(arg0, arg1, arg2),
Sysno::listen => Syscall::Listen(arg0, arg1),
Sysno::getsockname => Syscall::Getsockname(arg0, arg1, arg2),
Sysno::getpeername => Syscall::Getpeername(arg0, arg1, arg2),
Sysno::socketpair => Syscall::Socketpair(arg0, arg1, arg2, arg3),
Sysno::setsockopt => Syscall::Setsockopt(arg0, arg1, arg2, arg3, arg4),
Sysno::getsockopt => Syscall::Getsockopt(arg0, arg1, arg2, arg3, arg4),
Sysno::clone => Syscall::Clone(arg0, arg1, arg2, arg3, arg4),
Sysno::fork => Syscall::Fork,
Sysno::vfork => Syscall::Vfork,
Sysno::execve => Syscall::Execve(arg0, arg1, arg2),
Sysno::exit => Syscall::Exit(arg0),
Sysno::wait4 => Syscall::Wait4(arg0, arg1, arg2, arg3),
Sysno::kill => Syscall::Kill(arg0, arg1),
Sysno::uname => Syscall::Uname(arg0),
Sysno::semget => Syscall::Semget(arg0, arg1, arg2),
Sysno::semop => Syscall::Semop(arg0, arg1, arg2),
Sysno::semctl => Syscall::Semctl(arg0, arg1, arg2, arg3),
Sysno::shmdt => Syscall::Shmdt(arg0),
Sysno::msgget => Syscall::Msgget(arg0, arg1),
Sysno::msgsnd => Syscall::Msgsnd(arg0, arg1, arg2, arg3),
Sysno::msgrcv => Syscall::Msgrcv(arg0, arg1, arg2, arg3, arg4),
Sysno::msgctl => Syscall::Msgctl(arg0, arg1, arg2),
Sysno::fcntl => Syscall::Fcntl(arg0, arg1, arg2),
Sysno::flock => Syscall::Flock(arg0, arg1),
Sysno::fsync => Syscall::Fsync(arg0),
Sysno::fdatasync => Syscall::Fdatasync(arg0),
Sysno::truncate => Syscall::Truncate(arg0, arg1),
Sysno::ftruncate => Syscall::Ftruncate(arg0, arg1),
Sysno::getdents => Syscall::Getdents(arg0, arg1, arg2),
Sysno::getcwd => Syscall::Getcwd(arg0, arg1),
Sysno::chdir => Syscall::Chdir(arg0),
Sysno::fchdir => Syscall::Fchdir(arg0),
Sysno::rename => Syscall::Rename(arg0, arg1),
Sysno::mkdir => Syscall::Mkdir(arg0, arg1),
Sysno::rmdir => Syscall::Rmdir(arg0),
Sysno::creat => Syscall::Creat(arg0, arg1),
Sysno::link => Syscall::Link(arg0, arg1),
Sysno::unlink => Syscall::Unlink(arg0),
Sysno::symlink => Syscall::Symlink(arg0, arg1),
Sysno::readlink => Syscall::Readlink(arg0, arg1, arg2),
Sysno::chmod => Syscall::Chmod(arg0, arg1),
Sysno::fchmod => Syscall::Fchmod(arg0, arg1),
Sysno::chown => Syscall::Chown(arg0, arg1, arg2),
Sysno::fchown => Syscall::Fchown(arg0, arg1, arg2),
Sysno::lchown => Syscall::Lchown(arg0, arg1, arg2),
Sysno::umask => Syscall::Umask(arg0),
Sysno::gettimeofday => Syscall::Gettimeofday(arg0, arg1),
Sysno::getrlimit => Syscall::Getrlimit(arg0, arg1),
Sysno::getrusage => Syscall::Getrusage(arg0, arg1),
Sysno::sysinfo => Syscall::Sysinfo(arg0),
Sysno::times => Syscall::Times(arg0),
Sysno::ptrace => Syscall::Ptrace(arg0, arg1, arg2, arg3),
Sysno::getuid => Syscall::Getuid,
Sysno::syslog => Syscall::Syslog(arg0, arg1, arg2),
Sysno::getgid => Syscall::Getgid,
Sysno::setuid => Syscall::Setuid(arg0),
Sysno::setgid => Syscall::Setgid(arg0),
Sysno::geteuid => Syscall::Geteuid,
Sysno::getegid => Syscall::Getegid,
Sysno::setpgid => Syscall::Setpgid(arg0, arg1),
Sysno::getppid => Syscall::Getppid,
Sysno::getpgrp => Syscall::Getpgrp,
Sysno::setsid => Syscall::Setsid,
Sysno::setreuid => Syscall::Setreuid(arg0, arg1),
Sysno::setregid => Syscall::Setregid(arg0, arg1),
Sysno::getgroups => Syscall::Getgroups(arg0, arg1),
Sysno::setgroups => Syscall::Setgroups(arg0, arg1),
Sysno::setresuid => Syscall::Setresuid(arg0, arg1, arg2),
Sysno::getresuid => Syscall::Getresuid(arg0, arg1, arg2),
Sysno::setresgid => Syscall::Setresgid(arg0, arg1, arg2),
Sysno::getresgid => Syscall::Getresgid(arg0, arg1, arg2),
Sysno::getpgid => Syscall::Getpgid(arg0),
Sysno::setfsuid => Syscall::Setfsuid(arg0),
Sysno::setfsgid => Syscall::Setfsgid(arg0),
Sysno::getsid => Syscall::Getsid(arg0),
Sysno::capget => Syscall::Capget(arg0, arg1),
Sysno::capset => Syscall::Capset(arg0, arg1),
Sysno::rt_sigpending => Syscall::RtSigpending(arg0, arg1),
Sysno::rt_sigtimedwait => Syscall::RtSigtimedwait(arg0, arg1, arg2, arg3),
Sysno::rt_sigqueueinfo => Syscall::RtSigqueueinfo(arg0, arg1, arg2),
Sysno::rt_sigsuspend => Syscall::RtSigsuspend(arg0, arg1),
Sysno::sigaltstack => Syscall::Sigaltstack(arg0, arg1),
Sysno::utime => Syscall::Utime(arg0, arg1),
Sysno::mknod => Syscall::Mknod(arg0, arg1, arg2),
Sysno::uselib => Syscall::Uselib(arg0),
Sysno::personality => Syscall::Personality(arg0),
Sysno::ustat => Syscall::Ustat(arg0, arg1),
Sysno::statfs => Syscall::Statfs(arg0, arg1),
Sysno::fstatfs => Syscall::Fstatfs(arg0, arg1),
Sysno::sysfs => Syscall::Sysfs(arg0, arg1, arg2),
Sysno::getpriority => Syscall::Getpriority(arg0, arg1),
Sysno::setpriority => Syscall::Setpriority(arg0, arg1, arg2),
Sysno::sched_setparam => Syscall::SchedSetparam(arg0, arg1),
Sysno::sched_getparam => Syscall::SchedGetparam(arg0, arg1),
Sysno::sched_setscheduler => Syscall::SchedSetscheduler(arg0, arg1, arg2),
Sysno::sched_getscheduler => Syscall::SchedGetscheduler(arg0),
Sysno::sched_get_priority_max => Syscall::SchedGetPriorityMax(arg0),
Sysno::sched_get_priority_min => Syscall::SchedGetPriorityMin(arg0),
Sysno::sched_rr_get_interval => Syscall::SchedRrGetInterval(arg0, arg1),
Sysno::mlock => Syscall::Mlock(arg0, arg1),
Sysno::munlock => Syscall::Munlock(arg0, arg1),
Sysno::mlockall => Syscall::Mlockall(arg0),
Sysno::munlockall => Syscall::Munlockall,
Sysno::vhangup => Syscall::Vhangup,
Sysno::modify_ldt => Syscall::ModifyLdt(arg0, arg1, arg2),
Sysno::pivot_root => Syscall::PivotRoot(arg0, arg1),
Sysno::_sysctl => Syscall::_Sysctl(arg0),
Sysno::prctl => Syscall::Prctl(arg0, arg1, arg2, arg3, arg4),
Sysno::arch_prctl => Syscall::ArchPrctl(arg0, arg1),
Sysno::adjtimex => Syscall::Adjtimex(arg0),
Sysno::setrlimit => Syscall::Setrlimit(arg0, arg1),
Sysno::chroot => Syscall::Chroot(arg0),
Sysno::sync => Syscall::Sync,
Sysno::acct => Syscall::Acct(arg0),
Sysno::settimeofday => Syscall::Settimeofday(arg0, arg1),
Sysno::mount => Syscall::Mount(arg0, arg1, arg2, arg3, arg4),
Sysno::umount2 => Syscall::Umount2(arg0, arg1),
Sysno::swapon => Syscall::Swapon(arg0, arg1),
Sysno::swapoff => Syscall::Swapoff(arg0),
Sysno::reboot => Syscall::Reboot(arg0, arg1, arg2, arg3),
Sysno::sethostname => Syscall::Sethostname(arg0, arg1),
Sysno::setdomainname => Syscall::Setdomainname(arg0, arg1),
Sysno::iopl => Syscall::Iopl(arg0),
Sysno::ioperm => Syscall::Ioperm(arg0, arg1, arg2),
Sysno::create_module => Syscall::CreateModule(arg0, arg1),
Sysno::init_module => Syscall::InitModule(arg0, arg1, arg2),
Sysno::delete_module => Syscall::DeleteModule(arg0, arg1),
Sysno::get_kernel_syms => Syscall::GetKernelSyms(arg0),
Sysno::query_module => Syscall::QueryModule(arg0, arg1, arg2, arg3, arg4),
Sysno::quotactl => Syscall::Quotactl(arg0, arg1, arg2, arg3),
Sysno::nfsservctl => Syscall::Nfsservctl(arg0, arg1, arg2),
Sysno::getpmsg => Syscall::Getpmsg,
Sysno::putpmsg => Syscall::Putpmsg,
Sysno::afs_syscall => Syscall::AfsSyscall,
Sysno::tuxcall => Syscall::Tuxcall,
Sysno::security => Syscall::Security,
Sysno::gettid => Syscall::Gettid,
Sysno::readahead => Syscall::Readahead(arg0, arg1, arg2),
Sysno::setxattr => Syscall::Setxattr(arg0, arg1, arg2, arg3, arg4),
Sysno::lsetxattr => Syscall::Lsetxattr(arg0, arg1, arg2, arg3, arg4),
Sysno::fsetxattr => Syscall::Fsetxattr(arg0, arg1, arg2, arg3, arg4),
Sysno::getxattr => Syscall::Getxattr(arg0, arg1, arg2, arg3),
Sysno::lgetxattr => Syscall::Lgetxattr(arg0, arg1, arg2, arg3),
Sysno::fgetxattr => Syscall::Fgetxattr(arg0, arg1, arg2, arg3),
Sysno::listxattr => Syscall::Listxattr(arg0, arg1, arg2),
Sysno::llistxattr => Syscall::Llistxattr(arg0, arg1, arg2),
Sysno::flistxattr => Syscall::Flistxattr(arg0, arg1, arg2),
Sysno::removexattr => Syscall::Removexattr(arg0, arg1),
Sysno::lremovexattr => Syscall::Lremovexattr(arg0, arg1),
Sysno::fremovexattr => Syscall::Fremovexattr(arg0, arg1),
Sysno::tkill => Syscall::Tkill(arg0, arg1),
Sysno::time => Syscall::Time(arg0),
Sysno::futex => Syscall::Futex(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::sched_setaffinity => Syscall::SchedSetaffinity(arg0, arg1, arg2),
Sysno::sched_getaffinity => Syscall::SchedGetaffinity(arg0, arg1, arg2),
Sysno::set_thread_area => Syscall::SetThreadArea(arg0),
Sysno::io_setup => Syscall::IoSetup(arg0, arg1),
Sysno::io_destroy => Syscall::IoDestroy(arg0),
Sysno::io_getevents => Syscall::IoGetevents(arg0, arg1, arg2, arg3, arg4),
Sysno::io_submit => Syscall::IoSubmit(arg0, arg1, arg2),
Sysno::io_cancel => Syscall::IoCancel(arg0, arg1, arg2),
Sysno::get_thread_area => Syscall::GetThreadArea(arg0),
Sysno::lookup_dcookie => Syscall::LookupDcookie(arg0, arg1, arg2, arg3),
Sysno::epoll_create => Syscall::EpollCreate(arg0),
Sysno::epoll_ctl_old => Syscall::EpollCtlOld,
Sysno::epoll_wait_old => Syscall::EpollWaitOld,
Sysno::remap_file_pages => Syscall::RemapFilePages(arg0, arg1, arg2, arg3, arg4),
Sysno::getdents64 => Syscall::Getdents64(arg0, arg1, arg2),
Sysno::set_tid_address => Syscall::SetTidAddress(arg0),
Sysno::restart_syscall => Syscall::RestartSyscall,
Sysno::semtimedop => Syscall::Semtimedop(arg0, arg1, arg2, arg3),
Sysno::fadvise64 => Syscall::Fadvise64(arg0, arg1, arg2, arg3),
Sysno::timer_create => Syscall::TimerCreate(arg0, arg1, arg2),
Sysno::timer_settime => Syscall::TimerSettime(arg0, arg1, arg2, arg3),
Sysno::timer_gettime => Syscall::TimerGettime(arg0, arg1),
Sysno::timer_getoverrun => Syscall::TimerGetoverrun(arg0),
Sysno::timer_delete => Syscall::TimerDelete(arg0),
Sysno::clock_settime => Syscall::ClockSettime(arg0, arg1),
Sysno::clock_gettime => Syscall::ClockGettime(arg0, arg1),
Sysno::clock_getres => Syscall::ClockGetres(arg0, arg1),
Sysno::clock_nanosleep => Syscall::ClockNanosleep(arg0, arg1, arg2, arg3),
Sysno::exit_group => Syscall::ExitGroup(arg0),
Sysno::epoll_wait => Syscall::EpollWait(arg0, arg1, arg2, arg3),
Sysno::epoll_ctl => Syscall::EpollCtl(arg0, arg1, arg2, arg3),
Sysno::tgkill => Syscall::Tgkill(arg0, arg1, arg2),
Sysno::utimes => Syscall::Utimes(arg0, arg1),
Sysno::vserver => Syscall::Vserver,
Sysno::mbind => Syscall::Mbind(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::set_mempolicy => Syscall::SetMempolicy(arg0, arg1, arg2),
Sysno::get_mempolicy => Syscall::GetMempolicy(arg0, arg1, arg2, arg3, arg4),
Sysno::mq_open => Syscall::MqOpen(arg0, arg1, arg2, arg3),
Sysno::mq_unlink => Syscall::MqUnlink(arg0),
Sysno::mq_timedsend => Syscall::MqTimedsend(arg0, arg1, arg2, arg3, arg4),
Sysno::mq_timedreceive => Syscall::MqTimedreceive(arg0, arg1, arg2, arg3, arg4),
Sysno::mq_notify => Syscall::MqNotify(arg0, arg1),
Sysno::mq_getsetattr => Syscall::MqGetsetattr(arg0, arg1, arg2),
Sysno::kexec_load => Syscall::KexecLoad(arg0, arg1, arg2, arg3),
Sysno::waitid => Syscall::Waitid(arg0, arg1, arg2, arg3, arg4),
Sysno::add_key => Syscall::AddKey(arg0, arg1, arg2, arg3),
Sysno::request_key => Syscall::RequestKey(arg0, arg1, arg2),
Sysno::keyctl => Syscall::Keyctl(arg0, arg1, arg2, arg3, arg4),
Sysno::ioprio_set => Syscall::IoprioSet(arg0, arg1, arg2),
Sysno::ioprio_get => Syscall::IoprioGet(arg0, arg1),
Sysno::inotify_init => Syscall::InotifyInit,
Sysno::inotify_add_watch => Syscall::InotifyAddWatch(arg0, arg1, arg2),
Sysno::inotify_rm_watch => Syscall::InotifyRmWatch(arg0, arg1),
Sysno::migrate_pages => Syscall::MigratePages(arg0, arg1, arg2, arg3),
Sysno::openat => Syscall::Openat(arg0, arg1, arg2, arg3),
Sysno::mkdirat => Syscall::Mkdirat(arg0, arg1, arg2),
Sysno::mknodat => Syscall::Mknodat(arg0, arg1, arg2, arg3),
Sysno::fchownat => Syscall::Fchownat(arg0, arg1, arg2, arg3, arg4),
Sysno::futimesat => Syscall::Futimesat(arg0, arg1, arg2),
Sysno::newfstatat => Syscall::Newfstatat(arg0, arg1, arg2, arg3),
Sysno::unlinkat => Syscall::Unlinkat(arg0, arg1, arg2),
Sysno::renameat => Syscall::Renameat(arg0, arg1, arg2, arg3),
Sysno::linkat => Syscall::Linkat(arg0, arg1, arg2, arg3, arg4),
Sysno::symlinkat => Syscall::Symlinkat(arg0, arg1, arg2),
Sysno::readlinkat => Syscall::Readlinkat(arg0, arg1, arg2, arg3),
Sysno::fchmodat => Syscall::Fchmodat(arg0, arg1, arg2),
Sysno::faccessat => Syscall::Faccessat(arg0, arg1, arg2),
Sysno::pselect6 => Syscall::Pselect6(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::ppoll => Syscall::Ppoll(arg0, arg1, arg2, arg3, arg4),
Sysno::unshare => Syscall::Unshare(arg0),
Sysno::set_robust_list => Syscall::SetRobustList(arg0, arg1),
Sysno::get_robust_list => Syscall::GetRobustList(arg0, arg1, arg2),
Sysno::splice => Syscall::Splice(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::tee => Syscall::Tee(arg0, arg1, arg2, arg3),
Sysno::sync_file_range => Syscall::SyncFileRange(arg0, arg1, arg2, arg3),
Sysno::vmsplice => Syscall::Vmsplice(arg0, arg1, arg2, arg3),
Sysno::move_pages => Syscall::MovePages(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::utimensat => Syscall::Utimensat(arg0, arg1, arg2, arg3),
Sysno::epoll_pwait => Syscall::EpollPwait(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::signalfd => Syscall::Signalfd(arg0, arg1, arg2),
Sysno::timerfd_create => Syscall::TimerfdCreate(arg0, arg1),
Sysno::eventfd => Syscall::Eventfd(arg0, arg1),
Sysno::fallocate => Syscall::Fallocate(arg0, arg1, arg2, arg3),
Sysno::timerfd_settime => Syscall::TimerfdSettime(arg0, arg1, arg2, arg3),
Sysno::timerfd_gettime => Syscall::TimerfdGettime(arg0, arg1),
Sysno::accept4 => Syscall::Accept4(arg0, arg1, arg2, arg3),
Sysno::signalfd4 => Syscall::Signalfd4(arg0, arg1, arg2, arg3),
Sysno::eventfd2 => Syscall::Eventfd2(arg0, arg1),
Sysno::epoll_create1 => Syscall::EpollCreate1(arg0),
Sysno::dup3 => Syscall::Dup3(arg0, arg1, arg2),
Sysno::pipe2 => Syscall::Pipe2(arg0, arg1),
Sysno::inotify_init1 => Syscall::InotifyInit1(arg0),
Sysno::preadv => Syscall::Preadv(arg0, arg1, arg2, arg3),
Sysno::pwritev => Syscall::Pwritev(arg0, arg1, arg2, arg3),
Sysno::rt_tgsigqueueinfo => Syscall::RtTgsigqueueinfo(arg0, arg1, arg2, arg3),
Sysno::perf_event_open => Syscall::PerfEventOpen(arg0, arg1, arg2, arg3, arg4),
Sysno::recvmmsg => Syscall::Recvmmsg(arg0, arg1, arg2, arg3, arg4),
Sysno::fanotify_init => Syscall::FanotifyInit(arg0, arg1),
Sysno::fanotify_mark => Syscall::FanotifyMark(arg0, arg1, arg2, arg3, arg4),
Sysno::prlimit64 => Syscall::Prlimit64(arg0, arg1, arg2, arg3),
Sysno::name_to_handle_at => Syscall::NameToHandleAt(arg0, arg1, arg2, arg3, arg4),
Sysno::open_by_handle_at => Syscall::OpenByHandleAt(arg0, arg1, arg2),
Sysno::clock_adjtime => Syscall::ClockAdjtime(arg0, arg1),
Sysno::syncfs => Syscall::Syncfs(arg0),
Sysno::sendmmsg => Syscall::Sendmmsg(arg0, arg1, arg2, arg3),
Sysno::setns => Syscall::Setns(arg0, arg1),
Sysno::getcpu => Syscall::Getcpu(arg0, arg1, arg2),
Sysno::process_vm_readv => Syscall::ProcessVmReadv(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::process_vm_writev => Syscall::ProcessVmWritev(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::kcmp => Syscall::Kcmp(arg0, arg1, arg2, arg3, arg4),
Sysno::finit_module => Syscall::FinitModule(arg0, arg1, arg2),
Sysno::sched_setattr => Syscall::SchedSetattr(arg0, arg1, arg2),
Sysno::sched_getattr => Syscall::SchedGetattr(arg0, arg1, arg2, arg3),
Sysno::renameat2 => Syscall::Renameat2(arg0, arg1, arg2, arg3, arg4),
Sysno::seccomp => Syscall::Seccomp(arg0, arg1, arg2),
Sysno::getrandom => Syscall::Getrandom(arg0, arg1, arg2),
Sysno::memfd_create => Syscall::MemfdCreate(arg0, arg1),
Sysno::kexec_file_load => Syscall::KexecFileLoad(arg0, arg1, arg2, arg3, arg4),
Sysno::bpf => Syscall::Bpf(arg0, arg1, arg2),
Sysno::execveat => Syscall::Execveat(arg0, arg1, arg2, arg3, arg4),
Sysno::userfaultfd => Syscall::Userfaultfd(arg0),
Sysno::membarrier => Syscall::Membarrier(arg0, arg1),
Sysno::mlock2 => Syscall::Mlock2(arg0, arg1, arg2),
Sysno::copy_file_range => Syscall::CopyFileRange(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::preadv2 => Syscall::Preadv2(arg0, arg1, arg2, arg3, arg4),
Sysno::pwritev2 => Syscall::Pwritev2(arg0, arg1, arg2, arg3, arg4),
Sysno::pkey_mprotect => Syscall::PkeyMprotect(arg0, arg1, arg2, arg3),
Sysno::pkey_alloc => Syscall::PkeyAlloc(arg0, arg1),
Sysno::pkey_free => Syscall::PkeyFree(arg0),
Sysno::statx => Syscall::Statx(arg0, arg1, arg2, arg3, arg4),
Sysno::io_pgetevents => Syscall::IoPgetevents(arg0, arg1, arg2, arg3, arg4, arg5),
Sysno::rseq => Syscall::Rseq(arg0, arg1, arg2, arg3),
Sysno::pidfd_send_signal => Syscall::PidfdSendSignal(arg0, arg1, arg2, arg3),
Sysno::io_uring_setup => Syscall::IoUringSetup(arg0, arg1),
Sysno::io_uring_enter => Syscall::IoUringEnter(arg0, arg1, arg2, arg3, arg4),
Sysno::io_uring_register => Syscall::IoUringRegister(arg0, arg1, arg2, arg3),
Sysno::open_tree => Syscall::OpenTree(arg0, arg1, arg2),
Sysno::move_mount => Syscall::MoveMount(arg0, arg1, arg2, arg3, arg4),
Sysno::fsopen => Syscall::Fsopen(arg0, arg1, arg2),
Sysno::fsconfig => Syscall::Fsconfig(arg0, arg1, arg2, arg3, arg4),
Sysno::fsmount => Syscall::Fsmount(arg0, arg1, arg2),
Sysno::fspick => Syscall::Fspick(arg0, arg1, arg2),
Sysno::pidfd_open => Syscall::PidfdOpen(arg0, arg1),
Sysno::clone3 => Syscall::Clone3(arg0, arg1),
Sysno::close_range => Syscall::CloseRange(arg0, arg1, arg2),
Sysno::openat2 => Syscall::Openat2(arg0, arg1, arg2, arg3),
Sysno::pidfd_getfd => Syscall::PidfdGetfd(arg0, arg1, arg2),
Sysno::faccessat2 => Syscall::Faccessat2(arg0, arg1, arg2, arg3),
Sysno::process_madvise => Syscall::ProcessMadvise(arg0, arg1, arg2, arg3, arg4),
Sysno::epoll_pwait2 => Syscall::EpollPwait2(arg0, arg1, arg2, arg3, arg4),
Sysno::mount_setattr => Syscall::MountSetattr(arg0, arg1, arg2, arg3),
Sysno::quotactl_fd => Syscall::QuotactlFd(arg0, arg1, arg2, arg3),
Sysno::landlock_create_ruleset => Syscall::LandlockCreateRuleset(arg0, arg1, arg2),
Sysno::landlock_add_rule => Syscall::LandlockAddRule(arg0, arg1, arg2, arg3),
Sysno::landlock_restrict_self => Syscall::LandlockRestrictSelf(arg0, arg1),
Sysno::memfd_secret => Syscall::MemfdSecret(arg0),
Sysno::process_mrelease => Syscall::ProcessMrelease(arg0, arg1),
Sysno::futex_waitv => Syscall::FutexWaitv(arg0, arg1, arg2),
Sysno::set_mempolicy_home_node => Syscall::SetMempolicyHomeNode(arg0, arg1, arg2),
Sysno::cachestat => Syscall::Cachestat(arg0, arg1, arg2, arg3, arg4),
Sysno::fchmodat2 => Syscall::Fchmodat2(arg0, arg1, arg2, arg3),
Sysno::map_shadow_stack => Syscall::MapShadowStack(arg0, arg1),
Sysno::futex_wake => Syscall::FutexWake(arg0, arg1, arg2),
Sysno::futex_wait => Syscall::FutexWait(arg0, arg1, arg2),
Sysno::futex_requeue => Syscall::FutexRequeue(arg0, arg1, arg2, arg3),
Sysno::statmount => Syscall::Statmount(arg0, arg1, arg2),
Sysno::listmount => Syscall::Listmount(arg0, arg1, arg2),
Sysno::lsm_get_self_attr => Syscall::LsmGetSelfAttr(arg0, arg1, arg2, arg3),
Sysno::lsm_set_self_attr => Syscall::LsmSetSelfAttr(arg0, arg1, arg2),
Sysno::lsm_list_modules => Syscall::LsmListModules(arg0, arg1),
// _ => Syscall::Unknown(syscall_num, args),
}
}
+41
View File
@@ -0,0 +1,41 @@
mod create_syscall;
mod proxy_list;
mod syscall;
mod syscall_num;
const CONFIG: bincode::config::Configuration = bincode::config::standard();
use std::{
collections::HashMap,
sync::{Arc, Mutex},
};
use bincode::{Decode, Encode};
pub use create_syscall::create_syscall;
pub use proxy_list::syscall_should_proxy;
pub use syscall::Syscall;
pub use syscall_num::Sysno;
#[derive(Debug, PartialEq, Eq, Encode, Decode)]
pub enum Message {
RequestMemory(isize), // Request a memory object at a specific address
UpdateMemory(isize, Vec<u8>), // Update a memory object
Syscall(isize, [isize; 6]), // Execute a syscall with arguments
SyscallReturn(isize, Option<(isize, Vec<u8>)>), // Syscall return value and optional new memory
}
pub type ProgramMemory = Arc<Mutex<HashMap<isize, Vec<u8>>>>;
impl Message {
pub fn encode(&self) -> Vec<u8> {
bincode::encode_to_vec(self, CONFIG).unwrap()
}
pub fn decode(bytes: &[u8]) -> Option<Self> {
if let Ok((decoded, _)) = bincode::decode_from_slice(&bytes[..], CONFIG) {
Some(decoded)
} else {
None
}
}
}
+540
View File
@@ -0,0 +1,540 @@
use crate::{Syscall, syscall_num::Sysno};
pub fn syscall_should_proxy(syscall: &Syscall) -> bool {
match syscall {
// --- Filesystem & I/O Syscalls ---
// These interact with the filesystem and need to be forwarded to the remote host.
Syscall::Read(..)
| Syscall::Write(..)
| Syscall::Open(..)
| Syscall::Close(..)
| Syscall::Stat(..)
| Syscall::Fstat(..)
| Syscall::Lstat(..)
| Syscall::Openat(..)
| Syscall::Creat(..)
| Syscall::Rename(..)
| Syscall::Renameat(..)
| Syscall::Unlink(..)
| Syscall::Unlinkat(..)
| Syscall::Mkdir(..)
| Syscall::Mkdirat(..)
| Syscall::Rmdir(..)
| Syscall::Chdir(..)
| Syscall::Fchdir(..)
| Syscall::Chmod(..)
| Syscall::Fchmod(..)
| Syscall::Fchmodat(..)
| Syscall::Chown(..)
| Syscall::Fchown(..)
| Syscall::Lchown(..)
| Syscall::Fchownat(..)
| Syscall::Access(..)
| Syscall::Faccessat(..)
| Syscall::Getdents(..)
| Syscall::Getdents64(..)
| Syscall::Readlink(..)
| Syscall::Readlinkat(..)
| Syscall::Symlink(..)
| Syscall::Symlinkat(..)
| Syscall::Truncate(..)
| Syscall::Ftruncate(..)
| Syscall::Getcwd(..)
| Syscall::Lseek(..)
| Syscall::Sendfile(..)
| Syscall::Sync
| Syscall::Fsync(..)
| Syscall::Fdatasync(..)
| Syscall::Fcntl(..)
| Syscall::Flock(..)
| Syscall::Pipe(..)
| Syscall::Pipe2(..)
| Syscall::Dup(..)
| Syscall::Dup2(..)
| Syscall::Dup3(..)
| Syscall::InotifyInit
| Syscall::InotifyInit1(..)
| Syscall::InotifyAddWatch(..)
| Syscall::InotifyRmWatch(..)
| Syscall::EpollCreate(..)
| Syscall::EpollCreate1(..)
| Syscall::EpollCtl(..)
| Syscall::EpollWait(..)
| Syscall::EpollPwait(..)
| Syscall::EpollPwait2(..)
| Syscall::Splice(..)
| Syscall::Tee(..)
| Syscall::Vmsplice(..)
| Syscall::Fallocate(..)
| Syscall::CopyFileRange(..)
| Syscall::Utimes(..)
| Syscall::Futimesat(..)
| Syscall::Getxattr(..)
| Syscall::Lgetxattr(..)
| Syscall::Fgetxattr(..)
| Syscall::Listxattr(..)
| Syscall::Llistxattr(..)
| Syscall::Flistxattr(..)
| Syscall::Setxattr(..)
| Syscall::Lsetxattr(..)
| Syscall::Fsetxattr(..)
| Syscall::Removexattr(..)
| Syscall::Lremovexattr(..)
| Syscall::Fremovexattr(..)
| Syscall::Readv(..)
| Syscall::Writev(..)
| Syscall::Pread64(..)
| Syscall::Pwrite64(..)
| Syscall::Preadv(..)
| Syscall::Pwritev(..)
| Syscall::Preadv2(..)
| Syscall::Pwritev2(..)
| Syscall::Syncfs(..)
| Syscall::Readahead(..)
| Syscall::Statx(..) => true,
// --- Network Syscalls ---
// These are inherently remote operations.
Syscall::Socket(..)
| Syscall::Connect(..)
| Syscall::Accept(..)
| Syscall::Accept4(..)
| Syscall::Sendto(..)
| Syscall::Recvfrom(..)
| Syscall::Sendmsg(..)
| Syscall::Recvmsg(..)
| Syscall::Sendmmsg(..)
| Syscall::Recvmmsg(..)
| Syscall::Shutdown(..)
| Syscall::Bind(..)
| Syscall::Listen(..)
| Syscall::Getsockname(..)
| Syscall::Getpeername(..)
| Syscall::Socketpair(..)
| Syscall::Setsockopt(..)
| Syscall::Getsockopt(..) => true,
// --- Process & IPC Syscalls ---
// Syscalls that create new processes or threads (fork, clone, execve)
// or manipulate inter-process state should be forwarded.
Syscall::Clone(..)
| Syscall::Clone3(..)
| Syscall::Fork
| Syscall::Vfork
| Syscall::Execve(..)
| Syscall::Execveat(..)
| Syscall::ExitGroup(..)
| Syscall::Wait4(..)
| Syscall::Waitid(..)
| Syscall::Kill(..)
| Syscall::Tgkill(..)
| Syscall::Tkill(..)
| Syscall::Semget(..)
| Syscall::Semop(..)
| Syscall::Semctl(..)
| Syscall::Semtimedop(..)
| Syscall::Shmget(..)
| Syscall::Shmat(..)
| Syscall::Shmctl(..)
| Syscall::Shmdt(..)
| Syscall::Msgget(..)
| Syscall::Msgsnd(..)
| Syscall::Msgrcv(..)
| Syscall::Msgctl(..) => true,
// --- Other Syscalls that should be forwarded ---
// A few other miscellaneous syscalls that are typically forwarded.
Syscall::Reboot(..)
| Syscall::Adjtimex(..)
| Syscall::Gettimeofday(..)
| Syscall::Settimeofday(..)
| Syscall::ClockGettime(..)
| Syscall::ClockSettime(..)
| Syscall::ClockAdjtime(..)
| Syscall::TimerCreate(..)
| Syscall::TimerSettime(..)
| Syscall::TimerfdCreate(..)
| Syscall::TimerfdSettime(..) => true,
// --- All other syscalls should NOT be forwarded ---
// This includes memory management, local process state queries,
// and other local operations.
_ => false,
}
// match unsafe { std::mem::transmute::<i32, Sysno>(n as i32) } {
// Sysno::read => false,
// Sysno::write => false,
// Sysno::open => false,
// Sysno::close => false,
// Sysno::stat => false,
// Sysno::fstat => false,
// Sysno::lstat => false,
// Sysno::poll => false,
// Sysno::lseek => false,
// Sysno::mmap => false,
// Sysno::mprotect => false,
// Sysno::munmap => false,
// Sysno::brk => false,
// Sysno::rt_sigaction => false,
// Sysno::rt_sigprocmask => false,
// Sysno::rt_sigreturn => false,
// Sysno::ioctl => false,
// Sysno::pread64 => false,
// Sysno::pwrite64 => false,
// Sysno::readv => false,
// Sysno::writev => false,
// Sysno::access => false,
// Sysno::pipe => false,
// Sysno::select => false,
// Sysno::sched_yield => false,
// Sysno::mremap => false,
// Sysno::msync => false,
// Sysno::mincore => false,
// Sysno::madvise => false,
// Sysno::shmget => false,
// Sysno::shmat => false,
// Sysno::shmctl => false,
// Sysno::dup => false,
// Sysno::dup2 => false,
// Sysno::pause => false,
// Sysno::nanosleep => false,
// Sysno::getitimer => false,
// Sysno::alarm => false,
// Sysno::setitimer => false,
// Sysno::getpid => false,
// Sysno::sendfile => false,
// Sysno::socket => false,
// Sysno::connect => false,
// Sysno::accept => false,
// Sysno::sendto => false,
// Sysno::recvfrom => false,
// Sysno::sendmsg => false,
// Sysno::recvmsg => false,
// Sysno::shutdown => false,
// Sysno::bind => false,
// Sysno::listen => false,
// Sysno::getsockname => false,
// Sysno::getpeername => false,
// Sysno::socketpair => false,
// Sysno::setsockopt => false,
// Sysno::getsockopt => false,
// Sysno::clone => false,
// Sysno::fork => false,
// Sysno::vfork => false,
// Sysno::execve => false,
// Sysno::exit => false,
// Sysno::wait4 => false,
// Sysno::kill => false,
// Sysno::uname => false,
// Sysno::semget => false,
// Sysno::semop => false,
// Sysno::semctl => false,
// Sysno::shmdt => false,
// Sysno::msgget => false,
// Sysno::msgsnd => false,
// Sysno::msgrcv => false,
// Sysno::msgctl => false,
// Sysno::fcntl => false,
// Sysno::flock => false,
// Sysno::fsync => false,
// Sysno::fdatasync => false,
// Sysno::truncate => false,
// Sysno::ftruncate => false,
// Sysno::getdents => false,
// Sysno::getcwd => false,
// Sysno::chdir => false,
// Sysno::fchdir => false,
// Sysno::rename => false,
// Sysno::mkdir => false,
// Sysno::rmdir => false,
// Sysno::creat => false,
// Sysno::link => false,
// Sysno::unlink => false,
// Sysno::symlink => false,
// Sysno::readlink => false,
// Sysno::chmod => false,
// Sysno::fchmod => false,
// Sysno::chown => false,
// Sysno::fchown => false,
// Sysno::lchown => false,
// Sysno::umask => false,
// Sysno::gettimeofday => false,
// Sysno::getrlimit => false,
// Sysno::getrusage => false,
// Sysno::sysinfo => false,
// Sysno::times => false,
// Sysno::ptrace => false,
// Sysno::getuid => false,
// Sysno::syslog => false,
// Sysno::getgid => false,
// Sysno::setuid => false,
// Sysno::setgid => false,
// Sysno::geteuid => false,
// Sysno::getegid => false,
// Sysno::setpgid => false,
// Sysno::getppid => false,
// Sysno::getpgrp => false,
// Sysno::setsid => false,
// Sysno::setreuid => false,
// Sysno::setregid => false,
// Sysno::getgroups => false,
// Sysno::setgroups => false,
// Sysno::setresuid => false,
// Sysno::getresuid => false,
// Sysno::setresgid => false,
// Sysno::getresgid => false,
// Sysno::getpgid => false,
// Sysno::setfsuid => false,
// Sysno::setfsgid => false,
// Sysno::getsid => false,
// Sysno::capget => false,
// Sysno::capset => false,
// Sysno::rt_sigpending => false,
// Sysno::rt_sigtimedwait => false,
// Sysno::rt_sigqueueinfo => false,
// Sysno::rt_sigsuspend => false,
// Sysno::sigaltstack => false,
// Sysno::utime => false,
// Sysno::mknod => false,
// Sysno::uselib => false,
// Sysno::personality => false,
// Sysno::ustat => false,
// Sysno::statfs => false,
// Sysno::fstatfs => false,
// Sysno::sysfs => false,
// Sysno::getpriority => false,
// Sysno::setpriority => false,
// Sysno::sched_setparam => false,
// Sysno::sched_getparam => false,
// Sysno::sched_setscheduler => false,
// Sysno::sched_getscheduler => false,
// Sysno::sched_get_priority_max => false,
// Sysno::sched_get_priority_min => false,
// Sysno::sched_rr_get_interval => false,
// Sysno::mlock => false,
// Sysno::munlock => false,
// Sysno::mlockall => false,
// Sysno::munlockall => false,
// Sysno::vhangup => false,
// Sysno::modify_ldt => false,
// Sysno::pivot_root => false,
// Sysno::_sysctl => false,
// Sysno::prctl => false,
// Sysno::arch_prctl => false,
// Sysno::adjtimex => false,
// Sysno::setrlimit => false,
// Sysno::chroot => false,
// Sysno::sync => false,
// Sysno::acct => false,
// Sysno::settimeofday => false,
// Sysno::mount => false,
// Sysno::umount2 => false,
// Sysno::swapon => false,
// Sysno::swapoff => false,
// Sysno::reboot => false,
// Sysno::sethostname => false,
// Sysno::setdomainname => false,
// Sysno::iopl => false,
// Sysno::ioperm => false,
// Sysno::create_module => false,
// Sysno::init_module => false,
// Sysno::delete_module => false,
// Sysno::get_kernel_syms => false,
// Sysno::query_module => false,
// Sysno::quotactl => false,
// Sysno::nfsservctl => false,
// Sysno::getpmsg => false,
// Sysno::putpmsg => false,
// Sysno::afs_syscall => false,
// Sysno::tuxcall => false,
// Sysno::security => false,
// Sysno::gettid => false,
// Sysno::readahead => false,
// Sysno::setxattr => false,
// Sysno::lsetxattr => false,
// Sysno::fsetxattr => false,
// Sysno::getxattr => false,
// Sysno::lgetxattr => false,
// Sysno::fgetxattr => false,
// Sysno::listxattr => false,
// Sysno::llistxattr => false,
// Sysno::flistxattr => false,
// Sysno::removexattr => false,
// Sysno::lremovexattr => false,
// Sysno::fremovexattr => false,
// Sysno::tkill => false,
// Sysno::time => false,
// Sysno::futex => false,
// Sysno::sched_setaffinity => false,
// Sysno::sched_getaffinity => false,
// Sysno::set_thread_area => false,
// Sysno::io_setup => false,
// Sysno::io_destroy => false,
// Sysno::io_getevents => false,
// Sysno::io_submit => false,
// Sysno::io_cancel => false,
// Sysno::get_thread_area => false,
// Sysno::lookup_dcookie => false,
// Sysno::epoll_create => false,
// Sysno::epoll_ctl_old => false,
// Sysno::epoll_wait_old => false,
// Sysno::remap_file_pages => false,
// Sysno::getdents64 => false,
// Sysno::set_tid_address => false,
// Sysno::restart_syscall => false,
// Sysno::semtimedop => false,
// Sysno::fadvise64 => false,
// Sysno::timer_create => false,
// Sysno::timer_settime => false,
// Sysno::timer_gettime => false,
// Sysno::timer_getoverrun => false,
// Sysno::timer_delete => false,
// Sysno::clock_settime => false,
// Sysno::clock_gettime => false,
// Sysno::clock_getres => false,
// Sysno::clock_nanosleep => false,
// Sysno::exit_group => true,
// Sysno::epoll_wait => false,
// Sysno::epoll_ctl => false,
// Sysno::tgkill => false,
// Sysno::utimes => false,
// Sysno::vserver => false,
// Sysno::mbind => false,
// Sysno::set_mempolicy => false,
// Sysno::get_mempolicy => false,
// Sysno::mq_open => false,
// Sysno::mq_unlink => false,
// Sysno::mq_timedsend => false,
// Sysno::mq_timedreceive => false,
// Sysno::mq_notify => false,
// Sysno::mq_getsetattr => false,
// Sysno::kexec_load => false,
// Sysno::waitid => false,
// Sysno::add_key => false,
// Sysno::request_key => false,
// Sysno::keyctl => false,
// Sysno::ioprio_set => false,
// Sysno::ioprio_get => false,
// Sysno::inotify_init => false,
// Sysno::inotify_add_watch => false,
// Sysno::inotify_rm_watch => false,
// Sysno::migrate_pages => false,
// Sysno::openat => false,
// Sysno::mkdirat => false,
// Sysno::mknodat => false,
// Sysno::fchownat => false,
// Sysno::futimesat => false,
// Sysno::newfstatat => false,
// Sysno::unlinkat => false,
// Sysno::renameat => false,
// Sysno::linkat => false,
// Sysno::symlinkat => false,
// Sysno::readlinkat => false,
// Sysno::fchmodat => false,
// Sysno::faccessat => false,
// Sysno::pselect6 => false,
// Sysno::ppoll => false,
// Sysno::unshare => false,
// Sysno::set_robust_list => false,
// Sysno::get_robust_list => false,
// Sysno::splice => false,
// Sysno::tee => false,
// Sysno::sync_file_range => false,
// Sysno::vmsplice => false,
// Sysno::move_pages => false,
// Sysno::utimensat => false,
// Sysno::epoll_pwait => false,
// Sysno::signalfd => false,
// Sysno::timerfd_create => false,
// Sysno::eventfd => false,
// Sysno::fallocate => false,
// Sysno::timerfd_settime => false,
// Sysno::timerfd_gettime => false,
// Sysno::accept4 => false,
// Sysno::signalfd4 => false,
// Sysno::eventfd2 => false,
// Sysno::epoll_create1 => false,
// Sysno::dup3 => false,
// Sysno::pipe2 => false,
// Sysno::inotify_init1 => false,
// Sysno::preadv => false,
// Sysno::pwritev => false,
// Sysno::rt_tgsigqueueinfo => false,
// Sysno::perf_event_open => false,
// Sysno::recvmmsg => false,
// Sysno::fanotify_init => false,
// Sysno::fanotify_mark => false,
// Sysno::prlimit64 => false,
// Sysno::name_to_handle_at => false,
// Sysno::open_by_handle_at => false,
// Sysno::clock_adjtime => false,
// Sysno::syncfs => false,
// Sysno::sendmmsg => false,
// Sysno::setns => false,
// Sysno::getcpu => false,
// Sysno::process_vm_readv => false,
// Sysno::process_vm_writev => false,
// Sysno::kcmp => false,
// Sysno::finit_module => false,
// Sysno::sched_setattr => false,
// Sysno::sched_getattr => false,
// Sysno::renameat2 => false,
// Sysno::seccomp => false,
// Sysno::getrandom => false,
// Sysno::memfd_create => false,
// Sysno::kexec_file_load => false,
// Sysno::bpf => false,
// Sysno::execveat => false,
// Sysno::userfaultfd => false,
// Sysno::membarrier => false,
// Sysno::mlock2 => false,
// Sysno::copy_file_range => false,
// Sysno::preadv2 => false,
// Sysno::pwritev2 => false,
// Sysno::pkey_mprotect => false,
// Sysno::pkey_alloc => false,
// Sysno::pkey_free => false,
// Sysno::statx => false,
// Sysno::io_pgetevents => false,
// Sysno::rseq => false,
// Sysno::pidfd_send_signal => false,
// Sysno::io_uring_setup => false,
// Sysno::io_uring_enter => false,
// Sysno::io_uring_register => false,
// Sysno::open_tree => false,
// Sysno::move_mount => false,
// Sysno::fsopen => false,
// Sysno::fsconfig => false,
// Sysno::fsmount => false,
// Sysno::fspick => false,
// Sysno::pidfd_open => false,
// Sysno::clone3 => false,
// Sysno::close_range => false,
// Sysno::openat2 => false,
// Sysno::pidfd_getfd => false,
// Sysno::faccessat2 => false,
// Sysno::process_madvise => false,
// Sysno::epoll_pwait2 => false,
// Sysno::mount_setattr => false,
// Sysno::quotactl_fd => false,
// Sysno::landlock_create_ruleset => false,
// Sysno::landlock_add_rule => false,
// Sysno::landlock_restrict_self => false,
// Sysno::memfd_secret => false,
// Sysno::process_mrelease => false,
// Sysno::futex_waitv => false,
// Sysno::set_mempolicy_home_node => false,
// Sysno::cachestat => false,
// Sysno::fchmodat2 => false,
// Sysno::map_shadow_stack => false,
// Sysno::futex_wake => false,
// Sysno::futex_wait => false,
// Sysno::futex_requeue => false,
// Sysno::statmount => false,
// Sysno::listmount => false,
// Sysno::lsm_get_self_attr => false,
// Sysno::lsm_set_self_attr => false,
// Sysno::lsm_list_modules => false,
// }
}
+404
View File
@@ -0,0 +1,404 @@
use bincode::{Decode, Encode};
/// file descriptor
type Fd = usize;
/// Memory buffer pointer
type Ptr = usize;
/// Length
type Len = usize;
/// The `Syscall` enum represents a system call with its arguments.
///
/// Each variant corresponds to a specific system call and holds the
/// arguments as a tuple of `usize` values.
#[derive(Debug, PartialEq, Eq, Encode, Decode)]
pub enum Syscall {
Read(Fd, Ptr, Len),
Write(Fd, Ptr, Len),
Open(Ptr, usize, usize),
Close(Fd),
Stat(Ptr, Ptr),
Fstat(Fd, Ptr),
Lstat(Ptr, Ptr),
Poll(Ptr, usize, usize),
Lseek(Fd, usize, usize),
Mmap(Ptr, Len, usize, usize, Fd, usize),
Mprotect(Ptr, Len, usize),
Munmap(Ptr, Len),
Brk(Ptr),
RtSigaction(usize, Ptr, Ptr, usize),
RtSigprocmask(usize, Ptr, Ptr, usize),
RtSigreturn,
Ioctl(Fd, usize, Ptr),
Pread64(Fd, Ptr, Len, usize),
Pwrite64(Fd, Ptr, Len, usize),
Readv(Fd, Ptr, usize),
Writev(Fd, Ptr, usize),
Access(Ptr, usize),
Pipe(Ptr),
Select(usize, Ptr, Ptr, Ptr, Ptr),
SchedYield,
Mremap(Ptr, Len, Len, usize, Ptr),
Msync(Ptr, Len, usize),
Mincore(Ptr, Len, Ptr),
Madvise(Ptr, Len, usize),
Shmget(usize, Len, usize),
Shmat(usize, Ptr, usize),
Shmctl(usize, usize, Ptr),
Dup(Fd),
Dup2(Fd, Fd),
Pause,
Nanosleep(Ptr, Ptr),
Getitimer(usize, Ptr),
Alarm(usize),
Setitimer(usize, Ptr, Ptr),
Getpid,
Sendfile(Fd, Fd, Ptr, Len),
Socket(usize, usize, usize),
Connect(Fd, Ptr, usize),
Accept(Fd, Ptr, Ptr),
Sendto(Fd, Ptr, Len, usize, Ptr, usize),
Recvfrom(Fd, Ptr, Len, usize, Ptr, Ptr),
Sendmsg(Fd, Ptr, usize),
Recvmsg(Fd, Ptr, usize),
Shutdown(Fd, usize),
Bind(Fd, Ptr, usize),
Listen(Fd, usize),
Getsockname(Fd, Ptr, Ptr),
Getpeername(Fd, Ptr, Ptr),
Socketpair(usize, usize, usize, Ptr),
Setsockopt(Fd, usize, usize, Ptr, usize),
Getsockopt(Fd, usize, usize, Ptr, Ptr),
Clone(usize, Ptr, Ptr, Ptr, Ptr),
Fork,
Vfork,
Execve(Ptr, Ptr, Ptr),
Exit(usize),
Wait4(usize, Ptr, usize, Ptr),
Kill(usize, usize),
Uname(Ptr),
Semget(usize, usize, usize),
Semop(usize, Ptr, usize),
Semctl(usize, usize, usize, usize),
Shmdt(Ptr),
Msgget(usize, usize),
Msgsnd(usize, Ptr, Len, usize),
Msgrcv(usize, Ptr, Len, usize, usize),
Msgctl(usize, usize, Ptr),
Fcntl(Fd, usize, usize),
Flock(Fd, usize),
Fsync(Fd),
Fdatasync(Fd),
Truncate(Ptr, Len),
Ftruncate(Fd, Len),
Getdents(Fd, Ptr, Len),
Getcwd(Ptr, Len),
Chdir(Ptr),
Fchdir(Fd),
Rename(Ptr, Ptr),
Mkdir(Ptr, usize),
Rmdir(Ptr),
Creat(Ptr, usize),
Link(Ptr, Ptr),
Unlink(Ptr),
Symlink(Ptr, Ptr),
Readlink(Ptr, Ptr, Len),
Chmod(Ptr, usize),
Fchmod(Fd, usize),
Chown(Ptr, usize, usize),
Fchown(Fd, usize, usize),
Lchown(Ptr, usize, usize),
Umask(usize),
Gettimeofday(Ptr, Ptr),
Getrlimit(usize, Ptr),
Getrusage(usize, Ptr),
Sysinfo(Ptr),
Times(Ptr),
Ptrace(usize, usize, Ptr, Ptr),
Getuid,
Syslog(usize, Ptr, Len),
Getgid,
Setuid(usize),
Setgid(usize),
Geteuid,
Getegid,
Setpgid(usize, usize),
Getppid,
Getpgrp,
Setsid,
Setreuid(usize, usize),
Setregid(usize, usize),
Getgroups(usize, Ptr),
Setgroups(usize, Ptr),
Setresuid(usize, usize, usize),
Getresuid(Ptr, Ptr, Ptr),
Setresgid(usize, usize, usize),
Getresgid(Ptr, Ptr, Ptr),
Getpgid(usize),
Setfsuid(usize),
Setfsgid(usize),
Getsid(usize),
Capget(usize, usize),
Capset(usize, usize),
RtSigpending(Ptr, usize),
RtSigtimedwait(Ptr, Ptr, Ptr, usize),
RtSigqueueinfo(usize, usize, Ptr),
RtSigsuspend(Ptr, usize),
Sigaltstack(Ptr, Ptr),
Utime(Ptr, Ptr),
Mknod(Ptr, usize, usize),
Uselib(Ptr),
Personality(usize),
Ustat(usize, Ptr),
Statfs(Ptr, Ptr),
Fstatfs(Fd, Ptr),
Sysfs(usize, usize, usize),
Getpriority(usize, usize),
Setpriority(usize, usize, usize),
SchedSetparam(usize, Ptr),
SchedGetparam(usize, Ptr),
SchedSetscheduler(usize, usize, Ptr),
SchedGetscheduler(usize),
SchedGetPriorityMax(usize),
SchedGetPriorityMin(usize),
SchedRrGetInterval(usize, Ptr),
Mlock(Ptr, Len),
Munlock(Ptr, Len),
Mlockall(usize),
Munlockall,
Vhangup,
ModifyLdt(usize, Ptr, usize),
PivotRoot(Ptr, Ptr),
_Sysctl(Ptr),
Prctl(usize, usize, usize, usize, usize),
ArchPrctl(usize, Ptr),
Adjtimex(Ptr),
Setrlimit(usize, Ptr),
Chroot(Ptr),
Sync,
Acct(Ptr),
Settimeofday(Ptr, Ptr),
Mount(Ptr, Ptr, Ptr, usize, Ptr),
Umount2(Ptr, usize),
Swapon(Ptr, usize),
Swapoff(Ptr),
Reboot(usize, usize, usize, Ptr),
Sethostname(Ptr, Len),
Setdomainname(Ptr, Len),
Iopl(usize),
Ioperm(usize, usize, usize),
CreateModule(Ptr, Len),
InitModule(Ptr, Len, Ptr),
DeleteModule(Ptr, usize),
GetKernelSyms(Ptr),
QueryModule(Ptr, usize, Ptr, usize, Ptr),
Quotactl(usize, Ptr, usize, Ptr),
Nfsservctl(usize, Ptr, Ptr),
Getpmsg,
Putpmsg,
AfsSyscall,
Tuxcall,
Security,
Gettid,
Readahead(Fd, usize, Len),
Setxattr(Ptr, Ptr, Ptr, Len, usize),
Lsetxattr(Ptr, Ptr, Ptr, Len, usize),
Fsetxattr(Fd, Ptr, Ptr, Len, usize),
Getxattr(Ptr, Ptr, Ptr, Len),
Lgetxattr(Ptr, Ptr, Ptr, Len),
Fgetxattr(Fd, Ptr, Ptr, Len),
Listxattr(Ptr, Ptr, Len),
Llistxattr(Ptr, Ptr, Len),
Flistxattr(Fd, Ptr, Len),
Removexattr(Ptr, Ptr),
Lremovexattr(Ptr, Ptr),
Fremovexattr(Fd, Ptr),
Tkill(usize, usize),
Time(Ptr),
Futex(Ptr, usize, usize, Ptr, Ptr, usize),
SchedSetaffinity(usize, usize, Ptr),
SchedGetaffinity(usize, usize, Ptr),
SetThreadArea(Ptr),
IoSetup(usize, Ptr),
IoDestroy(usize),
IoGetevents(usize, usize, usize, Ptr, Ptr),
IoSubmit(usize, usize, Ptr),
IoCancel(usize, Ptr, Ptr),
GetThreadArea(Ptr),
LookupDcookie(usize, Ptr, usize, usize),
EpollCreate(usize),
EpollCtlOld,
EpollWaitOld,
RemapFilePages(Ptr, Len, usize, usize, usize),
Getdents64(Fd, Ptr, Len),
SetTidAddress(Ptr),
RestartSyscall,
Semtimedop(usize, Ptr, usize, Ptr),
Fadvise64(Fd, usize, Len, usize),
TimerCreate(usize, Ptr, Ptr),
TimerSettime(usize, usize, Ptr, Ptr),
TimerGettime(usize, Ptr),
TimerGetoverrun(usize),
TimerDelete(usize),
ClockSettime(usize, Ptr),
ClockGettime(usize, Ptr),
ClockGetres(usize, Ptr),
ClockNanosleep(usize, usize, Ptr, Ptr),
ExitGroup(usize),
EpollWait(Fd, Ptr, usize, usize),
EpollCtl(Fd, usize, Fd, Ptr),
Tgkill(usize, usize, usize),
Utimes(Ptr, Ptr),
Vserver,
Mbind(Ptr, usize, usize, Ptr, usize, usize),
SetMempolicy(usize, Ptr, usize),
GetMempolicy(Ptr, Ptr, usize, Ptr, usize),
MqOpen(Ptr, usize, usize, Ptr),
MqUnlink(Ptr),
MqTimedsend(usize, Ptr, Len, usize, Ptr),
MqTimedreceive(usize, Ptr, Len, usize, Ptr),
MqNotify(usize, Ptr),
MqGetsetattr(usize, Ptr, Ptr),
KexecLoad(usize, usize, Ptr, usize),
Waitid(usize, usize, Ptr, usize, Ptr),
AddKey(Ptr, Ptr, Ptr, Len),
RequestKey(Ptr, Ptr, Ptr),
Keyctl(usize, usize, usize, usize, usize),
IoprioSet(usize, usize, usize),
IoprioGet(usize, usize),
InotifyInit,
InotifyAddWatch(Fd, Ptr, usize),
InotifyRmWatch(Fd, usize),
MigratePages(usize, Len, Ptr, Ptr),
Openat(Fd, Ptr, usize, usize),
Mkdirat(Fd, Ptr, usize),
Mknodat(Fd, Ptr, usize, usize),
Fchownat(Fd, Ptr, usize, usize, usize),
Futimesat(Fd, Ptr, Ptr),
Newfstatat(Fd, Ptr, Ptr, usize),
Unlinkat(Fd, Ptr, usize),
Renameat(Fd, Ptr, Fd, Ptr),
Linkat(Fd, Ptr, Fd, Ptr, usize),
Symlinkat(Ptr, Fd, Ptr),
Readlinkat(Fd, Ptr, Ptr, Len),
Fchmodat(Fd, Ptr, usize),
Faccessat(Fd, Ptr, usize),
Pselect6(usize, Ptr, Ptr, Ptr, Ptr, Ptr),
Ppoll(Ptr, usize, Ptr, Ptr, usize),
Unshare(usize),
SetRobustList(Ptr, Len),
GetRobustList(usize, Ptr, Ptr),
Splice(Fd, Ptr, Fd, Ptr, Len, usize),
Tee(Fd, Fd, Len, usize),
SyncFileRange(Fd, usize, usize, usize),
Vmsplice(Fd, Ptr, usize, usize),
MovePages(usize, Len, Ptr, Ptr, Ptr, usize),
Utimensat(Fd, Ptr, Ptr, usize),
EpollPwait(Fd, Ptr, usize, usize, Ptr, usize),
Signalfd(Fd, Ptr, usize),
TimerfdCreate(usize, usize),
Eventfd(usize, usize),
Fallocate(Fd, usize, usize, usize),
TimerfdSettime(Fd, usize, Ptr, Ptr),
TimerfdGettime(Fd, Ptr),
Accept4(Fd, Ptr, Ptr, usize),
Signalfd4(Fd, Ptr, usize, usize),
Eventfd2(usize, usize),
EpollCreate1(usize),
Dup3(Fd, Fd, usize),
Pipe2(Ptr, usize),
InotifyInit1(usize),
Preadv(Fd, Ptr, usize, usize),
Pwritev(Fd, Ptr, usize, usize),
RtTgsigqueueinfo(usize, usize, usize, Ptr),
PerfEventOpen(Ptr, usize, usize, Fd, usize),
Recvmmsg(Fd, Ptr, usize, usize, Ptr),
FanotifyInit(usize, usize),
FanotifyMark(usize, usize, usize, Fd, Ptr),
Prlimit64(usize, usize, Ptr, Ptr),
NameToHandleAt(Fd, Ptr, Ptr, Ptr, usize),
OpenByHandleAt(Fd, Ptr, usize),
ClockAdjtime(usize, Ptr),
Syncfs(Fd),
Sendmmsg(Fd, Ptr, usize, usize),
Setns(Fd, usize),
Getcpu(Ptr, Ptr, Ptr),
ProcessVmReadv(usize, Ptr, usize, Ptr, usize, usize),
ProcessVmWritev(usize, Ptr, usize, Ptr, usize, usize),
Kcmp(usize, usize, usize, usize, usize),
FinitModule(Fd, Ptr, usize),
SchedSetattr(usize, Ptr, usize),
SchedGetattr(usize, Ptr, usize, usize),
Renameat2(Fd, Ptr, Fd, Ptr, usize),
Seccomp(usize, usize, Ptr),
Getrandom(Ptr, Len, usize),
MemfdCreate(Ptr, usize),
KexecFileLoad(Fd, Fd, usize, Ptr, usize),
Bpf(usize, Ptr, usize),
Execveat(Fd, Ptr, Ptr, Ptr, usize),
Userfaultfd(usize),
Membarrier(usize, usize),
Mlock2(Ptr, Len, usize),
CopyFileRange(Fd, Ptr, Fd, Ptr, Len, usize),
Preadv2(Fd, Ptr, usize, usize, usize),
Pwritev2(Fd, Ptr, usize, usize, usize),
PkeyMprotect(Ptr, Len, usize, usize),
PkeyAlloc(usize, usize),
PkeyFree(usize),
Statx(Fd, Ptr, usize, usize, Ptr),
IoPgetevents(usize, usize, usize, Ptr, Ptr, usize),
Rseq(Ptr, Len, usize, usize),
PidfdSendSignal(Fd, usize, Ptr, usize),
IoUringSetup(usize, Ptr),
IoUringEnter(Fd, usize, usize, usize, Ptr),
IoUringRegister(Fd, usize, Ptr, usize),
OpenTree(Fd, Ptr, usize),
MoveMount(Fd, Ptr, Fd, Ptr, usize),
Fsopen(Ptr, usize, usize),
Fsconfig(Fd, usize, Ptr, Ptr, usize),
Fsmount(Fd, usize, usize),
Fspick(Fd, Ptr, usize),
PidfdOpen(usize, usize),
Clone3(Ptr, usize),
CloseRange(Fd, Fd, usize),
Openat2(Fd, Ptr, Ptr, usize),
PidfdGetfd(Fd, Fd, usize),
Faccessat2(Fd, Ptr, usize, usize),
ProcessMadvise(Fd, Ptr, Len, usize, usize),
EpollPwait2(Fd, Ptr, usize, Ptr, usize),
MountSetattr(Fd, Ptr, usize, Ptr),
QuotactlFd(Fd, usize, usize, Ptr),
LandlockCreateRuleset(Ptr, Len, usize),
LandlockAddRule(Fd, usize, Ptr, usize),
LandlockRestrictSelf(Fd, usize),
MemfdSecret(usize),
ProcessMrelease(Fd, usize),
FutexWaitv(Ptr, usize, usize),
SetMempolicyHomeNode(usize, Ptr, usize),
Cachestat(Fd, usize, usize, usize, Ptr),
Fchmodat2(Fd, Ptr, usize, usize),
MapShadowStack(usize, Ptr),
FutexWake(Ptr, usize, usize),
FutexWait(Ptr, usize, usize),
FutexRequeue(Ptr, usize, usize, usize),
Statmount(Fd, Ptr, usize),
Listmount(Ptr, Ptr, usize),
LsmGetSelfAttr(usize, Ptr, Ptr, Len),
LsmSetSelfAttr(usize, Ptr, usize),
LsmListModules(Ptr, usize),
Unknown(usize, [usize; 6]),
}
impl Syscall {
pub fn encode(&self) -> Vec<u8> {
bincode::encode_to_vec(self, crate::CONFIG).unwrap()
}
pub fn decode(bytes: &[u8]) -> Option<Self> {
if let Ok((decoded, _)) = bincode::decode_from_slice(&bytes[..], crate::CONFIG) {
Some(decoded)
} else {
None
}
}
}
+380
View File
@@ -0,0 +1,380 @@
///https://docs.rs/syscalls/latest/syscalls/x86_64/enum.Sysno.html
#[non_exhaustive]
#[repr(i32)]
#[derive(Debug, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Sysno {
read = 0,
write = 1,
open = 2,
close = 3,
stat = 4,
fstat = 5,
lstat = 6,
poll = 7,
lseek = 8,
mmap = 9,
mprotect = 10,
munmap = 11,
brk = 12,
rt_sigaction = 13,
rt_sigprocmask = 14,
rt_sigreturn = 15,
ioctl = 16,
pread64 = 17,
pwrite64 = 18,
readv = 19,
writev = 20,
access = 21,
pipe = 22,
select = 23,
sched_yield = 24,
mremap = 25,
msync = 26,
mincore = 27,
madvise = 28,
shmget = 29,
shmat = 30,
shmctl = 31,
dup = 32,
dup2 = 33,
pause = 34,
nanosleep = 35,
getitimer = 36,
alarm = 37,
setitimer = 38,
getpid = 39,
sendfile = 40,
socket = 41,
connect = 42,
accept = 43,
sendto = 44,
recvfrom = 45,
sendmsg = 46,
recvmsg = 47,
shutdown = 48,
bind = 49,
listen = 50,
getsockname = 51,
getpeername = 52,
socketpair = 53,
setsockopt = 54,
getsockopt = 55,
clone = 56,
fork = 57,
vfork = 58,
execve = 59,
exit = 60,
wait4 = 61,
kill = 62,
uname = 63,
semget = 64,
semop = 65,
semctl = 66,
shmdt = 67,
msgget = 68,
msgsnd = 69,
msgrcv = 70,
msgctl = 71,
fcntl = 72,
flock = 73,
fsync = 74,
fdatasync = 75,
truncate = 76,
ftruncate = 77,
getdents = 78,
getcwd = 79,
chdir = 80,
fchdir = 81,
rename = 82,
mkdir = 83,
rmdir = 84,
creat = 85,
link = 86,
unlink = 87,
symlink = 88,
readlink = 89,
chmod = 90,
fchmod = 91,
chown = 92,
fchown = 93,
lchown = 94,
umask = 95,
gettimeofday = 96,
getrlimit = 97,
getrusage = 98,
sysinfo = 99,
times = 100,
ptrace = 101,
getuid = 102,
syslog = 103,
getgid = 104,
setuid = 105,
setgid = 106,
geteuid = 107,
getegid = 108,
setpgid = 109,
getppid = 110,
getpgrp = 111,
setsid = 112,
setreuid = 113,
setregid = 114,
getgroups = 115,
setgroups = 116,
setresuid = 117,
getresuid = 118,
setresgid = 119,
getresgid = 120,
getpgid = 121,
setfsuid = 122,
setfsgid = 123,
getsid = 124,
capget = 125,
capset = 126,
rt_sigpending = 127,
rt_sigtimedwait = 128,
rt_sigqueueinfo = 129,
rt_sigsuspend = 130,
sigaltstack = 131,
utime = 132,
mknod = 133,
uselib = 134,
personality = 135,
ustat = 136,
statfs = 137,
fstatfs = 138,
sysfs = 139,
getpriority = 140,
setpriority = 141,
sched_setparam = 142,
sched_getparam = 143,
sched_setscheduler = 144,
sched_getscheduler = 145,
sched_get_priority_max = 146,
sched_get_priority_min = 147,
sched_rr_get_interval = 148,
mlock = 149,
munlock = 150,
mlockall = 151,
munlockall = 152,
vhangup = 153,
modify_ldt = 154,
pivot_root = 155,
_sysctl = 156,
prctl = 157,
arch_prctl = 158,
adjtimex = 159,
setrlimit = 160,
chroot = 161,
sync = 162,
acct = 163,
settimeofday = 164,
mount = 165,
umount2 = 166,
swapon = 167,
swapoff = 168,
reboot = 169,
sethostname = 170,
setdomainname = 171,
iopl = 172,
ioperm = 173,
create_module = 174,
init_module = 175,
delete_module = 176,
get_kernel_syms = 177,
query_module = 178,
quotactl = 179,
nfsservctl = 180,
getpmsg = 181,
putpmsg = 182,
afs_syscall = 183,
tuxcall = 184,
security = 185,
gettid = 186,
readahead = 187,
setxattr = 188,
lsetxattr = 189,
fsetxattr = 190,
getxattr = 191,
lgetxattr = 192,
fgetxattr = 193,
listxattr = 194,
llistxattr = 195,
flistxattr = 196,
removexattr = 197,
lremovexattr = 198,
fremovexattr = 199,
tkill = 200,
time = 201,
futex = 202,
sched_setaffinity = 203,
sched_getaffinity = 204,
set_thread_area = 205,
io_setup = 206,
io_destroy = 207,
io_getevents = 208,
io_submit = 209,
io_cancel = 210,
get_thread_area = 211,
lookup_dcookie = 212,
epoll_create = 213,
epoll_ctl_old = 214,
epoll_wait_old = 215,
remap_file_pages = 216,
getdents64 = 217,
set_tid_address = 218,
restart_syscall = 219,
semtimedop = 220,
fadvise64 = 221,
timer_create = 222,
timer_settime = 223,
timer_gettime = 224,
timer_getoverrun = 225,
timer_delete = 226,
clock_settime = 227,
clock_gettime = 228,
clock_getres = 229,
clock_nanosleep = 230,
exit_group = 231,
epoll_wait = 232,
epoll_ctl = 233,
tgkill = 234,
utimes = 235,
vserver = 236,
mbind = 237,
set_mempolicy = 238,
get_mempolicy = 239,
mq_open = 240,
mq_unlink = 241,
mq_timedsend = 242,
mq_timedreceive = 243,
mq_notify = 244,
mq_getsetattr = 245,
kexec_load = 246,
waitid = 247,
add_key = 248,
request_key = 249,
keyctl = 250,
ioprio_set = 251,
ioprio_get = 252,
inotify_init = 253,
inotify_add_watch = 254,
inotify_rm_watch = 255,
migrate_pages = 256,
openat = 257,
mkdirat = 258,
mknodat = 259,
fchownat = 260,
futimesat = 261,
newfstatat = 262,
unlinkat = 263,
renameat = 264,
linkat = 265,
symlinkat = 266,
readlinkat = 267,
fchmodat = 268,
faccessat = 269,
pselect6 = 270,
ppoll = 271,
unshare = 272,
set_robust_list = 273,
get_robust_list = 274,
splice = 275,
tee = 276,
sync_file_range = 277,
vmsplice = 278,
move_pages = 279,
utimensat = 280,
epoll_pwait = 281,
signalfd = 282,
timerfd_create = 283,
eventfd = 284,
fallocate = 285,
timerfd_settime = 286,
timerfd_gettime = 287,
accept4 = 288,
signalfd4 = 289,
eventfd2 = 290,
epoll_create1 = 291,
dup3 = 292,
pipe2 = 293,
inotify_init1 = 294,
preadv = 295,
pwritev = 296,
rt_tgsigqueueinfo = 297,
perf_event_open = 298,
recvmmsg = 299,
fanotify_init = 300,
fanotify_mark = 301,
prlimit64 = 302,
name_to_handle_at = 303,
open_by_handle_at = 304,
clock_adjtime = 305,
syncfs = 306,
sendmmsg = 307,
setns = 308,
getcpu = 309,
process_vm_readv = 310,
process_vm_writev = 311,
kcmp = 312,
finit_module = 313,
sched_setattr = 314,
sched_getattr = 315,
renameat2 = 316,
seccomp = 317,
getrandom = 318,
memfd_create = 319,
kexec_file_load = 320,
bpf = 321,
execveat = 322,
userfaultfd = 323,
membarrier = 324,
mlock2 = 325,
copy_file_range = 326,
preadv2 = 327,
pwritev2 = 328,
pkey_mprotect = 329,
pkey_alloc = 330,
pkey_free = 331,
statx = 332,
io_pgetevents = 333,
rseq = 334,
pidfd_send_signal = 424,
io_uring_setup = 425,
io_uring_enter = 426,
io_uring_register = 427,
open_tree = 428,
move_mount = 429,
fsopen = 430,
fsconfig = 431,
fsmount = 432,
fspick = 433,
pidfd_open = 434,
clone3 = 435,
close_range = 436,
openat2 = 437,
pidfd_getfd = 438,
faccessat2 = 439,
process_madvise = 440,
epoll_pwait2 = 441,
mount_setattr = 442,
quotactl_fd = 443,
landlock_create_ruleset = 444,
landlock_add_rule = 445,
landlock_restrict_self = 446,
memfd_secret = 447,
process_mrelease = 448,
futex_waitv = 449,
set_mempolicy_home_node = 450,
cachestat = 451,
fchmodat2 = 452,
map_shadow_stack = 453,
futex_wake = 454,
futex_wait = 455,
futex_requeue = 456,
statmount = 457,
listmount = 458,
lsm_get_self_attr = 459,
lsm_set_self_attr = 460,
lsm_list_modules = 461,
}