mirror of
https://github.com/Noratrieb/libuwuc.git
synced 2026-01-14 11:45:05 +01:00
hello world
This commit is contained in:
parent
52b9c8fb38
commit
ddba35d06b
12 changed files with 492 additions and 6 deletions
|
|
@ -3,15 +3,19 @@
|
|||
|
||||
use core::ffi::c_char;
|
||||
|
||||
use libuwuc::println;
|
||||
|
||||
extern crate libuwuc;
|
||||
|
||||
#[panic_handler]
|
||||
#[cfg(not(test))]
|
||||
fn handler(_arg: &core::panic::PanicInfo) -> ! {
|
||||
loop {}
|
||||
libuwuc::io::println!("panic!");
|
||||
libuwuc::start::exit(1);
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
extern "C" fn main(_argc: i32, _argv: *const *const c_char) -> i32 {
|
||||
println!("Hello, world!");
|
||||
0
|
||||
}
|
||||
|
|
|
|||
8
src/basic_mem.rs
Normal file
8
src/basic_mem.rs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
#[no_mangle]
|
||||
pub(crate) unsafe extern "C" fn memset(ptr: *mut u8, constant: u8, len: usize) {
|
||||
for i in 0..len {
|
||||
unsafe {
|
||||
*ptr.add(i) = constant;
|
||||
}
|
||||
}
|
||||
}
|
||||
35
src/io/mod.rs
Normal file
35
src/io/mod.rs
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
use crate::sys::syscall;
|
||||
|
||||
pub const STDIN: i32 = 0;
|
||||
pub const STDOUT: i32 = 1;
|
||||
pub const STDERR: i32 = 2;
|
||||
|
||||
#[doc(hidden)]
|
||||
pub struct Printer;
|
||||
|
||||
impl core::fmt::Write for Printer {
|
||||
fn write_str(&mut self, mut s: &str) -> core::fmt::Result {
|
||||
unsafe {
|
||||
while s.len() > 0 {
|
||||
let result =
|
||||
syscall::syscall!(syscall::SYS_WRITE, STDIN, s.as_ptr(), s.len()) as i64;
|
||||
if result < 0 {
|
||||
return Err(core::fmt::Error);
|
||||
}
|
||||
s = &s[(result as usize)..];
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! println {
|
||||
($($tt:tt)*) => {
|
||||
{
|
||||
use ::core::fmt::Write;
|
||||
::core::writeln!($crate::io::Printer, $($tt)*).unwrap();
|
||||
}
|
||||
};
|
||||
}
|
||||
pub use println;
|
||||
|
|
@ -1,4 +1,12 @@
|
|||
#![no_std]
|
||||
#![warn(unreachable_pub)]
|
||||
|
||||
mod basic_mem;
|
||||
pub mod io;
|
||||
pub mod start;
|
||||
mod stubs;
|
||||
mod sys;
|
||||
|
||||
pub mod syscall {
|
||||
pub use crate::sys::syscall::*;
|
||||
}
|
||||
|
|
|
|||
24
src/start.rs
Normal file
24
src/start.rs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
use core::ffi::{c_char, c_int};
|
||||
|
||||
/// The entrypoint of the program.
|
||||
/// This is called by a bit of assembly handling architecture-specific _start.
|
||||
pub(crate) unsafe extern "C" fn start(
|
||||
argc: i32,
|
||||
argv: *const *const c_char,
|
||||
_envp: *const *const c_char,
|
||||
) -> ! {
|
||||
extern "C" {
|
||||
fn main(argc: c_int, argv: *const *const c_char) -> c_int;
|
||||
}
|
||||
|
||||
let result = main(argc, argv);
|
||||
|
||||
exit(result as u64);
|
||||
}
|
||||
|
||||
pub fn exit(code: u64) -> ! {
|
||||
unsafe {
|
||||
crate::sys::syscall::syscall!(crate::sys::syscall::SYS_EXIT, code);
|
||||
core::hint::unreachable_unchecked()
|
||||
}
|
||||
}
|
||||
7
src/stubs.rs
Normal file
7
src/stubs.rs
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
// libcore seems to require this symbol, even though it's unused.
|
||||
#[no_mangle]
|
||||
fn rust_eh_personality() {
|
||||
unsafe {
|
||||
crate::sys::helpers::trap!();
|
||||
}
|
||||
}
|
||||
6
src/sys/x86_64/helpers.rs
Normal file
6
src/sys/x86_64/helpers.rs
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
macro_rules! trap {
|
||||
() => {
|
||||
::core::arch::asm!("ud2");
|
||||
};
|
||||
}
|
||||
pub(crate) use trap;
|
||||
|
|
@ -1 +1,3 @@
|
|||
pub(crate) mod helpers;
|
||||
pub(crate) mod start;
|
||||
pub(crate) mod syscall;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,25 @@
|
|||
|
||||
core::arch::global_asm!(
|
||||
".global _start",
|
||||
"_start:",
|
||||
"mov rdi, 42",
|
||||
"mov rax, 60",
|
||||
"syscall"
|
||||
// Hello, World!
|
||||
// We have been started. All of this assembly sucks and we want into rustland as quickly as possible.
|
||||
// Have a bit of fun and then, run away to libuwuc::start::start.
|
||||
// First, mark the top-most stack frame as 0 to prevent sadness for frame-pointer based unwinding.
|
||||
"mov rbp, 0",
|
||||
// We're off to a good start already.
|
||||
// Pass the variables to the start function arguments.
|
||||
"mov rdi, [rsp]", // &argc = rsp
|
||||
"mov rsi, [rsp+8]", // &argv = rsp+8
|
||||
|
||||
"mov rdx, rdi", // &envp = rsp+8*argc+8
|
||||
"mov rax, 8",
|
||||
"mul rdx",
|
||||
"add rdx, 8",
|
||||
"add rdx, rsp",
|
||||
"mov rdx, [rdx]", // &envp = rsp+8*argc+8
|
||||
|
||||
// The stack will be 16-byte aligned at process entry already.
|
||||
// So we're good to go!
|
||||
"call {start}",
|
||||
start = sym crate::start::start
|
||||
);
|
||||
|
|
|
|||
8
src/sys/x86_64/syscall/generate.py
Normal file
8
src/sys/x86_64/syscall/generate.py
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# curl -L https://filippo.io/linux-syscall-table/TABELLA_64.json > table.json
|
||||
import json
|
||||
with open ("table.json") as f:
|
||||
data = f.read()
|
||||
data=json.loads(data)
|
||||
for entry in data:
|
||||
value = data[entry]
|
||||
print(f"pub const SYS_{value[1].upper()}: i64 = {value[0]};")
|
||||
53
src/sys/x86_64/syscall/mod.rs
Normal file
53
src/sys/x86_64/syscall/mod.rs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
// Useful reference: https://filippo.io/linux-syscall-table/
|
||||
|
||||
#[allow(non_upper_case_globals)]
|
||||
mod values;
|
||||
pub use values::*;
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! syscall {
|
||||
($number:expr) => {{
|
||||
let out: u64;
|
||||
::core::arch::asm!(
|
||||
"syscall",
|
||||
in("rdi") $number,
|
||||
lateout("rax") out,
|
||||
);
|
||||
out
|
||||
}};
|
||||
($number:expr, $arg1:expr) => {{
|
||||
let out: u64;
|
||||
::core::arch::asm!(
|
||||
"syscall",
|
||||
in("rax") $number,
|
||||
in("rdi") $arg1,
|
||||
lateout("rax") out,
|
||||
);
|
||||
out
|
||||
}};
|
||||
($number:expr, $arg1:expr, $arg2:expr) => {{
|
||||
let out: u64;
|
||||
::core::arch::asm!(
|
||||
"syscall",
|
||||
in("rax") $number,
|
||||
in("rdi") $arg1,
|
||||
in("rsi") $arg2,
|
||||
lateout("rax") out,
|
||||
);
|
||||
out
|
||||
}};
|
||||
($number:expr, $arg1:expr, $arg2:expr, $arg3:expr) => {{
|
||||
let out: u64;
|
||||
::core::arch::asm!(
|
||||
"syscall",
|
||||
in("rax") $number,
|
||||
in("rdi") $arg1,
|
||||
in("rsi") $arg2,
|
||||
in("rdx") $arg3,
|
||||
lateout("rax") out,
|
||||
);
|
||||
out
|
||||
}};
|
||||
}
|
||||
|
||||
pub use syscall;
|
||||
314
src/sys/x86_64/syscall/values.rs
Normal file
314
src/sys/x86_64/syscall/values.rs
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
pub const SYS_READ: i64 = 0;
|
||||
pub const SYS_WRITE: i64 = 1;
|
||||
pub const SYS_OPEN: i64 = 2;
|
||||
pub const SYS_CLOSE: i64 = 3;
|
||||
pub const SYS_STAT: i64 = 4;
|
||||
pub const SYS_FSTAT: i64 = 5;
|
||||
pub const SYS_LSTAT: i64 = 6;
|
||||
pub const SYS_POLL: i64 = 7;
|
||||
pub const SYS_LSEEK: i64 = 8;
|
||||
pub const SYS_MMAP: i64 = 9;
|
||||
pub const SYS_MPROTECT: i64 = 10;
|
||||
pub const SYS_MUNMAP: i64 = 11;
|
||||
pub const SYS_BRK: i64 = 12;
|
||||
pub const SYS_RT_SIGACTION: i64 = 13;
|
||||
pub const SYS_RT_SIGPROCMASK: i64 = 14;
|
||||
pub const SYS_RT_SIGRETURN: i64 = 15;
|
||||
pub const SYS_IOCTL: i64 = 16;
|
||||
pub const SYS_PREAD64: i64 = 17;
|
||||
pub const SYS_PWRITE64: i64 = 18;
|
||||
pub const SYS_READV: i64 = 19;
|
||||
pub const SYS_WRITEV: i64 = 20;
|
||||
pub const SYS_ACCESS: i64 = 21;
|
||||
pub const SYS_PIPE: i64 = 22;
|
||||
pub const SYS_SELECT: i64 = 23;
|
||||
pub const SYS_SCHED_YIELD: i64 = 24;
|
||||
pub const SYS_MREMAP: i64 = 25;
|
||||
pub const SYS_MSYNC: i64 = 26;
|
||||
pub const SYS_MINCORE: i64 = 27;
|
||||
pub const SYS_MADVISE: i64 = 28;
|
||||
pub const SYS_SHMGET: i64 = 29;
|
||||
pub const SYS_SHMAT: i64 = 30;
|
||||
pub const SYS_SHMCTL: i64 = 31;
|
||||
pub const SYS_DUP: i64 = 32;
|
||||
pub const SYS_DUP2: i64 = 33;
|
||||
pub const SYS_PAUSE: i64 = 34;
|
||||
pub const SYS_NANOSLEEP: i64 = 35;
|
||||
pub const SYS_GETITIMER: i64 = 36;
|
||||
pub const SYS_ALARM: i64 = 37;
|
||||
pub const SYS_SETITIMER: i64 = 38;
|
||||
pub const SYS_GETPID: i64 = 39;
|
||||
pub const SYS_SENDFILE: i64 = 40;
|
||||
pub const SYS_SOCKET: i64 = 41;
|
||||
pub const SYS_CONNECT: i64 = 42;
|
||||
pub const SYS_ACCEPT: i64 = 43;
|
||||
pub const SYS_SENDTO: i64 = 44;
|
||||
pub const SYS_RECVFROM: i64 = 45;
|
||||
pub const SYS_SENDMSG: i64 = 46;
|
||||
pub const SYS_RECVMSG: i64 = 47;
|
||||
pub const SYS_SHUTDOWN: i64 = 48;
|
||||
pub const SYS_BIND: i64 = 49;
|
||||
pub const SYS_LISTEN: i64 = 50;
|
||||
pub const SYS_GETSOCKNAME: i64 = 51;
|
||||
pub const SYS_GETPEERNAME: i64 = 52;
|
||||
pub const SYS_SOCKETPAIR: i64 = 53;
|
||||
pub const SYS_SETSOCKOPT: i64 = 54;
|
||||
pub const SYS_GETSOCKOPT: i64 = 55;
|
||||
pub const SYS_CLONE: i64 = 56;
|
||||
pub const SYS_FORK: i64 = 57;
|
||||
pub const SYS_VFORK: i64 = 58;
|
||||
pub const SYS_EXECVE: i64 = 59;
|
||||
pub const SYS_EXIT: i64 = 60;
|
||||
pub const SYS_WAIT4: i64 = 61;
|
||||
pub const SYS_KILL: i64 = 62;
|
||||
pub const SYS_UNAME: i64 = 63;
|
||||
pub const SYS_SEMGET: i64 = 64;
|
||||
pub const SYS_SEMOP: i64 = 65;
|
||||
pub const SYS_SEMCTL: i64 = 66;
|
||||
pub const SYS_SHMDT: i64 = 67;
|
||||
pub const SYS_MSGGET: i64 = 68;
|
||||
pub const SYS_MSGSND: i64 = 69;
|
||||
pub const SYS_MSGRCV: i64 = 70;
|
||||
pub const SYS_MSGCTL: i64 = 71;
|
||||
pub const SYS_FCNTL: i64 = 72;
|
||||
pub const SYS_FLOCK: i64 = 73;
|
||||
pub const SYS_FSYNC: i64 = 74;
|
||||
pub const SYS_FDATASYNC: i64 = 75;
|
||||
pub const SYS_TRUNCATE: i64 = 76;
|
||||
pub const SYS_FTRUNCATE: i64 = 77;
|
||||
pub const SYS_GETDENTS: i64 = 78;
|
||||
pub const SYS_GETCWD: i64 = 79;
|
||||
pub const SYS_CHDIR: i64 = 80;
|
||||
pub const SYS_FCHDIR: i64 = 81;
|
||||
pub const SYS_RENAME: i64 = 82;
|
||||
pub const SYS_MKDIR: i64 = 83;
|
||||
pub const SYS_RMDIR: i64 = 84;
|
||||
pub const SYS_CREAT: i64 = 85;
|
||||
pub const SYS_LINK: i64 = 86;
|
||||
pub const SYS_UNLINK: i64 = 87;
|
||||
pub const SYS_SYMLINK: i64 = 88;
|
||||
pub const SYS_READLINK: i64 = 89;
|
||||
pub const SYS_CHMOD: i64 = 90;
|
||||
pub const SYS_FCHMOD: i64 = 91;
|
||||
pub const SYS_CHOWN: i64 = 92;
|
||||
pub const SYS_FCHOWN: i64 = 93;
|
||||
pub const SYS_LCHOWN: i64 = 94;
|
||||
pub const SYS_UMASK: i64 = 95;
|
||||
pub const SYS_GETTIMEOFDAY: i64 = 96;
|
||||
pub const SYS_GETRLIMIT: i64 = 97;
|
||||
pub const SYS_GETRUSAGE: i64 = 98;
|
||||
pub const SYS_SYSINFO: i64 = 99;
|
||||
pub const SYS_TIMES: i64 = 100;
|
||||
pub const SYS_PTRACE: i64 = 101;
|
||||
pub const SYS_GETUID: i64 = 102;
|
||||
pub const SYS_SYSLOG: i64 = 103;
|
||||
pub const SYS_GETGID: i64 = 104;
|
||||
pub const SYS_SETUID: i64 = 105;
|
||||
pub const SYS_SETGID: i64 = 106;
|
||||
pub const SYS_GETEUID: i64 = 107;
|
||||
pub const SYS_GETEGID: i64 = 108;
|
||||
pub const SYS_SETPGID: i64 = 109;
|
||||
pub const SYS_GETPPID: i64 = 110;
|
||||
pub const SYS_GETPGRP: i64 = 111;
|
||||
pub const SYS_SETSID: i64 = 112;
|
||||
pub const SYS_SETREUID: i64 = 113;
|
||||
pub const SYS_SETREGID: i64 = 114;
|
||||
pub const SYS_GETGROUPS: i64 = 115;
|
||||
pub const SYS_SETGROUPS: i64 = 116;
|
||||
pub const SYS_SETRESUID: i64 = 117;
|
||||
pub const SYS_GETRESUID: i64 = 118;
|
||||
pub const SYS_SETRESGID: i64 = 119;
|
||||
pub const SYS_GETRESGID: i64 = 120;
|
||||
pub const SYS_GETPGID: i64 = 121;
|
||||
pub const SYS_SETFSUID: i64 = 122;
|
||||
pub const SYS_SETFSGID: i64 = 123;
|
||||
pub const SYS_GETSID: i64 = 124;
|
||||
pub const SYS_CAPGET: i64 = 125;
|
||||
pub const SYS_CAPSET: i64 = 126;
|
||||
pub const SYS_RT_SIGPENDING: i64 = 127;
|
||||
pub const SYS_RT_SIGTIMEDWAIT: i64 = 128;
|
||||
pub const SYS_RT_SIGQUEUEINFO: i64 = 129;
|
||||
pub const SYS_RT_SIGSUSPEND: i64 = 130;
|
||||
pub const SYS_SIGALTSTACK: i64 = 131;
|
||||
pub const SYS_UTIME: i64 = 132;
|
||||
pub const SYS_MKNOD: i64 = 133;
|
||||
pub const SYS_USELIB: i64 = 134;
|
||||
pub const SYS_PERSONALITY: i64 = 135;
|
||||
pub const SYS_USTAT: i64 = 136;
|
||||
pub const SYS_STATFS: i64 = 137;
|
||||
pub const SYS_FSTATFS: i64 = 138;
|
||||
pub const SYS_SYSFS: i64 = 139;
|
||||
pub const SYS_GETPRIORITY: i64 = 140;
|
||||
pub const SYS_SETPRIORITY: i64 = 141;
|
||||
pub const SYS_SCHED_SETPARAM: i64 = 142;
|
||||
pub const SYS_SCHED_GETPARAM: i64 = 143;
|
||||
pub const SYS_SCHED_SETSCHEDULER: i64 = 144;
|
||||
pub const SYS_SCHED_GETSCHEDULER: i64 = 145;
|
||||
pub const SYS_SCHED_GET_PRIORITY_MAX: i64 = 146;
|
||||
pub const SYS_SCHED_GET_PRIORITY_MIN: i64 = 147;
|
||||
pub const SYS_SCHED_RR_GET_INTERVAL: i64 = 148;
|
||||
pub const SYS_MLOCK: i64 = 149;
|
||||
pub const SYS_MUNLOCK: i64 = 150;
|
||||
pub const SYS_MLOCKALL: i64 = 151;
|
||||
pub const SYS_MUNLOCKALL: i64 = 152;
|
||||
pub const SYS_VHANGUP: i64 = 153;
|
||||
pub const SYS_MODIFY_LDT: i64 = 154;
|
||||
pub const SYS_PIVOT_ROOT: i64 = 155;
|
||||
pub const SYS__SYSCTL: i64 = 156;
|
||||
pub const SYS_PRCTL: i64 = 157;
|
||||
pub const SYS_ARCH_PRCTL: i64 = 158;
|
||||
pub const SYS_ADJTIMEX: i64 = 159;
|
||||
pub const SYS_SETRLIMIT: i64 = 160;
|
||||
pub const SYS_CHROOT: i64 = 161;
|
||||
pub const SYS_SYNC: i64 = 162;
|
||||
pub const SYS_ACCT: i64 = 163;
|
||||
pub const SYS_SETTIMEOFDAY: i64 = 164;
|
||||
pub const SYS_MOUNT: i64 = 165;
|
||||
pub const SYS_UMOUNT2: i64 = 166;
|
||||
pub const SYS_SWAPON: i64 = 167;
|
||||
pub const SYS_SWAPOFF: i64 = 168;
|
||||
pub const SYS_REBOOT: i64 = 169;
|
||||
pub const SYS_SETHOSTNAME: i64 = 170;
|
||||
pub const SYS_SETDOMAINNAME: i64 = 171;
|
||||
pub const SYS_IOPL: i64 = 172;
|
||||
pub const SYS_IOPERM: i64 = 173;
|
||||
pub const SYS_CREATE_MODULE: i64 = 174;
|
||||
pub const SYS_INIT_MODULE: i64 = 175;
|
||||
pub const SYS_DELETE_MODULE: i64 = 176;
|
||||
pub const SYS_GET_KERNEL_SYMS: i64 = 177;
|
||||
pub const SYS_QUERY_MODULE: i64 = 178;
|
||||
pub const SYS_QUOTACTL: i64 = 179;
|
||||
pub const SYS_NFSSERVCTL: i64 = 180;
|
||||
pub const SYS_GETPMSG: i64 = 181;
|
||||
pub const SYS_PUTPMSG: i64 = 182;
|
||||
pub const SYS_AFS_SYSCALL: i64 = 183;
|
||||
pub const SYS_TUXCALL: i64 = 184;
|
||||
pub const SYS_SECURITY: i64 = 185;
|
||||
pub const SYS_GETTID: i64 = 186;
|
||||
pub const SYS_READAHEAD: i64 = 187;
|
||||
pub const SYS_SETXATTR: i64 = 188;
|
||||
pub const SYS_LSETXATTR: i64 = 189;
|
||||
pub const SYS_FSETXATTR: i64 = 190;
|
||||
pub const SYS_GETXATTR: i64 = 191;
|
||||
pub const SYS_LGETXATTR: i64 = 192;
|
||||
pub const SYS_FGETXATTR: i64 = 193;
|
||||
pub const SYS_LISTXATTR: i64 = 194;
|
||||
pub const SYS_LLISTXATTR: i64 = 195;
|
||||
pub const SYS_FLISTXATTR: i64 = 196;
|
||||
pub const SYS_REMOVEXATTR: i64 = 197;
|
||||
pub const SYS_LREMOVEXATTR: i64 = 198;
|
||||
pub const SYS_FREMOVEXATTR: i64 = 199;
|
||||
pub const SYS_TKILL: i64 = 200;
|
||||
pub const SYS_TIME: i64 = 201;
|
||||
pub const SYS_FUTEX: i64 = 202;
|
||||
pub const SYS_SCHED_SETAFFINITY: i64 = 203;
|
||||
pub const SYS_SCHED_GETAFFINITY: i64 = 204;
|
||||
pub const SYS_SET_THREAD_AREA: i64 = 205;
|
||||
pub const SYS_IO_SETUP: i64 = 206;
|
||||
pub const SYS_IO_DESTROY: i64 = 207;
|
||||
pub const SYS_IO_GETEVENTS: i64 = 208;
|
||||
pub const SYS_IO_SUBMIT: i64 = 209;
|
||||
pub const SYS_IO_CANCEL: i64 = 210;
|
||||
pub const SYS_GET_THREAD_AREA: i64 = 211;
|
||||
pub const SYS_LOOKUP_DCOOKIE: i64 = 212;
|
||||
pub const SYS_EPOLL_CREATE: i64 = 213;
|
||||
pub const SYS_EPOLL_CTL_OLD: i64 = 214;
|
||||
pub const SYS_EPOLL_WAIT_OLD: i64 = 215;
|
||||
pub const SYS_REMAP_FILE_PAGES: i64 = 216;
|
||||
pub const SYS_GETDENTS64: i64 = 217;
|
||||
pub const SYS_SET_TID_ADDRESS: i64 = 218;
|
||||
pub const SYS_RESTART_SYSCALL: i64 = 219;
|
||||
pub const SYS_SEMTIMEDOP: i64 = 220;
|
||||
pub const SYS_FADVISE64: i64 = 221;
|
||||
pub const SYS_TIMER_CREATE: i64 = 222;
|
||||
pub const SYS_TIMER_SETTIME: i64 = 223;
|
||||
pub const SYS_TIMER_GETTIME: i64 = 224;
|
||||
pub const SYS_TIMER_GETOVERRUN: i64 = 225;
|
||||
pub const SYS_TIMER_DELETE: i64 = 226;
|
||||
pub const SYS_CLOCK_SETTIME: i64 = 227;
|
||||
pub const SYS_CLOCK_GETTIME: i64 = 228;
|
||||
pub const SYS_CLOCK_GETRES: i64 = 229;
|
||||
pub const SYS_CLOCK_NANOSLEEP: i64 = 230;
|
||||
pub const SYS_EXIT_GROUP: i64 = 231;
|
||||
pub const SYS_EPOLL_WAIT: i64 = 232;
|
||||
pub const SYS_EPOLL_CTL: i64 = 233;
|
||||
pub const SYS_TGKILL: i64 = 234;
|
||||
pub const SYS_UTIMES: i64 = 235;
|
||||
pub const SYS_VSERVER: i64 = 236;
|
||||
pub const SYS_MBIND: i64 = 237;
|
||||
pub const SYS_SET_MEMPOLICY: i64 = 238;
|
||||
pub const SYS_GET_MEMPOLICY: i64 = 239;
|
||||
pub const SYS_MQ_OPEN: i64 = 240;
|
||||
pub const SYS_MQ_UNLINK: i64 = 241;
|
||||
pub const SYS_MQ_TIMEDSEND: i64 = 242;
|
||||
pub const SYS_MQ_TIMEDRECEIVE: i64 = 243;
|
||||
pub const SYS_MQ_NOTIFY: i64 = 244;
|
||||
pub const SYS_MQ_GETSETATTR: i64 = 245;
|
||||
pub const SYS_KEXEC_LOAD: i64 = 246;
|
||||
pub const SYS_WAITID: i64 = 247;
|
||||
pub const SYS_ADD_KEY: i64 = 248;
|
||||
pub const SYS_REQUEST_KEY: i64 = 249;
|
||||
pub const SYS_KEYCTL: i64 = 250;
|
||||
pub const SYS_IOPRIO_SET: i64 = 251;
|
||||
pub const SYS_IOPRIO_GET: i64 = 252;
|
||||
pub const SYS_INOTIFY_INIT: i64 = 253;
|
||||
pub const SYS_INOTIFY_ADD_WATCH: i64 = 254;
|
||||
pub const SYS_INOTIFY_RM_WATCH: i64 = 255;
|
||||
pub const SYS_MIGRATE_PAGES: i64 = 256;
|
||||
pub const SYS_OPENAT: i64 = 257;
|
||||
pub const SYS_MKDIRAT: i64 = 258;
|
||||
pub const SYS_MKNODAT: i64 = 259;
|
||||
pub const SYS_FCHOWNAT: i64 = 260;
|
||||
pub const SYS_FUTIMESAT: i64 = 261;
|
||||
pub const SYS_NEWFSTATAT: i64 = 262;
|
||||
pub const SYS_UNLINKAT: i64 = 263;
|
||||
pub const SYS_RENAMEAT: i64 = 264;
|
||||
pub const SYS_LINKAT: i64 = 265;
|
||||
pub const SYS_SYMLINKAT: i64 = 266;
|
||||
pub const SYS_READLINKAT: i64 = 267;
|
||||
pub const SYS_FCHMODAT: i64 = 268;
|
||||
pub const SYS_FACCESSAT: i64 = 269;
|
||||
pub const SYS_PSELECT6: i64 = 270;
|
||||
pub const SYS_PPOLL: i64 = 271;
|
||||
pub const SYS_UNSHARE: i64 = 272;
|
||||
pub const SYS_SET_ROBUST_LIST: i64 = 273;
|
||||
pub const SYS_GET_ROBUST_LIST: i64 = 274;
|
||||
pub const SYS_SPLICE: i64 = 275;
|
||||
pub const SYS_TEE: i64 = 276;
|
||||
pub const SYS_SYNC_FILE_RANGE: i64 = 277;
|
||||
pub const SYS_VMSPLICE: i64 = 278;
|
||||
pub const SYS_MOVE_PAGES: i64 = 279;
|
||||
pub const SYS_UTIMENSAT: i64 = 280;
|
||||
pub const SYS_EPOLL_PWAIT: i64 = 281;
|
||||
pub const SYS_SIGNALFD: i64 = 282;
|
||||
pub const SYS_TIMERFD_CREATE: i64 = 283;
|
||||
pub const SYS_EVENTFD: i64 = 284;
|
||||
pub const SYS_FALLOCATE: i64 = 285;
|
||||
pub const SYS_TIMERFD_SETTIME: i64 = 286;
|
||||
pub const SYS_TIMERFD_GETTIME: i64 = 287;
|
||||
pub const SYS_ACCEPT4: i64 = 288;
|
||||
pub const SYS_SIGNALFD4: i64 = 289;
|
||||
pub const SYS_EVENTFD2: i64 = 290;
|
||||
pub const SYS_EPOLL_CREATE1: i64 = 291;
|
||||
pub const SYS_DUP3: i64 = 292;
|
||||
pub const SYS_PIPE2: i64 = 293;
|
||||
pub const SYS_INOTIFY_INIT1: i64 = 294;
|
||||
pub const SYS_PREADV: i64 = 295;
|
||||
pub const SYS_PWRITEV: i64 = 296;
|
||||
pub const SYS_RT_TGSIGQUEUEINFO: i64 = 297;
|
||||
pub const SYS_PERF_EVENT_OPEN: i64 = 298;
|
||||
pub const SYS_RECVMMSG: i64 = 299;
|
||||
pub const SYS_FANOTIFY_INIT: i64 = 300;
|
||||
pub const SYS_FANOTIFY_MARK: i64 = 301;
|
||||
pub const SYS_PRLIMIT64: i64 = 302;
|
||||
pub const SYS_NAME_TO_HANDLE_AT: i64 = 303;
|
||||
pub const SYS_OPEN_BY_HANDLE_AT: i64 = 304;
|
||||
pub const SYS_CLOCK_ADJTIME: i64 = 305;
|
||||
pub const SYS_SYNCFS: i64 = 306;
|
||||
pub const SYS_SENDMMSG: i64 = 307;
|
||||
pub const SYS_SETNS: i64 = 308;
|
||||
pub const SYS_GETCPU: i64 = 309;
|
||||
pub const SYS_PROCESS_VM_READV: i64 = 310;
|
||||
pub const SYS_PROCESS_VM_WRITEV: i64 = 311;
|
||||
pub const SYS_KCMP: i64 = 312;
|
||||
pub const SYS_FINIT_MODULE: i64 = 313;
|
||||
Loading…
Add table
Add a link
Reference in a new issue