A small web application that lists the linux kernel syscalls for each available architecture. It does this with a script that parses the kernel's source code. Then static html pages are generated from the collected data.
The main goal of this project is to automate the process so that this resource can be kept up-to-date without manual intervention. This application is up and running at the following address:
It is updated once a week (every monday). The lists are available for each architecture supported by the linux kernel as well as for the "generic architectures" (the default syscall lists for 32bit and 64bit processors). They can be consulted directly on the site or downloaded in the CSV format.
This project is made to run on a linux system with at least the following programs available:
- bash
- gcc
- ripgrep
- make
- docker
# clone it
git clone https://github.com/Taiwing/syscalls
cd syscalls/
The first thing you need to do is to create an environment file for the application. To use the default values you can simply copy the env.sample file at the root of the repository and rename it to .env:
cp env.sample .env
Then you can build the application and run it:
# build the front
make
# run the app
docker compose up --build
Click here to test it locally.
The first
make
command will take some time because it needs to clone the kernel repository (which is pretty big to download).
To keep the lists up to date automatically simply create a cron job running the update script. It will pull the last changes from the linux kernel repository, rebuild the application source files and restart the container.
# edit the cron job table
crontab -e
Add this line to your crontab to run it once a week:
0 7 * * 1 path/of/this/repo/update.bash
If you have issues when running the script with cron (like empty lists), this is probably because the ripgrep command is missing. Either because it is not installed or because it is not on the PATH. If you have a specific bash configuration that is not taken into account by the cron job you might need to add the following lines to your crontab:
SHELL=path/of/your/bash/executable
BASH_ENV=path/of/your/bash/config
There are some other projects listing the linux kernel syscalls that have been a great help during the development of this application. Some have more or less informations about each syscall. They also do not handle the exact same set of architectures. They might be used to cross-reference the lists provided here or simply as an additional source regarding linux syscalls: