Syscalls
This website lists every system call for each architecture supported by the Linux kernel. The data is extracted directly from the last version of the kernel source code. The script that does this is executed once a week, therefore it should always be up-to-date.
Download every syscall list as CSV
Generic Architectures
Specific Architectures
- alpha
- arm
- arm64
- arm_eabi
- arm_oabi
- i386
- m68k
- microblaze
- mips_n32
- mips_n64
- mips_o32
- parisc_32
- parisc_64
- powerpc_32
- powerpc_64
- powerpc_spu
- s390_32
- s390_64
- sh
- sparc_32
- sparc_64
- x32
- x86_64
- xtensa
What is a syscall?
A system call is a function provided by the kernel that can be
used by user-space programs. It is the only way for a program to
interact with the kernel. For example, if a program wants to
write something to a file, it will have to use the
write
syscall. The program will pass the file
descriptor, the buffer and the size of the buffer to the kernel
through the syscall. The kernel will then write the content of
the buffer to the file and return the number of bytes written.
Why so many lists?
For historical and technical reasons, the Linux kernel supports a lot of architectures with different system calls sets. Some might be implemented differently, some might not be implemented at all. Or they might simply be ordered differently. However not every architecture has its own syscall list. Some of them share the same generic list, either the 32bit or the 64bit version. They are the standard API for newer architectures.
Listing the kernel syscalls
In order to list the syscalls, the script parses the kernel
source code. It looks for the table files for each specific
architecture. These files are located in the arch
directory of the kernel source code. From there, taking the
Kconfig options into account, it will extract the syscall
parameters from the C files.
The generic syscalls lists are directly based on the generic
unistd.h
header file. It is preprocessed to make
sure that every optional syscall is included. The script will
then extract the parameters from the C files as well.
Syscall status
The syscall lists are always complete, meaning that there won't be any missing syscall even when they are not found. However the prototype can be missing or incomplete.
Therefore each syscall has a status. You can find it in the csv
files. On the website non-implemented syscalls are not shown and
missing prototype information is symbolized by a ?
.
The status can be one of the following:
-
ok
: The syscall was successfully found and parsed. All its parameters are listed and named. (total: 10050) -
anon
: The syscall was successfully found and parsed but some of its parameters are not named. (total: 0) -
noparam
: The syscall was successfully found but its parameters are not listed because the script couldn't parse them. (total: 5) -
notimp
: The syscall is not implemented. (total: 468) -
missing
: The syscall was not found in the source code. This is a failure of the parsing script. (total: 3)
Contributing
If you find any error, please feel free to report it on the github repository. Pull requests are also welcome.