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