Work on reading buffers.

This commit is contained in:
Michael Mikovsky
2025-08-18 16:45:17 -06:00
parent 856d7e467f
commit 59792420b5
18 changed files with 4958 additions and 2819 deletions
+9
View File
@@ -5,3 +5,12 @@ edition = "2024"
[dependencies]
bincode = "2.0.1"
# kernel = "6.17"
# kernel = "1.0.0"
libc = "0.2.175"
nix = "0.30.1"
syscaller = "0.2.2"
# [build-dependencies]
# bindgen = "0.72.0"
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
// #[cfg(target_os = "linux")]
// use nix::sys::ptrace;
// #[cfg(target_os = "linux")]
// use nix::unistd::Pid;
// #[cfg(target_os = "linux")]
// fn read_buffer_with_ptrace(
// pid: i32,
// addr: usize,
// count: usize,
// ) -> Result<Vec<u8>, Box<dyn std::error::Error>> {
// let pid = Pid::from_raw(pid);
// let mut buffer = Vec::with_capacity(count);
// // ptrace reads in word-sized chunks (usually 8 bytes on 64-bit systems)
// let word_size = std::mem::size_of::<usize>();
// let mut current_addr = addr;
// let mut bytes_read = 0;
// while bytes_read < count {
// let word = ptrace::read(pid, current_addr as ptrace::AddressType)?;
// let word_bytes = word.to_ne_bytes();
// let bytes_to_copy = std::cmp::min(word_size, count - bytes_read);
// buffer.extend_from_slice(&word_bytes[..bytes_to_copy]);
// current_addr += word_size;
// bytes_read += bytes_to_copy;
// }
// buffer.truncate(count);
// Ok(buffer)
// }
+85 -2
View File
@@ -1,20 +1,103 @@
mod create_syscall;
mod kern_buffers;
mod proxy_list;
mod syscall;
mod syscall_exec;
mod syscall_num;
mod types;
const CONFIG: bincode::config::Configuration = bincode::config::standard();
use std::{
collections::HashMap,
fmt::Debug,
marker::PhantomData,
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_exec::execute_syscall;
pub use syscall_num::Sysno;
pub use types::*;
// Type aliases for pointers to improve readability.
// pub type Ptr<_> = libc::c_long;
// pub type ConstPtr<_> = libc::c_long;
// pub type Ptr<T> = T;
// pub type ConstPtr<T> = T;
// Placeholder structs for kernel-specific types not present in libc.
// These are defined as opaque types for correct type checking in the enum.
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct AioContext;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Iocb;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct IoEvent;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct IoUringParams;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Mmsghdr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct GetcpuCache;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct RobustListHead;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct FutexWaitv;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct KexecSegment;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct CapUserHeaderT;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct CapUserDataT;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Rlimit64;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct FileHandle;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct PerfEventAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct SchedAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct CloneArgs;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct BpfAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Statx;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct Rseq;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct OpenHow;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct MountAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct LandlockRulesetAttr;
// #[repr(C)]
// #[derive(Debug, Clone, Copy)]
// pub struct LandlockRule;
#[derive(Debug, PartialEq, Eq, Encode, Decode)]
pub enum Message {
File diff suppressed because it is too large Load Diff
+1667 -366
View File
File diff suppressed because it is too large Load Diff
View File
+661
View File
@@ -0,0 +1,661 @@
use crate::Syscall;
use syscaller::{syscall0, syscall1, syscall2, syscall3, syscall4, syscall5, syscall6};
// fn syscall0(number: isize) -> isize {
// unsafe { syscaller::syscall0(number as usize) }
// }
// fn syscall1(number: isize, arg0: isize) -> isize {
// unsafe { syscaller::syscall1(number as usize, arg0 as usize) }
// }
// fn syscall2(number: isize, arg0: isize, arg1: isize) -> isize {
// unsafe { syscaller::syscall2(number as usize, arg0 as usize, arg1 as usize) }
// }
// fn syscall3(number: isize, arg0: isize, arg1: isize, arg2: isize) -> isize {
// unsafe { syscaller::syscall3(number as usize, arg0 as usize, arg1 as usize, arg2 as usize) }
// }
// fn syscall4(number: isize, arg0: isize, arg1: isize, arg2: isize, arg3: isize) -> isize {
// unsafe {
// syscaller::syscall4(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// )
// }
// }
// fn syscall5(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall5(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// )
// }
// }
// fn syscall6(
// number: isize,
// arg0: isize,
// arg1: isize,
// arg2: isize,
// arg3: isize,
// arg4: isize,
// arg5: isize,
// ) -> isize {
// unsafe {
// syscaller::syscall6(
// number as usize,
// arg0 as usize,
// arg1 as usize,
// arg2 as usize,
// arg3 as usize,
// arg4 as usize,
// arg5 as usize,
// )
// }
// }
use libc::{c_long, c_ulong};
// The Syscall enum and type aliases from the previous response are assumed to be present here.
#[allow(unused_unsafe)]
pub fn execute_syscall(syscall_obj: Syscall) -> isize {
todo!();
// match syscall_obj {
// Syscall::Read(arg0, arg1, arg2) => unsafe { syscall3(libc::SYS_read, arg0, arg1, arg2) },
// Syscall::Write(arg0, arg1, arg2) => unsafe { syscall3(1, arg0, arg1, arg2) },
// Syscall::Open(arg0, arg1, arg2) => unsafe { syscall3(2, arg0, arg1, arg2) },
// Syscall::Close(arg0) => unsafe { syscall1(3, arg0) },
// Syscall::Stat(arg0, arg1) => unsafe { syscall2(4, arg0, arg1) },
// Syscall::Fstat(arg0, arg1) => unsafe { syscall2(5, arg0, arg1) },
// Syscall::Lstat(arg0, arg1) => unsafe { syscall2(6, arg0, arg1) },
// Syscall::Poll(arg0, arg1, arg2) => unsafe { syscall3(7, arg0, arg1, arg2) },
// Syscall::Lseek(arg0, arg1, arg2) => unsafe { syscall3(8, arg0, arg1, arg2) },
// Syscall::Mmap(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(9, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Mprotect(arg0, arg1, arg2) => unsafe { syscall3(10, arg0, arg1, arg2) },
// Syscall::Munmap(arg0, arg1) => unsafe { syscall2(11, arg0, arg1) },
// Syscall::Brk(arg0) => unsafe { syscall1(12, arg0) },
// Syscall::RtSigaction(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(13, arg0, arg1, arg2, arg3)
// },
// Syscall::RtSigprocmask(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(14, arg0, arg1, arg2, arg3)
// },
// Syscall::RtSigreturn => unsafe { syscall0(15) },
// Syscall::Ioctl(arg0, arg1, arg2) => unsafe { syscall3(16, arg0, arg1, arg2) },
// Syscall::Pread64(arg0, arg1, arg2, arg3) => unsafe { syscall4(17, arg0, arg1, arg2, arg3) },
// Syscall::Pwrite64(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(18, arg0, arg1, arg2, arg3)
// },
// Syscall::Readv(arg0, arg1, arg2) => unsafe { syscall3(19, arg0, arg1, arg2) },
// Syscall::Writev(arg0, arg1, arg2) => unsafe { syscall3(20, arg0, arg1, arg2) },
// Syscall::Access(arg0, arg1) => unsafe { syscall2(21, arg0, arg1) },
// Syscall::Pipe(arg0) => unsafe { syscall1(22, arg0) },
// Syscall::Select(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(23, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::SchedYield => unsafe { syscall0(24) },
// Syscall::Mremap(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(25, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Msync(arg0, arg1, arg2) => unsafe { syscall3(26, arg0, arg1, arg2) },
// Syscall::Mincore(arg0, arg1, arg2) => unsafe { syscall3(27, arg0, arg1, arg2) },
// Syscall::Madvise(arg0, arg1, arg2) => unsafe { syscall3(28, arg0, arg1, arg2) },
// Syscall::Shmget(arg0, arg1, arg2) => unsafe { syscall3(29, arg0, arg1, arg2) },
// Syscall::Shmat(arg0, arg1, arg2) => unsafe { syscall3(30, arg0, arg1, arg2) },
// Syscall::Shmctl(arg0, arg1, arg2) => unsafe { syscall3(31, arg0, arg1, arg2) },
// Syscall::Dup(arg0) => unsafe { syscall1(32, arg0) },
// Syscall::Dup2(arg0, arg1) => unsafe { syscall2(33, arg0, arg1) },
// Syscall::Pause => unsafe { syscall0(34) },
// Syscall::Nanosleep(arg0, arg1) => unsafe { syscall2(35, arg0, arg1) },
// Syscall::Getitimer(arg0, arg1) => unsafe { syscall2(36, arg0, arg1) },
// Syscall::Alarm(arg0) => unsafe { syscall1(37, arg0) },
// Syscall::Setitimer(arg0, arg1, arg2) => unsafe { syscall3(38, arg0, arg1, arg2) },
// Syscall::Getpid => unsafe { syscall0(39) },
// Syscall::Sendfile(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(40, arg0, arg1, arg2, arg3)
// },
// Syscall::Socket(arg0, arg1, arg2) => unsafe { syscall3(41, arg0, arg1, arg2) },
// Syscall::Connect(arg0, arg1, arg2) => unsafe { syscall3(42, arg0, arg1, arg2) },
// Syscall::Accept(arg0, arg1, arg2) => unsafe { syscall3(43, arg0, arg1, arg2) },
// Syscall::Sendto(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(44, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Recvfrom(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(45, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Sendmsg(arg0, arg1, arg2) => unsafe { syscall3(46, arg0, arg1, arg2) },
// Syscall::Recvmsg(arg0, arg1, arg2) => unsafe { syscall3(47, arg0, arg1, arg2) },
// Syscall::Shutdown(arg0, arg1) => unsafe { syscall2(48, arg0, arg1) },
// Syscall::Bind(arg0, arg1, arg2) => unsafe { syscall3(49, arg0, arg1, arg2) },
// Syscall::Listen(arg0, arg1) => unsafe { syscall2(50, arg0, arg1) },
// Syscall::Getsockname(arg0, arg1, arg2) => unsafe { syscall3(51, arg0, arg1, arg2) },
// Syscall::Getpeername(arg0, arg1, arg2) => unsafe { syscall3(52, arg0, arg1, arg2) },
// Syscall::Socketpair(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(53, arg0, arg1, arg2, arg3)
// },
// Syscall::Setsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(54, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Getsockopt(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(55, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Clone(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(56, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fork => unsafe { syscall0(57) },
// Syscall::Vfork => unsafe { syscall0(58) },
// Syscall::Execve(arg0, arg1, arg2) => unsafe { syscall3(59, arg0, arg1, arg2) },
// Syscall::Exit(arg0) => unsafe { syscall1(60, arg0) },
// Syscall::Wait4(arg0, arg1, arg2, arg3) => unsafe { syscall4(61, arg0, arg1, arg2, arg3) },
// Syscall::Kill(arg0, arg1) => unsafe { syscall2(62, arg0, arg1) },
// Syscall::Uname(arg0) => unsafe { syscall1(63, arg0) },
// Syscall::Semget(arg0, arg1, arg2) => unsafe { syscall3(64, arg0, arg1, arg2) },
// Syscall::Semop(arg0, arg1, arg2) => unsafe { syscall3(65, arg0, arg1, arg2) },
// Syscall::Semctl(arg0, arg1, arg2, arg3) => unsafe { syscall4(66, arg0, arg1, arg2, arg3) },
// Syscall::Shmdt(arg0) => unsafe { syscall1(67, arg0) },
// Syscall::Msgget(arg0, arg1) => unsafe { syscall2(68, arg0, arg1) },
// Syscall::Msgsnd(arg0, arg1, arg2, arg3) => unsafe { syscall4(69, arg0, arg1, arg2, arg3) },
// Syscall::Msgrcv(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(70, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Msgctl(arg0, arg1, arg2) => unsafe { syscall3(71, arg0, arg1, arg2) },
// Syscall::Fcntl(arg0, arg1, arg2) => unsafe { syscall3(72, arg0, arg1, arg2) },
// Syscall::Flock(arg0, arg1) => unsafe { syscall2(73, arg0, arg1) },
// Syscall::Fsync(arg0) => unsafe { syscall1(74, arg0) },
// Syscall::Fdatasync(arg0) => unsafe { syscall1(75, arg0) },
// Syscall::Truncate(arg0, arg1) => unsafe { syscall2(76, arg0, arg1) },
// Syscall::Ftruncate(arg0, arg1) => unsafe { syscall2(77, arg0, arg1) },
// Syscall::Getdents(arg0, arg1, arg2) => unsafe { syscall3(78, arg0, arg1, arg2) },
// Syscall::Getcwd(arg0, arg1) => unsafe { syscall2(79, arg0, arg1) },
// Syscall::Chdir(arg0) => unsafe { syscall1(80, arg0) },
// Syscall::Fchdir(arg0) => unsafe { syscall1(81, arg0) },
// Syscall::Rename(arg0, arg1) => unsafe { syscall2(82, arg0, arg1) },
// Syscall::Mkdir(arg0, arg1) => unsafe { syscall2(83, arg0, arg1) },
// Syscall::Rmdir(arg0) => unsafe { syscall1(84, arg0) },
// Syscall::Creat(arg0, arg1) => unsafe { syscall2(85, arg0, arg1) },
// Syscall::Link(arg0, arg1) => unsafe { syscall2(86, arg0, arg1) },
// Syscall::Unlink(arg0) => unsafe { syscall1(87, arg0) },
// Syscall::Symlink(arg0, arg1) => unsafe { syscall2(88, arg0, arg1) },
// Syscall::Readlink(arg0, arg1, arg2) => unsafe { syscall3(89, arg0, arg1, arg2) },
// Syscall::Chmod(arg0, arg1) => unsafe { syscall2(90, arg0, arg1) },
// Syscall::Fchmod(arg0, arg1) => unsafe { syscall2(91, arg0, arg1) },
// Syscall::Chown(arg0, arg1, arg2) => unsafe { syscall3(92, arg0, arg1, arg2) },
// Syscall::Fchown(arg0, arg1, arg2) => unsafe { syscall3(93, arg0, arg1, arg2) },
// Syscall::Lchown(arg0, arg1, arg2) => unsafe { syscall3(94, arg0, arg1, arg2) },
// Syscall::Umask(arg0) => unsafe { syscall1(95, arg0) },
// Syscall::Gettimeofday(arg0, arg1) => unsafe { syscall2(96, arg0, arg1) },
// Syscall::Getrlimit(arg0, arg1) => unsafe { syscall2(97, arg0, arg1) },
// Syscall::Getrusage(arg0, arg1) => unsafe { syscall2(98, arg0, arg1) },
// Syscall::Sysinfo(arg0) => unsafe { syscall1(99, arg0) },
// Syscall::Times(arg0) => unsafe { syscall1(100, arg0) },
// Syscall::Ptrace(arg0, arg1, arg2, arg3) => unsafe { syscall4(101, arg0, arg1, arg2, arg3) },
// Syscall::Getuid => unsafe { syscall0(102) },
// Syscall::Syslog(arg0, arg1, arg2) => unsafe { syscall3(103, arg0, arg1, arg2) },
// Syscall::Getgid => unsafe { syscall0(104) },
// Syscall::Setuid(arg0) => unsafe { syscall1(105, arg0) },
// Syscall::Setgid(arg0) => unsafe { syscall1(106, arg0) },
// Syscall::Geteuid => unsafe { syscall0(107) },
// Syscall::Getegid => unsafe { syscall0(108) },
// Syscall::Setpgid(arg0, arg1) => unsafe { syscall2(109, arg0, arg1) },
// Syscall::Getppid => unsafe { syscall0(110) },
// Syscall::Getpgrp => unsafe { syscall0(111) },
// Syscall::Setsid => unsafe { syscall0(112) },
// Syscall::Setreuid(arg0, arg1) => unsafe { syscall2(113, arg0, arg1) },
// Syscall::Setregid(arg0, arg1) => unsafe { syscall2(114, arg0, arg1) },
// Syscall::Getgroups(arg0, arg1) => unsafe { syscall2(115, arg0, arg1) },
// Syscall::Setgroups(arg0, arg1) => unsafe { syscall2(116, arg0, arg1) },
// Syscall::Setresuid(arg0, arg1, arg2) => unsafe { syscall3(117, arg0, arg1, arg2) },
// Syscall::Getresuid(arg0, arg1, arg2) => unsafe { syscall3(118, arg0, arg1, arg2) },
// Syscall::Setresgid(arg0, arg1, arg2) => unsafe { syscall3(119, arg0, arg1, arg2) },
// Syscall::Getresgid(arg0, arg1, arg2) => unsafe { syscall3(120, arg0, arg1, arg2) },
// Syscall::Getpgid(arg0) => unsafe { syscall1(121, arg0) },
// Syscall::Setfsuid(arg0) => unsafe { syscall1(122, arg0) },
// Syscall::Setfsgid(arg0) => unsafe { syscall1(123, arg0) },
// Syscall::Getsid(arg0) => unsafe { syscall1(124, arg0) },
// Syscall::Capget(arg0, arg1) => unsafe { syscall2(125, arg0, arg1) },
// Syscall::Capset(arg0, arg1) => unsafe { syscall2(126, arg0, arg1) },
// Syscall::RtSigpending(arg0, arg1) => unsafe { syscall2(127, arg0, arg1) },
// Syscall::RtSigtimedwait(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(128, arg0, arg1, arg2, arg3)
// },
// Syscall::RtSigqueueinfo(arg0, arg1, arg2) => unsafe { syscall3(129, arg0, arg1, arg2) },
// Syscall::RtSigsuspend(arg0, arg1) => unsafe { syscall2(130, arg0, arg1) },
// Syscall::Sigaltstack(arg0, arg1) => unsafe { syscall2(131, arg0, arg1) },
// Syscall::Utime(arg0, arg1) => unsafe { syscall2(132, arg0, arg1) },
// Syscall::Mknod(arg0, arg1, arg2) => unsafe { syscall3(133, arg0, arg1, arg2) },
// Syscall::Uselib(arg0) => unsafe { syscall1(134, arg0) },
// Syscall::Personality(arg0) => unsafe { syscall1(135, arg0) },
// Syscall::Ustat(arg0, arg1) => unsafe { syscall2(136, arg0, arg1) },
// Syscall::Statfs(arg0, arg1) => unsafe { syscall2(137, arg0, arg1) },
// Syscall::Fstatfs(arg0, arg1) => unsafe { syscall2(138, arg0, arg1) },
// Syscall::Sysfs(arg0, arg1, arg2) => unsafe { syscall3(139, arg0, arg1, arg2) },
// Syscall::Getpriority(arg0, arg1) => unsafe { syscall2(140, arg0, arg1) },
// Syscall::Setpriority(arg0, arg1, arg2) => unsafe { syscall3(141, arg0, arg1, arg2) },
// Syscall::SchedSetparam(arg0, arg1) => unsafe { syscall2(142, arg0, arg1) },
// Syscall::SchedGetparam(arg0, arg1) => unsafe { syscall2(143, arg0, arg1) },
// Syscall::SchedSetscheduler(arg0, arg1, arg2) => unsafe { syscall3(144, arg0, arg1, arg2) },
// Syscall::SchedGetscheduler(arg0) => unsafe { syscall1(145, arg0) },
// Syscall::SchedGetPriorityMax(arg0) => unsafe { syscall1(146, arg0) },
// Syscall::SchedGetPriorityMin(arg0) => unsafe { syscall1(147, arg0) },
// Syscall::SchedRrGetInterval(arg0, arg1) => unsafe { syscall2(148, arg0, arg1) },
// Syscall::Mlock(arg0, arg1) => unsafe { syscall2(149, arg0, arg1) },
// Syscall::Munlock(arg0, arg1) => unsafe { syscall2(150, arg0, arg1) },
// Syscall::Mlockall(arg0) => unsafe { syscall1(151, arg0) },
// Syscall::Munlockall => unsafe { syscall0(152) },
// Syscall::Vhangup => unsafe { syscall0(153) },
// Syscall::ModifyLdt(arg0, arg1, arg2) => unsafe { syscall3(154, arg0, arg1, arg2) },
// Syscall::PivotRoot(arg0, arg1) => unsafe { syscall2(155, arg0, arg1) },
// Syscall::_Sysctl(arg0) => unsafe { syscall1(156, arg0) },
// Syscall::Prctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(157, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::ArchPrctl(arg0, arg1) => unsafe { syscall2(158, arg0, arg1) },
// Syscall::Adjtimex(arg0) => unsafe { syscall1(159, arg0) },
// Syscall::Setrlimit(arg0, arg1) => unsafe { syscall2(160, arg0, arg1) },
// Syscall::Chroot(arg0) => unsafe { syscall1(161, arg0) },
// Syscall::Sync => unsafe { syscall0(162) },
// Syscall::Acct(arg0) => unsafe { syscall1(163, arg0) },
// Syscall::Settimeofday(arg0, arg1) => unsafe { syscall2(164, arg0, arg1) },
// Syscall::Mount(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(165, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Umount2(arg0, arg1) => unsafe { syscall2(166, arg0, arg1) },
// Syscall::Swapon(arg0, arg1) => unsafe { syscall2(167, arg0, arg1) },
// Syscall::Swapoff(arg0) => unsafe { syscall1(168, arg0) },
// Syscall::Reboot(arg0, arg1, arg2, arg3) => unsafe { syscall4(169, arg0, arg1, arg2, arg3) },
// Syscall::Sethostname(arg0, arg1) => unsafe { syscall2(170, arg0, arg1) },
// Syscall::Setdomainname(arg0, arg1) => unsafe { syscall2(171, arg0, arg1) },
// Syscall::Iopl(arg0) => unsafe { syscall1(172, arg0) },
// Syscall::Ioperm(arg0, arg1, arg2) => unsafe { syscall3(173, arg0, arg1, arg2) },
// Syscall::CreateModule(arg0, arg1) => unsafe { syscall2(174, arg0, arg1) },
// Syscall::InitModule(arg0, arg1, arg2) => unsafe { syscall3(175, arg0, arg1, arg2) },
// Syscall::DeleteModule(arg0, arg1) => unsafe { syscall2(176, arg0, arg1) },
// Syscall::GetKernelSyms(arg0) => unsafe { syscall1(177, arg0) },
// Syscall::QueryModule(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(178, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Quotactl(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(179, arg0, arg1, arg2, arg3)
// },
// Syscall::Nfsservctl(arg0, arg1, arg2) => unsafe { syscall3(180, arg0, arg1, arg2) },
// Syscall::Getpmsg => unsafe { syscall0(181) },
// Syscall::Putpmsg => unsafe { syscall0(182) },
// Syscall::AfsSyscall => unsafe { syscall0(183) },
// Syscall::Tuxcall => unsafe { syscall0(184) },
// Syscall::Security => unsafe { syscall0(185) },
// Syscall::Gettid => unsafe { syscall0(186) },
// Syscall::Readahead(arg0, arg1, arg2) => unsafe { syscall3(187, arg0, arg1, arg2) },
// Syscall::Setxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(188, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Lsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(189, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fsetxattr(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(190, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Getxattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(191, arg0, arg1, arg2, arg3)
// },
// Syscall::Lgetxattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(192, arg0, arg1, arg2, arg3)
// },
// Syscall::Fgetxattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(193, arg0, arg1, arg2, arg3)
// },
// Syscall::Listxattr(arg0, arg1, arg2) => unsafe { syscall3(194, arg0, arg1, arg2) },
// Syscall::Llistxattr(arg0, arg1, arg2) => unsafe { syscall3(195, arg0, arg1, arg2) },
// Syscall::Flistxattr(arg0, arg1, arg2) => unsafe { syscall3(196, arg0, arg1, arg2) },
// Syscall::Removexattr(arg0, arg1) => unsafe { syscall2(197, arg0, arg1) },
// Syscall::Lremovexattr(arg0, arg1) => unsafe { syscall2(198, arg0, arg1) },
// Syscall::Fremovexattr(arg0, arg1) => unsafe { syscall2(199, arg0, arg1) },
// Syscall::Tkill(arg0, arg1) => unsafe { syscall2(200, arg0, arg1) },
// Syscall::Time(arg0) => unsafe { syscall1(201, arg0) },
// Syscall::Futex(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(202, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::SchedSetaffinity(arg0, arg1, arg2) => unsafe { syscall3(203, arg0, arg1, arg2) },
// Syscall::SchedGetaffinity(arg0, arg1, arg2) => unsafe { syscall3(204, arg0, arg1, arg2) },
// Syscall::SetThreadArea(arg0) => unsafe { syscall1(205, arg0) },
// Syscall::IoSetup(arg0, arg1) => unsafe { syscall2(206, arg0, arg1) },
// Syscall::IoDestroy(arg0) => unsafe { syscall1(207, arg0) },
// Syscall::IoGetevents(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(208, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoSubmit(arg0, arg1, arg2) => unsafe { syscall3(209, arg0, arg1, arg2) },
// Syscall::IoCancel(arg0, arg1, arg2) => unsafe { syscall3(210, arg0, arg1, arg2) },
// Syscall::GetThreadArea(arg0) => unsafe { syscall1(211, arg0) },
// Syscall::LookupDcookie(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(212, arg0, arg1, arg2, arg3)
// },
// Syscall::EpollCreate(arg0) => unsafe { syscall1(213, arg0) },
// Syscall::EpollCtlOld => unsafe { syscall0(214) },
// Syscall::EpollWaitOld => unsafe { syscall0(215) },
// Syscall::RemapFilePages(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(216, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Getdents64(arg0, arg1, arg2) => unsafe { syscall3(217, arg0, arg1, arg2) },
// Syscall::SetTidAddress(arg0) => unsafe { syscall1(218, arg0) },
// Syscall::RestartSyscall => unsafe { syscall0(219) },
// Syscall::Semtimedop(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(220, arg0, arg1, arg2, arg3)
// },
// Syscall::Fadvise64(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(221, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerCreate(arg0, arg1, arg2) => unsafe { syscall3(222, arg0, arg1, arg2) },
// Syscall::TimerSettime(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(223, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerGettime(arg0, arg1) => unsafe { syscall2(224, arg0, arg1) },
// Syscall::TimerGetoverrun(arg0) => unsafe { syscall1(225, arg0) },
// Syscall::TimerDelete(arg0) => unsafe { syscall1(226, arg0) },
// Syscall::ClockSettime(arg0, arg1) => unsafe { syscall2(227, arg0, arg1) },
// Syscall::ClockGettime(arg0, arg1) => unsafe { syscall2(228, arg0, arg1) },
// Syscall::ClockGetres(arg0, arg1) => unsafe { syscall2(229, arg0, arg1) },
// Syscall::ClockNanosleep(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(230, arg0, arg1, arg2, arg3)
// },
// Syscall::ExitGroup(arg0) => unsafe { syscall1(231, arg0) },
// Syscall::EpollWait(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(232, arg0, arg1, arg2, arg3)
// },
// Syscall::EpollCtl(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(233, arg0, arg1, arg2, arg3)
// },
// Syscall::Tgkill(arg0, arg1, arg2) => unsafe { syscall3(234, arg0, arg1, arg2) },
// Syscall::Utimes(arg0, arg1) => unsafe { syscall2(235, arg0, arg1) },
// Syscall::Vserver => unsafe { syscall0(236) },
// Syscall::Mbind(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(237, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::SetMempolicy(arg0, arg1, arg2) => unsafe { syscall3(238, arg0, arg1, arg2) },
// Syscall::GetMempolicy(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(239, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MqOpen(arg0, arg1, arg2, arg3) => unsafe { syscall4(240, arg0, arg1, arg2, arg3) },
// Syscall::MqUnlink(arg0) => unsafe { syscall1(241, arg0) },
// Syscall::MqTimedsend(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(242, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MqTimedreceive(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(243, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MqNotify(arg0, arg1) => unsafe { syscall2(244, arg0, arg1) },
// Syscall::MqGetsetattr(arg0, arg1, arg2) => unsafe { syscall3(245, arg0, arg1, arg2) },
// Syscall::KexecLoad(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(246, arg0, arg1, arg2, arg3)
// },
// Syscall::Waitid(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(247, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::AddKey(arg0, arg1, arg2, arg3) => unsafe { syscall4(248, arg0, arg1, arg2, arg3) },
// Syscall::RequestKey(arg0, arg1, arg2) => unsafe { syscall3(249, arg0, arg1, arg2) },
// Syscall::Keyctl(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(250, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoprioSet(arg0, arg1, arg2) => unsafe { syscall3(251, arg0, arg1, arg2) },
// Syscall::IoprioGet(arg0, arg1) => unsafe { syscall2(252, arg0, arg1) },
// Syscall::InotifyInit => unsafe { syscall0(253) },
// Syscall::InotifyAddWatch(arg0, arg1, arg2) => unsafe { syscall3(254, arg0, arg1, arg2) },
// Syscall::InotifyRmWatch(arg0, arg1) => unsafe { syscall2(255, arg0, arg1) },
// Syscall::MigratePages(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(256, arg0, arg1, arg2, arg3)
// },
// Syscall::Openat(arg0, arg1, arg2, arg3) => unsafe { syscall4(257, arg0, arg1, arg2, arg3) },
// Syscall::Mkdirat(arg0, arg1, arg2) => unsafe { syscall3(258, arg0, arg1, arg2) },
// Syscall::Mknodat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(259, arg0, arg1, arg2, arg3)
// },
// Syscall::Fchownat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(260, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Futimesat(arg0, arg1, arg2) => unsafe { syscall3(261, arg0, arg1, arg2) },
// Syscall::Newfstatat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(262, arg0, arg1, arg2, arg3)
// },
// Syscall::Unlinkat(arg0, arg1, arg2) => unsafe { syscall3(263, arg0, arg1, arg2) },
// Syscall::Renameat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(264, arg0, arg1, arg2, arg3)
// },
// Syscall::Linkat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(265, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Symlinkat(arg0, arg1, arg2) => unsafe { syscall3(266, arg0, arg1, arg2) },
// Syscall::Readlinkat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(267, arg0, arg1, arg2, arg3)
// },
// Syscall::Fchmodat(arg0, arg1, arg2) => unsafe { syscall3(268, arg0, arg1, arg2) },
// Syscall::Faccessat(arg0, arg1, arg2) => unsafe { syscall3(269, arg0, arg1, arg2) },
// Syscall::Pselect6(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(270, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Ppoll(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(271, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Unshare(arg0) => unsafe { syscall1(272, arg0) },
// Syscall::SetRobustList(arg0, arg1) => unsafe { syscall2(273, arg0, arg1) },
// Syscall::GetRobustList(arg0, arg1, arg2) => unsafe { syscall3(274, arg0, arg1, arg2) },
// Syscall::Splice(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(275, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Tee(arg0, arg1, arg2, arg3) => unsafe { syscall4(276, arg0, arg1, arg2, arg3) },
// Syscall::SyncFileRange(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(277, arg0, arg1, arg2, arg3)
// },
// Syscall::Vmsplice(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(278, arg0, arg1, arg2, arg3)
// },
// Syscall::MovePages(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(279, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Utimensat(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(280, arg0, arg1, arg2, arg3)
// },
// Syscall::EpollPwait(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(281, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Signalfd(arg0, arg1, arg2) => unsafe { syscall3(282, arg0, arg1, arg2) },
// Syscall::TimerfdCreate(arg0, arg1) => unsafe { syscall2(283, arg0, arg1) },
// Syscall::Eventfd(arg0, arg1) => unsafe { syscall2(284, arg0, arg1) },
// Syscall::Fallocate(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(285, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerfdSettime(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(286, arg0, arg1, arg2, arg3)
// },
// Syscall::TimerfdGettime(arg0, arg1) => unsafe { syscall2(287, arg0, arg1) },
// Syscall::Accept4(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(288, arg0, arg1, arg2, arg3)
// },
// Syscall::Signalfd4(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(289, arg0, arg1, arg2, arg3)
// },
// Syscall::Eventfd2(arg0, arg1) => unsafe { syscall2(290, arg0, arg1) },
// Syscall::EpollCreate1(arg0) => unsafe { syscall1(291, arg0) },
// Syscall::Dup3(arg0, arg1, arg2) => unsafe { syscall3(292, arg0, arg1, arg2) },
// Syscall::Pipe2(arg0, arg1) => unsafe { syscall2(293, arg0, arg1) },
// Syscall::InotifyInit1(arg0) => unsafe { syscall1(294, arg0) },
// Syscall::Preadv(arg0, arg1, arg2, arg3) => unsafe { syscall4(295, arg0, arg1, arg2, arg3) },
// Syscall::Pwritev(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(296, arg0, arg1, arg2, arg3)
// },
// Syscall::RtTgsigqueueinfo(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(297, arg0, arg1, arg2, arg3)
// },
// Syscall::PerfEventOpen(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(298, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Recvmmsg(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(299, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::FanotifyInit(arg0, arg1) => unsafe { syscall2(300, arg0, arg1) },
// Syscall::FanotifyMark(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(301, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Prlimit64(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(302, arg0, arg1, arg2, arg3)
// },
// Syscall::NameToHandleAt(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(303, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::OpenByHandleAt(arg0, arg1, arg2) => unsafe { syscall3(304, arg0, arg1, arg2) },
// Syscall::ClockAdjtime(arg0, arg1) => unsafe { syscall2(305, arg0, arg1) },
// Syscall::Syncfs(arg0) => unsafe { syscall1(306, arg0) },
// Syscall::Sendmmsg(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(307, arg0, arg1, arg2, arg3)
// },
// Syscall::Setns(arg0, arg1) => unsafe { syscall2(308, arg0, arg1) },
// Syscall::Getcpu(arg0, arg1, arg2) => unsafe { syscall3(309, arg0, arg1, arg2) },
// Syscall::ProcessVmReadv(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(310, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::ProcessVmWritev(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(311, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Kcmp(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(312, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::FinitModule(arg0, arg1, arg2) => unsafe { syscall3(313, arg0, arg1, arg2) },
// Syscall::SchedSetattr(arg0, arg1, arg2) => unsafe { syscall3(314, arg0, arg1, arg2) },
// Syscall::SchedGetattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(315, arg0, arg1, arg2, arg3)
// },
// Syscall::Renameat2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(316, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Seccomp(arg0, arg1, arg2) => unsafe { syscall3(317, arg0, arg1, arg2) },
// Syscall::Getrandom(arg0, arg1, arg2) => unsafe { syscall3(318, arg0, arg1, arg2) },
// Syscall::MemfdCreate(arg0, arg1) => unsafe { syscall2(319, arg0, arg1) },
// Syscall::KexecFileLoad(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(320, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Bpf(arg0, arg1, arg2) => unsafe { syscall3(321, arg0, arg1, arg2) },
// Syscall::Execveat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(322, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Userfaultfd(arg0) => unsafe { syscall1(323, arg0) },
// Syscall::Membarrier(arg0, arg1) => unsafe { syscall2(324, arg0, arg1) },
// Syscall::Mlock2(arg0, arg1, arg2) => unsafe { syscall3(325, arg0, arg1, arg2) },
// Syscall::CopyFileRange(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(326, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Preadv2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(327, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Pwritev2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(328, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::PkeyMprotect(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(329, arg0, arg1, arg2, arg3)
// },
// Syscall::PkeyAlloc(arg0, arg1) => unsafe { syscall2(330, arg0, arg1) },
// Syscall::PkeyFree(arg0) => unsafe { syscall1(331, arg0) },
// Syscall::Statx(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(332, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoPgetevents(arg0, arg1, arg2, arg3, arg4, arg5) => unsafe {
// syscall6(333, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// Syscall::Rseq(arg0, arg1, arg2, arg3) => unsafe { syscall4(334, arg0, arg1, arg2, arg3) },
// Syscall::PidfdSendSignal(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(424, arg0, arg1, arg2, arg3)
// },
// Syscall::IoUringSetup(arg0, arg1) => unsafe { syscall2(425, arg0, arg1) },
// Syscall::IoUringEnter(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(426, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::IoUringRegister(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(427, arg0, arg1, arg2, arg3)
// },
// Syscall::OpenTree(arg0, arg1, arg2) => unsafe { syscall3(428, arg0, arg1, arg2) },
// Syscall::MoveMount(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(429, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fsopen(arg0, arg1, arg2) => unsafe { syscall3(430, arg0, arg1, arg2) },
// Syscall::Fsconfig(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(431, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fsmount(arg0, arg1, arg2) => unsafe { syscall3(432, arg0, arg1, arg2) },
// Syscall::Fspick(arg0, arg1, arg2) => unsafe { syscall3(433, arg0, arg1, arg2) },
// Syscall::PidfdOpen(arg0, arg1) => unsafe { syscall2(434, arg0, arg1) },
// Syscall::Clone3(arg0, arg1) => unsafe { syscall2(435, arg0, arg1) },
// Syscall::CloseRange(arg0, arg1, arg2) => unsafe { syscall3(436, arg0, arg1, arg2) },
// Syscall::Openat2(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(437, arg0, arg1, arg2, arg3)
// },
// Syscall::PidfdGetfd(arg0, arg1, arg2) => unsafe { syscall3(438, arg0, arg1, arg2) },
// Syscall::Faccessat2(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(439, arg0, arg1, arg2, arg3)
// },
// Syscall::ProcessMadvise(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(440, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::EpollPwait2(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(441, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::MountSetattr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(442, arg0, arg1, arg2, arg3)
// },
// Syscall::QuotactlFd(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(443, arg0, arg1, arg2, arg3)
// },
// Syscall::LandlockCreateRuleset(arg0, arg1, arg2) => unsafe {
// syscall3(444, arg0, arg1, arg2)
// },
// Syscall::LandlockAddRule(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(445, arg0, arg1, arg2, arg3)
// },
// Syscall::LandlockRestrictSelf(arg0, arg1) => unsafe { syscall2(446, arg0, arg1) },
// Syscall::MemfdSecret(arg0) => unsafe { syscall1(447, arg0) },
// Syscall::ProcessMrelease(arg0, arg1) => unsafe { syscall2(448, arg0, arg1) },
// Syscall::FutexWaitv(arg0, arg1, arg2) => unsafe { syscall3(449, arg0, arg1, arg2) },
// Syscall::SetMempolicyHomeNode(arg0, arg1, arg2) => unsafe {
// syscall3(450, arg0, arg1, arg2)
// },
// Syscall::Cachestat(arg0, arg1, arg2, arg3, arg4) => unsafe {
// syscall5(451, arg0, arg1, arg2, arg3, arg4)
// },
// Syscall::Fchmodat2(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(452, arg0, arg1, arg2, arg3)
// },
// Syscall::MapShadowStack(arg0, arg1) => unsafe { syscall2(453, arg0, arg1) },
// Syscall::FutexWake(arg0, arg1, arg2) => unsafe { syscall3(454, arg0, arg1, arg2) },
// Syscall::FutexWait(arg0, arg1, arg2) => unsafe { syscall3(455, arg0, arg1, arg2) },
// Syscall::FutexRequeue(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(456, arg0, arg1, arg2, arg3)
// },
// Syscall::Statmount(arg0, arg1, arg2) => unsafe { syscall3(457, arg0, arg1, arg2) },
// Syscall::Listmount(arg0, arg1, arg2) => unsafe { syscall3(458, arg0, arg1, arg2) },
// Syscall::LsmGetSelfAttr(arg0, arg1, arg2, arg3) => unsafe {
// syscall4(459, arg0, arg1, arg2, arg3)
// },
// Syscall::LsmSetSelfAttr(arg0, arg1, arg2) => unsafe { syscall3(460, arg0, arg1, arg2) },
// Syscall::LsmListModules(arg0, arg1) => unsafe { syscall2(461, arg0, arg1) },
// Syscall::Unknown(syscall_num, args) => match args {
// [arg0, arg1, arg2, arg3, arg4, arg5] => unsafe {
// syscall6(syscall_num, arg0, arg1, arg2, arg3, arg4, arg5)
// },
// _ => unreachable!(),
// },
// }
}
+129 -129
View File
@@ -1,137 +1,137 @@
///https://docs.rs/syscalls/latest/syscalls/x86_64/enum.Sysno.html
#[non_exhaustive]
#[repr(i32)]
#[repr(i64)]
#[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,
read = libc::SYS_read,
write = libc::SYS_write,
open = libc::SYS_open,
close = libc::SYS_close,
stat = libc::SYS_stat,
fstat = libc::SYS_fstat,
lstat = libc::SYS_lstat,
poll = libc::SYS_poll,
lseek = libc::SYS_lseek,
mmap = libc::SYS_mmap,
mprotect = libc::SYS_mprotect,
munmap = libc::SYS_munmap,
brk = libc::SYS_brk,
rt_sigaction = libc::SYS_rt_sigaction,
rt_sigprocmask = libc::SYS_rt_sigprocmask,
rt_sigreturn = libc::SYS_rt_sigreturn,
ioctl = libc::SYS_ioctl,
pread64 = libc::SYS_pread64,
pwrite64 = libc::SYS_pwrite64,
readv = libc::SYS_readv,
writev = libc::SYS_writev,
access = libc::SYS_access,
pipe = libc::SYS_pipe,
select = libc::SYS_select,
sched_yield = libc::SYS_sched_yield,
mremap = libc::SYS_mremap,
msync = libc::SYS_msync,
mincore = libc::SYS_mincore,
madvise = libc::SYS_madvise,
shmget = libc::SYS_shmget,
shmat = libc::SYS_shmat,
shmctl = libc::SYS_shmctl,
dup = libc::SYS_dup,
dup2 = libc::SYS_dup2,
pause = libc::SYS_pause,
nanosleep = libc::SYS_nanosleep,
getitimer = libc::SYS_getitimer,
alarm = libc::SYS_alarm,
setitimer = libc::SYS_setitimer,
getpid = libc::SYS_getpid,
sendfile = libc::SYS_sendfile,
socket = libc::SYS_socket,
connect = libc::SYS_connect,
accept = libc::SYS_accept,
sendto = libc::SYS_sendto,
recvfrom = libc::SYS_recvfrom,
sendmsg = libc::SYS_sendmsg,
recvmsg = libc::SYS_recvmsg,
shutdown = libc::SYS_shutdown,
bind = libc::SYS_bind,
listen = libc::SYS_listen,
getsockname = libc::SYS_getsockname,
getpeername = libc::SYS_getpeername,
socketpair = libc::SYS_socketpair,
setsockopt = libc::SYS_setsockopt,
getsockopt = libc::SYS_getsockopt,
clone = libc::SYS_clone,
fork = libc::SYS_fork,
vfork = libc::SYS_vfork,
execve = libc::SYS_execve,
exit = libc::SYS_exit,
wait4 = libc::SYS_wait4,
kill = libc::SYS_kill,
uname = libc::SYS_uname,
semget = libc::SYS_semget,
semop = libc::SYS_semop,
semctl = libc::SYS_semctl,
shmdt = libc::SYS_shmdt,
msgget = libc::SYS_msgget,
msgsnd = libc::SYS_msgsnd,
msgrcv = libc::SYS_msgrcv,
msgctl = libc::SYS_msgctl,
fcntl = libc::SYS_fcntl,
flock = libc::SYS_flock,
fsync = libc::SYS_fsync,
fdatasync = libc::SYS_fdatasync,
truncate = libc::SYS_truncate,
ftruncate = libc::SYS_ftruncate,
getdents = libc::SYS_getdents,
getcwd = libc::SYS_getcwd,
chdir = libc::SYS_chdir,
fchdir = libc::SYS_fchdir,
rename = libc::SYS_rename,
mkdir = libc::SYS_mkdir,
rmdir = libc::SYS_rmdir,
creat = libc::SYS_creat,
link = libc::SYS_link,
unlink = libc::SYS_unlink,
symlink = libc::SYS_symlink,
readlink = libc::SYS_readlink,
chmod = libc::SYS_chmod,
fchmod = libc::SYS_fchmod,
chown = libc::SYS_chown,
fchown = libc::SYS_fchown,
lchown = libc::SYS_lchown,
umask = libc::SYS_umask,
gettimeofday = libc::SYS_gettimeofday,
getrlimit = libc::SYS_getrlimit,
getrusage = libc::SYS_getrusage,
sysinfo = libc::SYS_sysinfo,
times = libc::SYS_times,
ptrace = libc::SYS_ptrace,
getuid = libc::SYS_getuid,
syslog = libc::SYS_syslog,
getgid = libc::SYS_getgid,
setuid = libc::SYS_setuid,
setgid = libc::SYS_setgid,
geteuid = libc::SYS_geteuid,
getegid = libc::SYS_getegid,
setpgid = libc::SYS_setpgid,
getppid = libc::SYS_getppid,
getpgrp = libc::SYS_getpgrp,
setsid = libc::SYS_setsid,
setreuid = libc::SYS_setreuid,
setregid = libc::SYS_setregid,
getgroups = libc::SYS_getgroups,
setgroups = libc::SYS_setgroups,
setresuid = libc::SYS_setresuid,
getresuid = libc::SYS_getresuid,
setresgid = libc::SYS_setresgid,
getresgid = libc::SYS_getresgid,
getpgid = libc::SYS_getpgid,
setfsuid = libc::SYS_setfsuid,
setfsgid = libc::SYS_setfsgid,
getsid = libc::SYS_getsid,
capget = libc::SYS_capget,
capset = libc::SYS_capset,
rt_sigpending = libc::SYS_rt_sigpending,
rt_sigtimedwait = 128,
rt_sigqueueinfo = 129,
rt_sigsuspend = 130,
+72
View File
@@ -0,0 +1,72 @@
use std::marker::PhantomData;
use std::{fmt::Debug, mem::transmute};
use bincode::{Decode, Encode};
#[derive(Encode, Decode)]
pub struct Ptr<T>(libc::c_ulong, PhantomData<T>);
impl<T> Ptr<T>
where
T: Debug,
{
pub fn new(location: libc::c_ulong) -> Self {
Self(location, PhantomData) // ooo
}
}
impl<T: Debug> Debug for Ptr<T> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
unsafe {
let ptr = transmute::<libc::c_ulong, *const T>(self.0);
// *(ptr as *mut u64) = 1;
// println!("{}", *ptr);
// let ptr = std::mem::transmute::<libc::c_ulong, *const libc::c_char>(self.0);
// let value = core::ptr::read::<libc::c_char>(ptr);
f.write_str(format!("0x{:X} -> {:?}", self.0, *ptr).as_str())
}
// Ok(())
}
}
impl BufferLocation for Ptr<libc::c_char> {
fn get_location(&self) -> libc::c_char {
unsafe { core::ptr::read::<libc::c_char>(self.0 as *const libc::c_char) }
}
}
pub trait BufferLocation {
fn get_location(&self) -> libc::c_char;
}
#[derive(Encode, Decode, Debug)]
pub struct Buf<T: BufferLocation>(pub T);
// impl<T: BufferLocation> Buf<T> {
// pub fn
// }
// impl<T: Debug + BufferLocation> Debug for Buf<T> {
// fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
// unsafe {
// // let addr = self.0.get_location();
// // let data =
// // &crate::kern_buffers::create_and_use_kernel_buffer(addr as *const libc::c_char)
// // .unwrap();
// // f.write_str(data)?
// // "F"
// };
// Ok(())
// }
// }
impl<T: BufferLocation> BufferLocation for Buf<T> {
fn get_location(&self) -> libc::c_char {
self.0.get_location()
}
}