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.