Expand description
This library defines syscall numbers and a syscall!
macro for directly
invoking Linux system calls.
The arch
modules document available syscall numbers for all supported
architectures, and the top-level module re-exports syscall numbers for the
current target platform.
Syscall results may be inspected with the Result*
traits.
§Example
let stdout: i32 = 1;
let hello = "Hello, world!\n\0";
let rc = unsafe {
syscall!(SYS_write, stdout, hello.as_ptr(), hello.len())
};
rc.check()?;
§Safety
Very unsafe.
Linux syscalls are low-level primitives that operate without any notion of borrow checking or type safety. It is the caller’s responsibility to ensure parameters have types, values, and lifetimes appropriate to the syscall being invoked.
- The kernel cannot distinguish
*const T
and*mut T
. - Many syscalls accept complex parameters as pointers to a
struct
. The caller must ensure such parameters have appropriate layout and alignment. - Syscalls vary between architectures. The same syscall name may have
a completely different signature even on similar targets, for example
SYS_mmap
onx86
andx86_64
.
Modules§
- arch
- Linux syscall numbers for specific target architectures.
Macros§
- syscall
- Invokes a Linux syscall.
Structs§
- Syscall
- An architecture-specific syscall number.
Constants§
- SYS_
accept - SYS_
accept4 - SYS_
access - SYS_
acct - SYS_
add_ key - SYS_
adjtimex - SYS_
alarm - SYS_
arch_ prctl - SYS_
bind - SYS_bpf
- SYS_brk
- 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_
delete_ module - SYS_dup
- SYS_
dup2 - SYS_
dup3 - SYS_
epoll_ create - SYS_
epoll_ create1 - SYS_
epoll_ ctl - SYS_
epoll_ pwait - SYS_
epoll_ pwait2 - SYS_
epoll_ wait - 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_
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_ waitv - SYS_
futimesat - SYS_
get_ mempolicy - SYS_
get_ robust_ list - SYS_
get_ thread_ area - 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_
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_
init_ module - SYS_
inotify_ add_ watch - SYS_
inotify_ init - SYS_
inotify_ init1 - SYS_
inotify_ rm_ watch - 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_
ioctl - SYS_
ioperm - SYS_
iopl - SYS_
ioprio_ get - SYS_
ioprio_ set - 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_
listxattr - SYS_
llistxattr - SYS_
lookup_ dcookie - SYS_
lremovexattr - SYS_
lseek - SYS_
lsetxattr - SYS_
lstat - SYS_
madvise - 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_
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_
open - SYS_
open_ by_ handle_ at - SYS_
open_ tree - SYS_
openat - SYS_
openat2 - 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_
pwrite64 - SYS_
pwritev - SYS_
pwritev2 - SYS_
quotactl - SYS_
quotactl_ fd - SYS_
read - SYS_
readahead - SYS_
readlink - SYS_
readlinkat - SYS_
readv - SYS_
reboot - SYS_
recvfrom - SYS_
recvmmsg - SYS_
recvmsg - SYS_
removexattr - SYS_
rename - SYS_
renameat - SYS_
renameat2 - SYS_
request_ key - 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_ get_ priority_ max - SYS_
sched_ get_ priority_ min - SYS_
sched_ getaffinity - SYS_
sched_ getattr - SYS_
sched_ getparam - SYS_
sched_ getscheduler - SYS_
sched_ rr_ get_ interval - SYS_
sched_ setaffinity - SYS_
sched_ setattr - SYS_
sched_ setparam - SYS_
sched_ setscheduler - SYS_
sched_ yield - SYS_
seccomp - SYS_
select - SYS_
semctl - SYS_
semget - SYS_
semop - SYS_
semtimedop - SYS_
sendfile - SYS_
sendmmsg - SYS_
sendmsg - SYS_
sendto - SYS_
set_ mempolicy - SYS_
set_ mempolicy_ home_ node - SYS_
set_ robust_ list - SYS_
set_ thread_ area - SYS_
set_ tid_ address - 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_
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_
statx - SYS_
swapoff - SYS_
swapon - SYS_
symlink - SYS_
symlinkat - SYS_
sync - SYS_
sync_ file_ range - SYS_
syncfs - SYS_
sysinfo - SYS_
syslog - SYS_tee
- SYS_
tgkill - SYS_
time - SYS_
timer_ create - SYS_
timer_ delete - SYS_
timer_ getoverrun - SYS_
timer_ gettime - SYS_
timer_ settime - SYS_
timerfd_ create - SYS_
timerfd_ gettime - SYS_
timerfd_ settime - SYS_
times - SYS_
tkill - SYS_
truncate - SYS_
umask - SYS_
umount2 - SYS_
uname - SYS_
unlink - SYS_
unlinkat - SYS_
unshare - SYS_
userfaultfd - SYS_
ustat - SYS_
utime - SYS_
utimensat - SYS_
utimes - SYS_
vfork - SYS_
vhangup - SYS_
vmsplice - SYS_
wait4 - SYS_
waitid - SYS_
write - SYS_
writev
Traits§
- Result
- Check whether a syscall succeeded or failed.
- Result32
- Interpret a syscall result as a 32-bit integer.
- Result64
- Interpret a syscall result as a 64-bit integer.
- Result
Ptr - Interpret a syscall result as a pointer.
- Result
Size - Interpret a syscall result as a pointer-sized integer.