Linux System Call Tables
Numbers, names and arguments of the x86-64 Linux system calls, one table per kernel version. The tables are generated from the kernel sources, so each entry links to the place where the system call is defined.
Kernel versions
Linux 7.2
421 entries (338 common, 47 x86-64 only, 36 x32 only), highest x86-64 number 471.
Generated from the linux-7.2.12 sources.
Linux 6.18
419 entries (336 common, 47 x86-64 only, 36 x32 only), highest x86-64 number 469.
Generated from the linux-6.18.58 sources.
Linux 5.15
396 entries (313 common, 47 x86-64 only, 36 x32 only), highest x86-64 number 448.
Generated from the linux-5.15.223 sources.
Calling convention (x86-64)
| Instruction | Number | Arg 1 | Arg 2 | Arg 3 | Arg 4 | Arg 5 | Arg 6 | Return | Clobbered |
|---|---|---|---|---|---|---|---|---|---|
| syscall | rax | rdi | rsi | rdx | r10 | r8 | r9 | rax | rcx, r11 |
A return value between
-4095 and -1 is an error (-errno); libc turns it into -1 and sets errno.
syscall saves the return address in rcx and RFLAGS in r11, which is why the 4th argument goes in r10 instead of rcx as in the function call ABI.
The ABI column of syscall_64.tbl tells who can use an entry: common for both x86-64 and x32, 64 for x86-64 only, x32 for x32 only
(x32 numbers are or-ed with 0x40000000). Other architectures are on the calling conventions cheat sheet.Changes between versions
System call numbers never change once allocated: new system calls get the next free number, removed ones become reserved.
Linux 6.18 → 7.2 +2 / −0
Linux 5.15 → 6.18 +23 / −0
335 uretprobe336 uprobe449 futex_waitv450 set_mempolicy_home_node451 cachestat452 fchmodat2453 map_shadow_stack454 futex_wake455 futex_wait456 futex_requeue457 statmount458 listmount459 lsm_get_self_attr460 lsm_set_self_attr461 lsm_list_modules462 mseal463 setxattrat464 getxattrat465 listxattrat466 removexattrat467 open_tree_attr468 file_getattr469 file_setattr
Linux 4.7 → 5.15 +31 / −0
329 pkey_mprotect330 pkey_alloc331 pkey_free332 statx333 io_pgetevents334 rseq424 pidfd_send_signal425 io_uring_setup426 io_uring_enter427 io_uring_register428 open_tree429 move_mount430 fsopen431 fsconfig432 fsmount433 fspick434 pidfd_open435 clone3436 close_range437 openat2438 pidfd_getfd439 faccessat2440 process_madvise441 epoll_pwait2442 mount_setattr443 quotactl_fd444 landlock_create_ruleset445 landlock_add_rule446 landlock_restrict_self447 memfd_secret448 process_mrelease