lutfisk.net

# Linux system call table for AMD64

Be aware that this API can change, and depending on LibC is usually preferred, however much it sucks.

Includes the first 334 of 439 calls as of 2025-02-09.


Return values are passed in RAX, with values above 0xFFFFFFFFFFFFF000 (unsigned negative 4096) being error codes equivalent to those of LibC's errno after a sign flip by a negq instruction.

SyscallRAXRDIRSIRDXR10R8R9
read0FDBUF*SIZE
write1FDBUF*SIZE
open2PATH*FLAGSMODE
close3FD
stat4PATH*STATBUF*
fstat5FDSTATBUF*
lstat6PATH*STATBUF*
poll7POLLFD*COUNTTIMEOUT
lseek8FDOFFSETORIGIN
mmap9ADDR*SIZEPERMITFLAGSFDOFFSET
mprotect10ADDR*SIZEPERMIT
munmap11ADDR*SIZE
brk12SIZE
rt_sigaction13SIGACT*OACT*COUNT
rt_sigprocmask14HOWSET*OSET*COUNT
rt_sigreturn15UNUSED
ioctl16FDCMDARG
pread6417FDBUF*SIZEOFFSET
pwrite6418FDBUF*SIZEOFFSET
readv19FDIOVEC*COUNT
writev20FDIOVEC*COUNT
access21PATH*MODE
pipe22FD*MODE
select23COUNTIFDSET*OFDSET*EXPFDSET*TIMEVAL*
sched_yield24
mremap25ADDR*SIZENEWSIZEFLAGSNEWADDR*
msync26ADDR*SIZEFLAGS
mincore27ADDR*SIZECHARVEC*
madvise28ADDR*SIZEBEHAVIOUR
shmget29KEYSIZEFLAGS
shmat30IDADDR*FLAGS
shmctl31IDCMDBUF*
dup32FD
dup233FDNEWFD
pause34
nanosleep35RQTP*RMTP*
getitimer36WHICHVAL*
alarm37SEC
setitimer38WHICHVAL*OVAL*
getpid39
sendfile40OFDIFDOFFSET*SIZE
socket41FAMILYTYPEPROTO
connect42FDSOCKADDR*ADDRLEN
accept43FDSOCKADDR*ADDRLEN*
sendto44FDBUF*SIZEFLAGSSOCKADDR*ADDRLEN
recvfrom45FDBUF*SIZEFLAGSSOCKADDR*ADDRLEN
sendmsg46FDMSG*FLAGS
recvmsg47FDMSG*FLAGS
shutdown48FDHOW
bind49FDSOCKADDR*ADDRLEN
listen50FDBACKLOG
getsockname51FDSOCKADDR*ADDRLEN
getpeername52FDSOCKADDR*ADDRLEN
socketpair53FAMILYTYPEPROTOFD*
setsockopt54FDLEVELOPTVAL*SIZE
getsockopt55FDLEVELOPTVAL*SIZE*
clone56FLAGSNEWSPPARENTID*CHILDID*TID
fork57
vfork58
execve59PATH*ARGV**ENV**
exit60CODE
wait461PIDSTATADDR*OPTRUSAGE*
kill62PIDSIG
uname63NAME*
semget64KEYCOUNTFLAGS
semop65IDSEMOPS*COUNT
semctl66IDCOUNTCMDARG
shmdt67ADDR*
msgget68KEYFLAGS
msgsnd69IDBUF*SIZEFLAGS
msgrcv70IDBUF*SIZETYPEFLAGS
msgctl71IDCMDBUF*
fcntl72FDCMDARG
flock73FDCMD
fsync74FD
fdatasync75FD
truncate76PATH*SIZE
ftruncate77FDSIZE
getdents78FDDIRENT*COUNT
getcwd79BUF*SIZE
chdir80PATH*
fchdir81FD
rename82PATH*NEWPATH*
mkdir83PATH*MODE
rmdir84PATH*
creat85PATH*MODE
link86PATH*NEWPATH*
unlink87PATH*
symlink88PATH*NEWPATH*
readlink89PATH*BUF*SIZE
chmod90PATH*MODE
fchmod91FDMODE
chown92PATH*USRIDGRPID
fchown93FDUSRIDGRPID
lchown94PATH*USRIDGRPID
umask95MASK
gettimeofday96TIMEVAL*TIMEZONE*
getrlimit97RESOURCERLIMIT*
getrusage98WHORUSAGE*
sysinfo99SYSINFO*
times100TMS*
ptrace101REQUESTPIDADDR*DATA*
getuid102
syslog103TYPEBUF*SIZE
getgid104
setuid105USRID
setgid106GRPID
geteuid107
getegid108
setpgid109PIDGRPID
getppid110
getpgrp111
setsid112
setreuid113RUSRIDEUSRID
setregid114RGRPIDEGRPID
getgroups115COUNTGRPID*
setgroups116COUNTGRPID*
setresuid117RUSRID*EUSRID*SUSRID*
getresuid118RUSRID*EUSRID*SUSRID*
setresgid119RGRPIDEGRPIDSGRPID
getresgid120RGRPID*EGRPID*SGRPID*
getpgid121PID
setfsuid122USRID
setfsgid123GRPID
getsid124PID
capget125CAPHEADERCAPDATAPTR
capset126CAPHEADERCAPDATAPTR
rt_sigpending127SIGSET*COUNT
rt_sigtimedwait128SIGSET*SIGINFO*TIMESPEC*COUNT
rt_sigqueueinfo129PIDSIGSIGINFO*
rt_sigsuspend130SIGSET*COUNT
sigaltstack131STACK*OSTACK*
utime132PATH*UTIMBUF*
mknod133PATH*MODEDEV
uselib134--DEPRECATED--
personality135PERSONALITY
ustat136DEVUSTATBUF*
statfs137PATH*STATFSBUF*
fstatfs138FDSTATFSBUF*
sysfs139OPTARG1ARG2
getpriority140WHICHWHO
setpriority141WHICHWHONICENESS
sched_setparam142PIDSCHEDPARAM*
sched_getparam143PIDSCHEDPARAM*
sched_setscheduler144PIDPOLICYSCHEDPARAM*
sched_getscheduler145PID
sched_get_priority_max146POLICY
sched_get_priority_min147POLICY
sched_rr_get_interval148PIDTIMESPEC*
mlock149ADDR*SIZE
munlock150ADDR*SIZE
mlockall151FLAGS
munlockall152
vhangup153
modify_ldt154FUNCPTR*BYTES
pivot_root155PATH*OLDPATH*
_sysctl156ARGS*
prctl157OPTARG2ARG3ARG4ARG5
arch_prctl158TASK*CODEADDR*
adjtimex159TIMEX*
setrlimit160RESOURCERLIMIT*
chroot161PATH*
sync162
acct163PATH*
settimeofday164TIMEVAL*TIMEZONE*
mount165DEVPATH*DIRPATH*TYPE*FLAGSDATA*
umount2166PATH*FLAGS
swapon167PATH*FLAGS
swapoff168PATH*
reboot169MAGIC1MAGIC2CMDARG*
sethostname170NAME*SIZE
setdomainname171NAME*SIZE
iopl172LEVELPTREGS*
ioperm173FROMCOUNTTURN_ON
create_module174--REMOVED--
init_module175UMOD*SIZEUARGS*
delete_module176NAME*FLAGS
get_kernel_syms177--REMOVED--
query_module178--REMOVED--
quotactl179CMDSPECIAL*QIDADDR*
nfsservctl180--REMOVED--
getpmsg180--REMOVED--
setpmsg181--REMOVED--
putpmsg182--REMOVED--
afs_syscall183--REMOVED--
tucavall184--REMOVED--
security185--REMOVED--
gettid186
readahead187FDOFFSETCOUNT
setxattr188PATH*NAME*VAL*SIZEFLAGS
lsetxattr189PATH*NAME*VAL*SIZEFLAGS
fsetxattr190FDNAME*VAL*SIZEFLAGS
getxattr191PATH*NAME*OVAL*SIZE
lgetxattr192PATH*NAME*OVAL*SIZE
fgetxattr193FDNAME*OVAL*SIZE
listxattr194PATH*LIST*SIZE
llistxattr195PATH*LIST*SIZE
flistxattr196FDLIST*SIZE
removexattr197PATH*NAME*
lremovexattr198PATH*NAME*
fremovexattr199FDNAME*
tkill200PIDSIG
time201TLOC*
futex202UADDR*OPVALUTIME*UADDR2*VAL3
sched_setaffinity203PIDLENUMASK*
sched_getaffinity204PIDLENUMASK*
set_thread_area205UINFO*
io_setup206EVENTSCTX*
io_destroy207CTXID
io_getevents208CTXIDNMINNMAXOEVENT*
io_submit209CTXIDCOUNTIOCB**
io_cancel210CTXIDIOCB*RES*
get_thread_area211UINFO*
lookup_dcookie212COOKIEOPATH*SIZE
epoll_create213SIZE
epoll_ctl_old214?
epoll_wait_old215?
remap_file_pages216ADDR*SIZEPROTOFFSFLAGS
getdents64217FDDIRENT64*COUNT
set_tid_address218TID*
restart_syscall219
semtimedop220SEMIDSEMOPS*COUNTTIMESPEC*
fadvise64221FDOFFSETSIZEADVICETIMESPEC*
timer_create222CLOCKIDEVENTSPEC*OTIMERID*
timer_settime223TIMERIDFLAGSNEW*OLD*
timer_gettime224TIMERIDSETTING*
timer_getoverrun225TIMERID
timer_delete226TIMERID
clock_settime227CLOCKIDTIMESPEC*
clock_gettime228CLOCKIDTIMESPEC*
clock_getres229CLOCKIDTIMESPEC*
clock_nanosleep230CLOCKIDFLAGSTIMESPEC*REMAIN*
exit_group231ERRCODE
epoll_wait232FDEVENT*MAXTIMEOUT
epoll_ctl233FDOPFDEVENT*
tgkill234TGIDPIDSIG
utimes235PATH*TIMEVAL*
vserver236--NOTIMPL--
mbind237ADDR*SIZEMODENMASK*MAXFLAGS
set_mempolicy238POLICYNMASK*MAX
get_mempolicy239OPOLICY*NMASK*MAXADDR*FLAGS
mq_open240NAME*FLAGSMODEATTR*
mq_unlink241NAME*
mq_timedsend242MQDMSG*SIZEPRIORITYTIMESPEC*
mq_timedreceive243MQDMSG*SIZEPRIORITY*TIMESPEC*
mq_notify244MQDSIGEVENT*
mq_getsetattr245MQDATTR*OATTR*
kexec_load246ENTRYCOUNTSEGMENT*FLAGS
waitid247TYPEPIDSIGINFO*OPTRUSAGE*
add_key248TYPE*DESC*PAYLOAD*SIZE
request_key249TYPE*DESC*OCALLOUT*DSTKEYRING
keyctl250OPTARG2ARG3ARG4ARG5
ioprio_set251WHICHWHOPRIORITY
ioprio_get252WHICHWHO
inotify_init253
inotify_add_watch254FDPATH*MASK
inotify_rm_watch255FDWD
migrate_pages256PIDMAXOLD*NEW*
openat257FDPATH*FLAGSMODE
mkdirat258FDPATH*MODE
mknodat259FDPATH*MODEDEV
fchownat260FDPATH*UIDGIDFLAGS
futimesat261FDPATH*TIMEVAL*
newfstatat262FDPATH*STATBUF*FLAGS
unlinkat263FDPATH*FLAGS
renameat264OLDFDOLDPATH*NEWFDNEWPATH*
linkat265OLDFDOLDPATH*NEWFDNEWPATH*FLAGS
symlinkat266OLDPATH*NEWFDNEWPATH*
readlinkat267FDPATH*BUF*SIZE
fchmodat268FDPATH*MODE
faccessat269FDPATH*MODE
pselect6270COUNTFDSET*OFDSET*EFDSET*TIMESPEC*SIGSET*
ppoll271POLLFD*COUNTTIMESPEC*SIGSET*SIZE
unshare272FLAGS
set_robust_list273HEAD*LEN
get_robust_list274PIDHEAD**LEN*
splice275FDINOFFSETINFDOUTOFFSETOUTSIZEFLAGS
tee276FDINFDOUTSIZEFLAGS
sync_file_range277FDOFFSETSIZEFLAGS
vmsplice278FDIOVEC*COUNTFLAGS
move_pages279PIDCOUNTADDR**NODE*STATUS*FLAGS
utimensat280FDPATH*TIMESPEC*FLAGS
epoll_pwait281FDEVENT*MAXTIMEOUTSIGSET*SIZE
signalfd282FDSIGSET*SIZE
timerfd_create283CLOCKIDFLAGS
eventfd284COUNT
fallocate285FDMODEOFFSETSIZE
timerfd_settime286FDFLAGSITIMERSPEC*OITIMERSPEC*
timerfd_gettime287FDFLAGSOITIMERSPEC*
accept4288FDOSOCKADDR*OSIZE*FLAGS
signalfd4289FDSIGSET*SIZEFLAGS
eventfd2290COUNTFLAGS
epoll_create1291FLAGS
dup3292OLDFDNEWFDFLAGS
pipe2293OFD*FLAGS
inotify_init1294FLAGS
preadv295FDIOVEC*COUNTPOSLPOSH
pwritev296FDIOVEC*COUNTPOSLPOSH
rt_tgsigqueueinfo297TGIDPIDSIGSIGINFO*
perf_event_open298ATTR*PIDCPUGROUPFDFLAGS
recvmmsg299FDMSGHDR*COUNTFLAGSTIMESPEC*
fanotify_init300FLAGSEVENTFLAGS
fanotify_mark301FDFLAGSMASKDFDPATH*
prlimit64302PIDRESOURCENEWRLIMIT64*OLDRLIMIT64*
name_to_handle_at303FDPATH*HANDLE*OMNTID*FLAGS
open_by_handle_at304FDPATH*HANDLE*OMNTID*FLAGS
clock_adjtime305CLOCKIDTIMEX*
syncfs306FD
sendmmsg307FDMSGHDR*COUNTFLAGS
setns308FDTYPE
getcpu309OCPU*ONODE*OCACHE*
process_vm_readv310PIDLIOVEC*LCOUNTRIOVEC*RCOUNTFLAGS
process_vm_writev311PIDLIOVEC*LCOUNTRIOVEC*RCOUNTFLAGS
kcmp312PID1PID2TYPEIDX1IDX2
finit_module313FDARGS*FLAGS
sched_setattr314ATTR*FLAGS
sched_getattr315OATTR*SIZEFLAGS
renameat2316OLDFDOLDPATH*NEWFDNEWPATH*FLAGS
seccomp317OPFLAGSARGS*
getrandom318BUF*SIZEFLAGS
memfd_create319NAME*FLAGS
kexec_file_load320KERNELFDINITRDFDCMDLINESZCMDLINE*FLAGS
bpf321CMDATTR*SIZE
execveat322FDPATH*ARGV**ENV**FLAGS
userfaultfd323FLAGS
membarrier324CMDFLAGS
mlock2325ADDR*SIZEFLAGS
copy_file_range326FDINOFFSETINFDOUTOFFSETOUTSIZEFLAGS
preadv2327FDIOVEC*COUNTPOSLPOSHFLAGS
pwritev2328FDIOVEC*COUNTPOSLPOSHFLAGS
pkey_mprotect329ADDR*SIZEPROTPKEY
pkey_alloc330FLAGSACCESS
pkey_free331PKEY
statx332FDPATH*FLAGSMASKSTATXBUF*
io_pgetevents333?
rseq334RSEQ*SIZEFLAGSSIG