syscall.sh - Linux syscall tables and API for 27 architectures
Show HN: I've updated my Linux System Call website and API

syscall.sh is a comprehensive reference for Linux system calls, covering 27 architectures from x64 and arm64 to m68k and sparc64, spanning kernel versions 3.3 through 7.3. Each table lists syscall numbers, arguments, and registers, plus the calling convention for entering the kernel. Every architecture also exposes a plain JSON file and a queryable API, so you can fetch any syscall for any kernel release, diff between versions, and see exactly when entries appeared or were dropped. All data is generated directly from kernel source, making it a reliable lookup for low-level developers, security researchers, and emulation projects.
Everything on this site is read from the kernel source itself, so these are the numbers the kernel actually dispatches on.
- ozgrakkurt
Would also recommend using commands like:
echo '#include <sys/syscall.h>' | gcc -E -dM -xc - | grep -i "read"
To get the real values on your PC to make sure.
I had LLMs give wrong numbers or constant definitions several times but getting it to generate a command like this and seeing it for myself works every time.
Also chromium docs has a table:
https://www.chromium.org/chromium-os/developer-library/refer...
It would be very useful to just make this website directly link to the syscall number.
- bkallus
On x86_64 and x32, the syscall number goes in eax, not rax. The upper 32 bits of rax are ignored and can be anything.
- guitmz
I also made a CLI for consulting the syscall API when I originally released the website. I think I can tidy up the code and make it public too. It uses a embedded dataset so it does not have to query the API endpoint all the time
- DustinBrett
That website messes with my graphics for some reason.
- wg0
This is really great resource, didn't know about it. But one question not related to the website above - why the syscalls vary per architecture if the linux API is the same?
Or is it I am confusing it with the C standard library/POSIX and assuming that it should be the same everywhere?