Skip to main content

Crate nc

Crate nc 

Source
Expand description

Execute system call directly without std or libc.

§Usage

Add this to Cargo.toml:

[dependencies]
nc = "0.9"

§Examples

Get file stat:

let mut statbuf = nc::stat_t::default();
let filepath = "/etc/passwd";
#[cfg(target_os = "linux")]
let ret = {
    #[cfg(not(any(
        target_arch = "aarch64",
        target_arch = "loongarch64",
        target_arch = "riscv64"
    )))]
    unsafe {
        nc::stat(filepath, &mut statbuf)
    }

    #[cfg(any(
        target_arch = "aarch64",
        target_arch = "loongarch64",
        target_arch = "riscv64"
    ))]
    unsafe {
        nc::fstatat(nc::AT_FDCWD, filepath, &mut statbuf, 0)
    }
};
#[cfg(any(target_os = "android", target_os = "freebsd"))]
let ret = unsafe { nc::fstatat(nc::AT_FDCWD, filepath, &mut statbuf, 0) };
match ret {
    Ok(_) => println!("s: {:?}", statbuf),
    Err(errno) => eprintln!("Failed to get file status, got errno: {}", errno),
}

Fork process:

let pid = unsafe { nc::fork() };
match pid {
    Err(errno) => eprintln!("Failed to call fork(), err: {}", nc::strerror(errno)),
    Ok(0) => {
        // Child process
        println!("[child] pid: {}", unsafe { nc::getpid() });
        let args = ["ls", "-l", "-a"];
        let env = ["DISPLAY=wayland"];
        let ret = unsafe { nc::execve("/bin/ls", &args, &env) };
        assert!(ret.is_ok());
    }
    Ok(child_pid) => {
        // Parent process
        println!("[main] child pid is: {child_pid}");
    }
}

Kill init process:

let ret = unsafe { nc::kill(1, nc::SIGTERM) };
assert_eq!(ret, Err(nc::EPERM));

Or handle signals:

fn handle_alarm(signum: i32) {
    assert_eq!(signum, nc::SIGALRM);
}

fn main() {
    let sa = nc::new_sigaction(handle_alarm);
    let ret = unsafe { nc::rt_sigaction(nc::SIGALRM, Some(&sa), None) };
    assert!(ret.is_ok());
    let remaining = unsafe { nc::alarm(1) };
    let mask = nc::sigset_t::default();
    let ret = unsafe { nc::rt_sigsuspend(&mask) };
    assert!(ret.is_err());
    assert_eq!(ret, Err(nc::EINTR));
    assert_eq!(remaining, Ok(0));
}

Or get system info:

pub fn cstr_to_str(input: &[u8]) -> &str {
    let nul_index = input.iter().position(|&b| b == 0).unwrap_or(input.len());
    std::str::from_utf8(&input[0..nul_index]).unwrap()
}

fn main() {
    let mut uts = nc::utsname_t::default();
    let ret = unsafe { nc::uname(&mut uts) };
    assert!(ret.is_ok());

    let mut result = Vec::new();

    result.push(cstr_to_str(&uts.sysname));
    result.push(cstr_to_str(&uts.nodename));
    result.push(cstr_to_str(&uts.release));
    result.push(cstr_to_str(&uts.version));
    result.push(cstr_to_str(&uts.machine));
    let domain_name = cstr_to_str(&uts.domainname);
    if domain_name != "(none)" {
        result.push(domain_name);
    }

    let result = result.join(" ");
    println!("{}", result);
}

§Supported Operating Systems and Architectures

  • linux
    • aarch64
    • arm
    • loongarch64
    • mips
    • mips64
    • mips64el
    • mipsel
    • powerpc64
    • powerpc64le
    • riscv64
    • s390x
    • x86
    • x86-64
  • android
    • aarch64
  • freebsd
    • x86-64
  • netbsd
    • x86-64
  • mac os
    • x86-64

Re-exports§

pub use syscalls::Errno;
pub use types::*;

Modules§

c_str
call
errno
path
restore
syscalls
sysno
types
util

Constants§

E2BIG
Argument list too long
EACCES
Permission denied
EADDRINUSE
Address already in use
EADDRNOTAVAIL
Cannot assign requested address
EADV
Advertise error
EAFNOSUPPORT
Address family not supported by protocol
EAGAIN
Try again
EALREADY
Operation already in progress
EBADE
Invalid exchange
EBADF
Bad file number
EBADFD
File descriptor in bad state
EBADMSG
Not a data message
EBADR
Invalid request descriptor
EBADRQC
Invalid request code
EBADSLT
Invalid slot
EBFONT
Bad font file format
EBUSY
Device or resource busy
ECANCELED
Operation Canceled
ECHILD
No child processes
ECHRNG
Channel number out of range
ECOMM
Communication error on send
ECONNABORTED
Software caused connection abort
ECONNREFUSED
Connection refused
ECONNRESET
Connection reset by peer
EDEADLK
Resource deadlock would occur
EDEADLOCK
EDESTADDRREQ
Destination address required
EDOM
Math argument out of domain of func
EDOTDOT
RFS specific error
EDQUOT
Quota exceeded
EEXIST
File exists
EFAULT
Bad address
EFBIG
File too large
EHOSTDOWN
Host is down
EHOSTUNREACH
No route to host
EHWPOISON
Memory page has hardware error
EIDRM
Identifier removed
EILSEQ
Illegal byte sequence
EINPROGRESS
Operation now in progress
EINTR
Interrupted system call
EINVAL
Invalid argument
EIO
I/O error
EISCONN
Transport endpoint is already connected
EISDIR
Is a directory
EISNAM
Is a named type file
EKEYEXPIRED
Key has expired
EKEYREJECTED
Key was rejected by service
EKEYREVOKED
Key has been revoked
EL2HLT
Level 2 halted
EL2NSYNC
Level 2 not synchronized
EL3HLT
Level 3 halted
EL3RST
Level 3 reset
ELIBACC
Can not access a needed shared library
ELIBBAD
Accessing a corrupted shared library
ELIBEXEC
Cannot exec a shared library directly
ELIBMAX
Attempting to link in too many shared libraries
ELIBSCN
.lib section in a.out corrupted
ELNRNG
Link number out of range
ELOOP
Too many symbolic links encountered
EMEDIUMTYPE
Wrong medium type
EMFILE
Too many open files
EMLINK
Too many links
EMSGSIZE
Message too long
EMULTIHOP
Multihop attempted
ENAMETOOLONG
File name too long
ENAVAIL
No XENIX semaphores available
ENETDOWN
Network is down
ENETRESET
Network dropped connection because of reset
ENETUNREACH
Network is unreachable
ENFILE
File table overflow
ENOANO
No anode
ENOBUFS
No buffer space available
ENOCSI
No CSI structure available
ENODATA
No data available
ENODEV
No such device
ENOENT
No such file or directory
ENOEXEC
Exec format error
ENOKEY
Required key not available
ENOLCK
No record locks available
ENOLINK
Link has been severed
ENOMEDIUM
No medium found
ENOMEM
Out of memory
ENOMSG
No message of desired type
ENONET
Machine is not on the network
ENOPKG
Package not installed
ENOPROTOOPT
Protocol not available
ENOSPC
No space left on device
ENOSR
Out of streams resources
ENOSTR
Device not a stream
ENOSYS
Invalid system call number
ENOTBLK
Block device required
ENOTCONN
Transport endpoint is not connected
ENOTDIR
Not a directory
ENOTEMPTY
Directory not empty
ENOTNAM
Not a XENIX named type file
ENOTRECOVERABLE
State not recoverable
ENOTSOCK
Socket operation on non-socket
ENOTTY
Not a typewriter
ENOTUNIQ
Name not unique on network
ENXIO
No such device or address
EOPNOTSUPP
Operation not supported on transport endpoint
EOVERFLOW
Value too large for defined data type
EOWNERDEAD
Owner died
EPERM
Operation not permitted
EPFNOSUPPORT
Protocol family not supported
EPIPE
Broken pipe
EPROTO
Protocol error
EPROTONOSUPPORT
Protocol not supported
EPROTOTYPE
Protocol wrong type for socket
ERANGE
Math result not representable
EREMCHG
Remote address changed
EREMOTE
Object is remote
EREMOTEIO
Remote I/O error
ERESTART
Interrupted system call should be restarted
ERFKILL
Operation not possible due to RF-kill
EROFS
Read-only file system
ESHUTDOWN
Cannot send after transport endpoint shutdown
ESOCKTNOSUPPORT
Socket type not supported
ESPIPE
Illegal seek
ESRCH
No such process
ESRMNT
Srmount error
ESTALE
Stale file handle
ESTRPIPE
Streams pipe error
ETIME
Timer expired
ETIMEDOUT
Connection timed out
ETOOMANYREFS
Too many references: cannot splice
ETXTBSY
Text file busy
EUCLEAN
Structure needs cleaning
EUNATCH
Protocol driver not attached
EUSERS
Too many users
EWOULDBLOCK
EXDEV
Cross-device link
EXFULL
Exchange full
SYS_ACCEPT
SYS_ACCEPT4
SYS_ACCESS
SYS_ACCT
SYS_ADD_KEY
SYS_ADJTIMEX
SYS_AFS_SYSCALL
SYS_ALARM
SYS_ARCH_PRCTL
SYS_BIND
SYS_BPF
SYS_BRK
SYS_CACHESTAT
SYS_CAPGET
SYS_CAPSET
SYS_CHDIR
SYS_CHMOD
SYS_CHOWN
SYS_CHROOT
SYS_CLOCK_ADJTIME
SYS_CLOCK_GETRES
SYS_CLOCK_GETTIME
SYS_CLOCK_NANOSLEEP
SYS_CLOCK_SETTIME
SYS_CLONE
SYS_CLONE3
SYS_CLOSE
SYS_CLOSE_RANGE
SYS_CONNECT
SYS_COPY_FILE_RANGE
SYS_CREAT
SYS_CREATE_MODULE
SYS_DELETE_MODULE
SYS_DUP
SYS_DUP2
SYS_DUP3
SYS_EPOLL_CREATE
SYS_EPOLL_CREATE1
SYS_EPOLL_CTL
SYS_EPOLL_CTL_OLD
SYS_EPOLL_PWAIT
SYS_EPOLL_PWAIT2
SYS_EPOLL_WAIT
SYS_EPOLL_WAIT_OLD
SYS_EVENTFD
SYS_EVENTFD2
SYS_EXECVE
SYS_EXECVEAT
SYS_EXIT
SYS_EXIT_GROUP
SYS_FACCESSAT
SYS_FACCESSAT2
SYS_FADVISE64
SYS_FALLOCATE
SYS_FANOTIFY_INIT
SYS_FANOTIFY_MARK
SYS_FCHDIR
SYS_FCHMOD
SYS_FCHMODAT
SYS_FCHMODAT2
SYS_FCHOWN
SYS_FCHOWNAT
SYS_FCNTL
SYS_FDATASYNC
SYS_FGETXATTR
SYS_FINIT_MODULE
SYS_FLISTXATTR
SYS_FLOCK
SYS_FORK
SYS_FREMOVEXATTR
SYS_FSCONFIG
SYS_FSETXATTR
SYS_FSMOUNT
SYS_FSOPEN
SYS_FSPICK
SYS_FSTAT
SYS_FSTATFS
SYS_FSYNC
SYS_FTRUNCATE
SYS_FUTEX
SYS_FUTEX_REQUEUE
SYS_FUTEX_WAIT
SYS_FUTEX_WAITV
SYS_FUTEX_WAKE
SYS_FUTIMESAT
SYS_GETCPU
SYS_GETCWD
SYS_GETDENTS
SYS_GETDENTS64
SYS_GETEGID
SYS_GETEUID
SYS_GETGID
SYS_GETGROUPS
SYS_GETITIMER
SYS_GETPEERNAME
SYS_GETPGID
SYS_GETPGRP
SYS_GETPID
SYS_GETPMSG
SYS_GETPPID
SYS_GETPRIORITY
SYS_GETRANDOM
SYS_GETRESGID
SYS_GETRESUID
SYS_GETRLIMIT
SYS_GETRUSAGE
SYS_GETSID
SYS_GETSOCKNAME
SYS_GETSOCKOPT
SYS_GETTID
SYS_GETTIMEOFDAY
SYS_GETUID
SYS_GETXATTR
SYS_GET_KERNEL_SYMS
SYS_GET_MEMPOLICY
SYS_GET_ROBUST_LIST
SYS_GET_THREAD_AREA
SYS_INIT_MODULE
SYS_INOTIFY_ADD_WATCH
SYS_INOTIFY_INIT
SYS_INOTIFY_INIT1
SYS_INOTIFY_RM_WATCH
SYS_IOCTL
SYS_IOPERM
SYS_IOPL
SYS_IOPRIO_GET
SYS_IOPRIO_SET
SYS_IO_CANCEL
SYS_IO_DESTROY
SYS_IO_GETEVENTS
SYS_IO_PGETEVENTS
SYS_IO_SETUP
SYS_IO_SUBMIT
SYS_IO_URING_ENTER
SYS_IO_URING_REGISTER
SYS_IO_URING_SETUP
SYS_KCMP
SYS_KEXEC_FILE_LOAD
SYS_KEXEC_LOAD
SYS_KEYCTL
SYS_KILL
SYS_LANDLOCK_ADD_RULE
SYS_LANDLOCK_CREATE_RULESET
SYS_LANDLOCK_RESTRICT_SELF
SYS_LCHOWN
SYS_LGETXATTR
SYS_LINK
SYS_LINKAT
SYS_LISTEN
SYS_LISTMOUNT
SYS_LISTXATTR
SYS_LLISTXATTR
SYS_LOOKUP_DCOOKIE
SYS_LREMOVEXATTR
SYS_LSEEK
SYS_LSETXATTR
SYS_LSM_GET_SELF_ATTR
SYS_LSM_LIST_MODULES
SYS_LSM_SET_SELF_ATTR
SYS_LSTAT
SYS_MADVISE
SYS_MAP_SHADOW_STACK
SYS_MBIND
SYS_MEMBARRIER
SYS_MEMFD_CREATE
SYS_MEMFD_SECRET
SYS_MIGRATE_PAGES
SYS_MINCORE
SYS_MKDIR
SYS_MKDIRAT
SYS_MKNOD
SYS_MKNODAT
SYS_MLOCK
SYS_MLOCK2
SYS_MLOCKALL
SYS_MMAP
SYS_MODIFY_LDT
SYS_MOUNT
SYS_MOUNT_SETATTR
SYS_MOVE_MOUNT
SYS_MOVE_PAGES
SYS_MPROTECT
SYS_MQ_GETSETATTR
SYS_MQ_NOTIFY
SYS_MQ_OPEN
SYS_MQ_TIMEDRECEIVE
SYS_MQ_TIMEDSEND
SYS_MQ_UNLINK
SYS_MREMAP
SYS_MSEAL
SYS_MSGCTL
SYS_MSGGET
SYS_MSGRCV
SYS_MSGSND
SYS_MSYNC
SYS_MUNLOCK
SYS_MUNLOCKALL
SYS_MUNMAP
SYS_NAME_TO_HANDLE_AT
SYS_NANOSLEEP
SYS_NEWFSTATAT
SYS_NFSSERVCTL
SYS_OPEN
SYS_OPENAT
SYS_OPENAT2
SYS_OPEN_BY_HANDLE_AT
SYS_OPEN_TREE
SYS_PAUSE
SYS_PERF_EVENT_OPEN
SYS_PERSONALITY
SYS_PIDFD_GETFD
SYS_PIDFD_OPEN
SYS_PIDFD_SEND_SIGNAL
SYS_PIPE
SYS_PIPE2
SYS_PIVOT_ROOT
SYS_PKEY_ALLOC
SYS_PKEY_FREE
SYS_PKEY_MPROTECT
SYS_POLL
SYS_PPOLL
SYS_PRCTL
SYS_PREAD64
SYS_PREADV
SYS_PREADV2
SYS_PRLIMIT64
SYS_PROCESS_MADVISE
SYS_PROCESS_MRELEASE
SYS_PROCESS_VM_READV
SYS_PROCESS_VM_WRITEV
SYS_PSELECT6
SYS_PTRACE
SYS_PUTPMSG
SYS_PWRITE64
SYS_PWRITEV
SYS_PWRITEV2
SYS_QUERY_MODULE
SYS_QUOTACTL
SYS_QUOTACTL_FD
SYS_READ
SYS_READAHEAD
SYS_READLINK
SYS_READLINKAT
SYS_READV
SYS_REBOOT
SYS_RECVFROM
SYS_RECVMMSG
SYS_RECVMSG
SYS_REMAP_FILE_PAGES
SYS_REMOVEXATTR
SYS_RENAME
SYS_RENAMEAT
SYS_RENAMEAT2
SYS_REQUEST_KEY
SYS_RESTART_SYSCALL
SYS_RMDIR
SYS_RSEQ
SYS_RT_SIGACTION
SYS_RT_SIGPENDING
SYS_RT_SIGPROCMASK
SYS_RT_SIGQUEUEINFO
SYS_RT_SIGRETURN
SYS_RT_SIGSUSPEND
SYS_RT_SIGTIMEDWAIT
SYS_RT_TGSIGQUEUEINFO
SYS_SCHED_GETAFFINITY
SYS_SCHED_GETATTR
SYS_SCHED_GETPARAM
SYS_SCHED_GETSCHEDULER
SYS_SCHED_GET_PRIORITY_MAX
SYS_SCHED_GET_PRIORITY_MIN
SYS_SCHED_RR_GET_INTERVAL
SYS_SCHED_SETAFFINITY
SYS_SCHED_SETATTR
SYS_SCHED_SETPARAM
SYS_SCHED_SETSCHEDULER
SYS_SCHED_YIELD
SYS_SECCOMP
SYS_SECURITY
SYS_SELECT
SYS_SEMCTL
SYS_SEMGET
SYS_SEMOP
SYS_SEMTIMEDOP
SYS_SENDFILE
SYS_SENDMMSG
SYS_SENDMSG
SYS_SENDTO
SYS_SETDOMAINNAME
SYS_SETFSGID
SYS_SETFSUID
SYS_SETGID
SYS_SETGROUPS
SYS_SETHOSTNAME
SYS_SETITIMER
SYS_SETNS
SYS_SETPGID
SYS_SETPRIORITY
SYS_SETREGID
SYS_SETRESGID
SYS_SETRESUID
SYS_SETREUID
SYS_SETRLIMIT
SYS_SETSID
SYS_SETSOCKOPT
SYS_SETTIMEOFDAY
SYS_SETUID
SYS_SETXATTR
SYS_SET_MEMPOLICY
SYS_SET_MEMPOLICY_HOME_NODE
SYS_SET_ROBUST_LIST
SYS_SET_THREAD_AREA
SYS_SET_TID_ADDRESS
SYS_SHMAT
SYS_SHMCTL
SYS_SHMDT
SYS_SHMGET
SYS_SHUTDOWN
SYS_SIGALTSTACK
SYS_SIGNALFD
SYS_SIGNALFD4
SYS_SOCKET
SYS_SOCKETPAIR
SYS_SPLICE
SYS_STAT
SYS_STATFS
SYS_STATMOUNT
SYS_STATX
SYS_SWAPOFF
SYS_SWAPON
SYS_SYMLINK
SYS_SYMLINKAT
SYS_SYNC
SYS_SYNCFS
SYS_SYNC_FILE_RANGE
SYS_SYSFS
SYS_SYSINFO
SYS_SYSLOG
SYS_TEE
SYS_TGKILL
SYS_TIME
SYS_TIMERFD_CREATE
SYS_TIMERFD_GETTIME
SYS_TIMERFD_SETTIME
SYS_TIMER_CREATE
SYS_TIMER_DELETE
SYS_TIMER_GETOVERRUN
SYS_TIMER_GETTIME
SYS_TIMER_SETTIME
SYS_TIMES
SYS_TKILL
SYS_TRUNCATE
SYS_TUXCALL
SYS_UMASK
SYS_UMOUNT2
SYS_UNAME
SYS_UNLINK
SYS_UNLINKAT
SYS_UNSHARE
SYS_URETPROBE
SYS_USELIB
SYS_USERFAULTFD
SYS_USTAT
SYS_UTIME
SYS_UTIMENSAT
SYS_UTIMES
SYS_VFORK
SYS_VHANGUP
SYS_VMSPLICE
SYS_VSERVER
SYS_WAIT4
SYS_WAITID
SYS_WRITE
SYS_WRITEV
SYS__SYSCTL

Functions§

_sysctl⚠
Read/write system parameters.
accept⚠
Accept a connection on a socket.
accept4⚠
Accept a connection on a socket.
access⚠
Check user’s permission for a file.
acct⚠
Switch process accounting.
add_key⚠
Add a key to the kernel’s key management facility.
adjtimex⚠
Tune kernel clock. Returns clock state on success.
alarm⚠
Set an alarm clock for delivery of a signal.
arch_prctl⚠
Set architecture-specific thread state.
bind⚠
Bind a name to a socket.
bpf⚠
Perform a command on an extended BPF map or program
brk⚠
Change data segment size.
cachestat⚠
cachestat() returns the page cache statistics of a file in the bytes range specified by off and len.
capget⚠
Get capabilities of thread.
capset⚠
Set capabilities of thread.
chdir⚠
Change working directory.
chmod⚠
Change permissions of a file.
chown⚠
Change ownership of a file.
chroot⚠
Change the root directory.
clock_adjtime⚠
Tune kernel clock.
clock_getres⚠
Get resolution(precision) of the specific clock.
clock_gettime⚠
Get time of specific clock.
clock_nanosleep⚠
High resolution sleep with a specific clock.
clock_settime⚠
Set time of specific clock.
clone⚠
Create a child process.
clone3⚠
New api to create child process.
close⚠
Close a file descriptor.
close_range⚠
Close all file descriptors in a given range
connect⚠
Initialize a connection on a socket.
copy_file_range⚠
Copy a range of data from one file to another.
creat⚠
Create a file.
delete_module⚠
Unlock a kernel module.
dup⚠
Create a copy of the file descriptor oldfd, using the lowest available file descriptor.
dup2⚠
Create a copy of the file descriptor oldfd, using the speficified file descriptor newfd.
dup3⚠
Save as dup2(), but can set the close-on-exec flag on newfd.
epoll_create⚠
Open an epoll file descriptor.
epoll_create1⚠
Open an epoll file descriptor.
epoll_ctl⚠
Control interface for an epoll file descriptor.
epoll_pwait⚠
Wait for an I/O event on an epoll file descriptor.
epoll_pwait2⚠
Wait for an I/O event on an epoll file descriptor.
epoll_wait⚠
Wait for an I/O event on an epoll file descriptor.
eventfd⚠
Create a file descriptor for event notification.
eventfd2⚠
Create a file descriptor for event notification.
execve⚠
Execute a new program.
execveat⚠
Execute a new program relative to a directory file descriptor.
exit⚠
Terminate current process.
exit_group⚠
Exit all threads in a process’s thread group.
faccessat⚠
Check user’s permission for a file.
faccessat2⚠
Check user’s permission for a file.
fadvise64⚠
Predeclare an access pattern for file data.
fallocate⚠
Manipulate file space.
fanotify_init⚠
Create and initialize fanotify group.
fanotify_mark⚠
Add, remove, or modify an fanotify mark on a filesystem object
fchdir⚠
Change working directory.
fchmod⚠
Change permissions of a file.
fchmodat⚠
Change permissions of a file.
fchmodat2⚠
Change permissions of a file.
fchown⚠
Change ownership of a file.
fchownat⚠
Change ownership of a file.
fcntl⚠
manipulate file descriptor.
fdatasync⚠
Flush all modified in-core data (exclude metadata) refered by fd to disk.
fgetxattr⚠
Get extended attribute value.
finit_module⚠
Load a kernel module.
flistxattr⚠
List extended attribute names.
flock⚠
Apply or remove an advisory lock on an open file.
fork⚠
Create a child process.
fremovexattr⚠
Remove an extended attribute.
fsconfig⚠
Set parameters and trigger actions on a context.
fsetxattr⚠
Set extended attribute value.
fsmount⚠
Create a kernel mount representation for a new, prepared superblock.
fsopen⚠
Open a filesystem by name so that it can be configured for mounting.
fspick⚠
Pick a superblock into a context for reconfiguration.
fstat⚠
Get file status about a file descriptor.
fstatfs⚠
Get filesystem statistics.
fsync⚠
Flush all modified in-core data refered by fd to disk.
ftruncate⚠
Truncate an opened file to a specified length.
futex⚠
Fast user-space locking.
futex_requeue⚠
Requeue a waiter from one futex to another.
futex_wait⚠
Wait on a futex.
futex_waitv⚠
Wait on a list of futexes.
futex_wake⚠
Wake a number of futexes.
futimesat⚠
Change timestamp of a file relative to a directory file discriptor.
get_mempolicy⚠
Retrieve NUMA memory policy for a thread
get_robust_list⚠
Get the robust-futex list head of a task.
get_thread_area⚠
Get thread-local storage information.
getcpu⚠
Determine CPU and NUMA node on which the calling thread is running.
getcwd⚠
Get current working directory.
getdents⚠
Get directory entries.
getdents64⚠
Get directory entries.
getegid⚠
Get the effective group ID of the calling process.
geteuid⚠
Get the effective user ID of the calling process.
getgid⚠
Get the real group ID of the calling process.
getgroups⚠
Get list of supplementary group Ids.
getitimer⚠
Get value of an interval timer.
getpeername⚠
Get name of connected peer socket.
getpgid⚠
Returns the PGID(process group ID) of the process specified by pid.
getpgrp⚠
Get the process group ID of the calling process.
getpid⚠
Get the process ID (PID) of the calling process.
getppid⚠
Get the process ID of the parent of the calling process.
getpriority⚠
Get program scheduling priority.
getrandom⚠
Obtain a series of random bytes.
getresgid⚠
Get real, effect and saved group ID.
getresuid⚠
Get real, effect and saved user ID.
getrlimit⚠
Get resource limit.
getrusage⚠
Get resource usage.
getsid⚠
Get session Id.
getsockname⚠
Get current address to which the socket sockfd is bound.
getsockopt⚠
Get options on sockets
gettid⚠
Get the caller’s thread ID (TID).
gettimeofday⚠
Get time.
getuid⚠
Get the real user ID of the calling process.
getxattr⚠
Get extended attribute value.
init_module⚠
Load a kernel module.
inotify_add_watch⚠
Add a watch to an initialized inotify instance.
inotify_init⚠
Initialize an inotify instance.
inotify_init1⚠
Initialize an inotify instance.
inotify_rm_watch⚠
Remove an existing watch from an inotify instance.
io_cancel⚠
Attempts to cancel an iocb previously passed to io_submit.
io_destroy⚠
Destroy the aio_context specified.
io_getevents⚠
Attempts to read at least min_nr events and up to nr events from the completion queue for the aio_context specified by ctx_id.
io_pgetevents⚠
Read asynchronous I/O events from the completion queue
io_setup⚠
Create an asynchronous I/O context.
io_submit⚠
Queue the nr iocbs pointed to by iocb for processing.
io_uring_enter⚠
Initiate and/or complete asynchronous I/O
io_uring_register⚠
Register files or user buffers for asynchronous I/O
io_uring_setup⚠
Setup a context for performing asynchronous I/O.
ioctl⚠
Control device.
ioperm⚠
Set port input/output permissions.
iopl⚠
Change I/O privilege level.
ioprio_get⚠
Get I/O scheduling class and priority.
ioprio_set⚠
Set I/O scheduling class and priority.
kcmp⚠
Compare two processes to determine if they share a kernel resource.
kexec_file_load⚠
Load a new kernel for later execution.
kexec_load⚠
Load a new kernel for later execution.
keyctl⚠
Manipulate the kernel’s key management facility.
kill⚠
Send signal to a process.
lchown⚠
Change ownership of a file. Does not deference symbolic link.
lgetxattr⚠
Get extended attribute value.
link⚠
Make a new name for a file.
linkat⚠
Make a new name for a file.
listen⚠
Listen for connections on a socket.
listmount⚠
listxattr⚠
List extended attribute names.
llistxattr⚠
List extended attribute names.
lookup_dcookie⚠
Return a directory entry’s path.
lremovexattr⚠
Remove an extended attribute.
lseek⚠
Reposition file offset.
lsetxattr⚠
Set extended attribute value.
lstat⚠
Get file status about a file, without following symbolic.
madvise⚠
Give advice about use of memory.
map_shadow_stack⚠
mbind⚠
Set memory policy for a memory range.
membarrier⚠
Issue memory barriers on a set of threads.
memfd_create⚠
Create an anonymous file.
memfd_secret⚠
create an anonymous RAM-based file to access secret memory regions.
migrate_pages⚠
Move all pages in a process to another set of nodes
mincore⚠
mincore() returns the memory residency status of the pages in the current process’s address space specified by [addr, addr + len).
mkdir⚠
Create a directory.
mkdirat⚠
Create a directory.
mknod⚠
Create a special or ordinary file.
mknodat⚠
Create a special or ordinary file.
mlock⚠
Lock memory.
mlock2⚠
Lock memory.
mlockall⚠
Lock memory.
mmap⚠
Map files or devices into memory.
mount⚠
Mount filesystem.
move_mount⚠
Move a mount from one place to another.
move_pages⚠
Move individual pages of a process to another node
mprotect⚠
Set protection on a region of memory.
mq_getsetattr⚠
Get/set message queue attributes
mq_notify⚠
Register for notification when a message is available
mq_open⚠
Open a POSIX message queue.
mq_timedreceive⚠
Receive a message from a message queue
mq_timedsend⚠
Send message to a message queue.
mq_unlink⚠
Remove a message queue.
mremap⚠
Remap a virtual memory address
mseal⚠
Seals the VM’s metadata from selected syscalls.
msgctl⚠
System V message control operations.
msgget⚠
Get a System V message queue identifier.
msgrcv⚠
Receive messages from a System V message queue.
msgsnd⚠
Append the message to a System V message queue.
msync⚠
Synchronize a file with memory map.
munlock⚠
Unlock memory.
munlockall⚠
Unlock memory.
munmap⚠
Unmap files or devices from memory.
name_to_handle_at⚠
Obtain handle for a filename
nanosleep⚠
High resolution sleep.
new_sigaction
newfstatat⚠
Get file status.
open⚠
Open and possibly create a file.
open_by_handle_at⚠
Obtain handle for an open file
open_tree⚠
openat⚠
Open and possibly create a file within a directory.
openat2⚠
Open and possibly create a file (extended)
pause⚠
Pause the calling process to sleep until a signal is delivered.
perf_event_open⚠
Set up performance monitoring.
personality⚠
Set the process execution domain.
pidfd_getfd⚠
Obtain a duplicate of another process’s file descriptor.
pidfd_open⚠
Obtain a file descriptor that refers to a process.
pidfd_send_signal⚠
Signal a process through a pidfd.
pipe⚠
Create a pipe.
pipe2⚠
Create a pipe.
pivot_root⚠
Change the root filesystem.
pkey_alloc⚠
Create a new protection key.
pkey_free⚠
Free a protection key.
pkey_mprotect⚠
Set protection on a region of memory.
poll⚠
Wait for some event on file descriptors.
ppoll⚠
Wait for some event on a file descriptor.
prctl⚠
Operations on a process.
pread64⚠
Read from a file descriptor without changing file offset.
preadv⚠
Read from a file descriptor without changing file offset.
preadv2⚠
Read from a file descriptor without changing file offset.
prlimit64⚠
Get/set the resource limits of an arbitary process.
process_vm_readv⚠
Transfer data between process address spaces
process_vm_writev⚠
Transfer data between process address spaces
pselect6⚠
Sychronous I/O multiplexing.
ptrace⚠
Process trace.
pwrite64⚠
Write to a file descriptor without changing file offset.
pwritev⚠
Write to a file descriptor without changing file offset.
pwritev2⚠
Write to a file descriptor without changing file offset.
quotactl⚠
Manipulate disk quotes.
quotactl_fd⚠
Manipulate disk quotes.
read⚠
Read from a file descriptor.
readahead⚠
Initialize file head into page cache.
readlink⚠
Read value of a symbolic link.
readlinkat⚠
Read value of a symbolic link.
readv⚠
Read from a file descriptor into multiple buffers.
reboot⚠
Reboot or enable/disable Ctrl-Alt-Del.
recvfrom⚠
Receive a message from a socket.
recvmmsg⚠
Receives multile messages on a socket
recvmsg⚠
Receive a msg from a socket.
remap_file_pages⚠
Create a nonlinear file mapping.
removexattr⚠
Remove an extended attribute.
rename⚠
Change name or location of a file.
renameat⚠
Change name or location of a file.
renameat2⚠
Change name or location of a file.
request_key⚠
Request a key from kernel’s key management facility.
restart_syscall⚠
Restart a system call after interruption by a stop signal.
rmdir⚠
Delete a directory.
rseq⚠
Setup restartable sequences for caller thread.
rt_sigaction⚠
Examine and change a signal action.
rt_sigpending⚠
Examine pending signals.
rt_sigprocmask⚠
Change the list of currently blocked signals.
rt_sigqueueinfo⚠
Queue a signal and data.
rt_sigreturn⚠
Return from signal handler and cleanup stack frame.
rt_sigsuspend⚠
Wait for a signal.
rt_sigtimedwait⚠
Synchronously wait for queued signals.
rt_tgsigqueueinfo⚠
Queue a signal and data.
sched_get_priority_max⚠
Get static priority max value.
sched_get_priority_min⚠
Get static priority min value.
sched_getaffinity⚠
Get a thread’s CPU affinity mask.
sched_getattr⚠
Get scheduling policy and attributes
sched_getparam⚠
Get scheduling paramters.
sched_getscheduler⚠
Get scheduling parameter.
sched_rr_get_interval⚠
Get the SCHED_RR interval for the named process.
sched_setaffinity⚠
Set a thread’s CPU affinity mask.
sched_setattr⚠
Set the RT priority of a thread.
sched_setparam⚠
Set scheduling paramters.
sched_setscheduler⚠
Set scheduling parameter.
sched_yield⚠
Yield the processor.
seccomp⚠
Operate on Secure Computing state of the process.
select⚠
Sychronous I/O multiplexing.
semctl⚠
System V semaphore control operations
semget⚠
Get a System V semphore set identifier.
semop⚠
System V semphore operations.
semtimedop⚠
System V semaphore operations
sendfile⚠
Transfer data between two file descriptors.
sendmmsg⚠
Send multiple messages on a socket
sendmsg⚠
Send a message on a socket.
sendto⚠
Send a message on a socket.
set_mempolicy⚠
Set default NUMA memory policy for a thread and its children
set_mempolicy_home_node⚠
set_robust_list⚠
Set the robust-futex list head of a task.
set_thread_area⚠
Set thread-local storage information.
set_tid_address⚠
Set pointer to thread ID.
setdomainname⚠
Set NIS domain name.
setfsgid⚠
Set group identify used for filesystem checkes.
setfsuid⚠
Set user identify used for filesystem checkes.
setgid⚠
Set the group ID of the calling process to gid.
setgroups⚠
Set list of supplementary group Ids.
sethostname⚠
Set hostname.
setitimer⚠
Set value of an interval timer.
setns⚠
Reassociate thread with a namespace.
setpgid⚠
Set the process group ID (PGID) of the process specified by pid to pgid.
setpriority⚠
Set program scheduling priority.
setregid⚠
Set real and effective group IDs of the calling process.
setresgid⚠
Set real, effective and saved group Ids of the calling process.
setresuid⚠
Set real, effective and saved user Ids of the calling process.
setreuid⚠
Set real and effective user IDs of the calling process.
setrlimit⚠
Set resource limit.
setsid⚠
Create a new session if the calling process is not a process group leader.
setsockopt⚠
Set options on sockets.
settimeofday⚠
Set system time and timezone.
setuid⚠
Set user ID of the calling process to uid.
setxattr⚠
Set extended attribute value.
shmat⚠
Attach the System V shared memory segment.
shmctl⚠
System V shared memory control.
shmdt⚠
Detach the System V shared memory segment.
shmget⚠
Allocates a System V shared memory segment.
shutdown⚠
Shutdown part of a full-duplex connection.
sigaltstack⚠
Get/set signal stack context.
signalfd⚠
Create a file descriptor to accept signals.
signalfd4⚠
Create a file descriptor to accept signals.
socket⚠
Create an endpoint for communication.
socketpair⚠
Create a pair of connected socket.
splice⚠
Splice data to/from pipe.
stat⚠
Get file status about a file.
statfs⚠
Get filesystem statistics.
statmount⚠
statx⚠
Get file status about a file (extended).
strerror
Get errno description.
swapoff⚠
Stop swapping to file/device.
swapon⚠
Start swapping to file/device.
symlink⚠
Make a new name for a file.
symlinkat⚠
Make a new name for a file.
sync⚠
Commit filesystem caches to disk.
sync_file_range⚠
Sync a file segment to disk
syncfs⚠
Commit filesystem cache related to fd to disk.
sysfs⚠
Get filesystem type information.
sysinfo⚠
Return system information.
syslog⚠
Read and/or clear kernel message ring buffer.
tee⚠
Duplicate pipe content.
tgkill⚠
Send a signal to a thread.
time⚠
Get time in seconds.
timer_create⚠
Create a per-process timer
timer_delete⚠
Delete a per-process timer
timer_getoverrun⚠
Get overrun count for a per-process timer.
timer_gettime⚠
Fetch state of per-process timer>
timer_settime⚠
Arm/disarm state of per-process timer.
timerfd_create⚠
Create a timer that notifies via a file descriptor.
timerfd_gettime⚠
Get current timer via a file descriptor.
timerfd_settime⚠
Set current timer via a file descriptor.
times⚠
Get process times.
tkill⚠
Send a signal to a thread (obsolete).
truncate⚠
Truncate a file to a specified length.
umask⚠
Set file mode creation mask.
umount2⚠
Unmount filesystem.
uname⚠
Get name and information about current kernel.
unlink⚠
Delete a name and possibly the file it refers to.
unlinkat⚠
Delete a name and possibly the file it refers to.
unshare⚠
Disassociate parts of the process execution context
uselib⚠
Load shared library.
userfaultfd⚠
Create a file descriptor to handle page faults in user space.
ustat⚠
Get filesystem statistics
utime⚠
Change file last access and modification time.
utimensat⚠
Change time timestamps with nanosecond precision.
utimes⚠
Change file last access and modification time.
vfork⚠
Create a child process and wait until it is terminated.
vhangup⚠
Virtually hang up the current terminal.
vmsplice⚠
Splice user page into a pipe.
wait4⚠
Wait for process to change state.
waitid⚠
Wait for process to change state.
write⚠
Write to a file descriptor.
writev⚠
Write to a file descriptor from multiple buffers.