Syscalls - Home

Last update: Mon, 16 Dec 2024 07:02:30 +0000

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

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:

Contributing

If you find any error, please feel free to report it on the github repository. Pull requests are also welcome.