mirror of
https://github.com/Astatin3/syscall-stream-rs.git
synced 2026-06-09 00:18:01 -06:00
Kinda get network working
This commit is contained in:
@@ -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),
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
// }
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
}
|
||||
Reference in New Issue
Block a user