mirror of
https://github.com/Astatin3/syscall-stream-rs.git
synced 2026-06-08 16:08:01 -06:00
Work on reading buffers.
This commit is contained in:
@@ -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"
|
||||
|
||||
+1666
-398
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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 {
|
||||
|
||||
+592
-533
File diff suppressed because it is too large
Load Diff
+1667
-366
File diff suppressed because it is too large
Load Diff
@@ -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
@@ -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,
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user