Developer releases updated Linux syscall reference with 27 architectures
guitmz updates syscall.sh with kernel selector, mobile improvements, and expanded architecture coverage from Linux 3.3 to 7.3.
What to know
- guitmz updated syscall.sh after six years with 27 architectures, kernel selector, descriptions, and JSON API; data sourced directly from kernel source code.
- The site tracks syscall history across Linux versions 3.3–7.3, marking when calls were added or removed, and documents architecture-specific calling conventions.
- Discussion surfaces practical concerns: developers use local GCC verification to check syscall numbers, questions arise about cross-architecture variation, and technical details emerge about register allocation on specific platforms.
Resource is valuable; commend its structure and accuracy source from kernel code.
-
“This is really great resource, didn't know about it.”
wg0 · Hacker News ↗
Recommend local verification against LLM outputs and other references to catch errors.
-
“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.”
ozgrakkurt · Hacker News ↗
Linux syscall design could be modernized for contemporary programming languages.
-
“I've long thought that the kernel should duplicate every existing syscall that takes a null–terminated string by pointer with an otherwise identical syscall that takes the string by pointer, capacity, and length instead.”
db48x · Hacker News ↗
guitmz Developer
How it unfolded 3 developments, newest first · click a bar or a number to jump articlespostscomments
-
3
Technical questions emerge about syscall design and data freshness
Developers raise questions about why syscalls vary across architectures despite API standardization, discuss build process and staleness risk, and note that on x86_64/x32 the syscall number resides in eax not rax.
“I've long thought that the kernel should duplicate every existing syscall that takes a null–terminated string by pointer with an otherwise identical syscall that takes the string by pointer, capacity, and length instead.”
— db48x, HN commenter · source -
It’s a side issue, but I’ve long thought that the kernel should duplicate every existing syscall that takes a null–terminated string by pointer with an otherwise identical syscall that takes the string by pointer, capacity, and length instead. It would be a huge boon to programs written in modern languages. I keep meaning to search the kernel…
2 more of the top 3 · 3 posts in this stretch
-
Why also capacity?What I think would make sense is a change to the C API where the error code is an out parameter and not that ugly thread local errno. But I guess that's not big enough of an issue for people/languages that use libc as system call interface.
-
Modern languages .. or more specifically .. modern compilers for those languages .. can surely sustain a pointer, capacity and length wrap to pointer until null ..
-
-
2
Developers discuss verification methods and architecture design
Comments surface practical verification techniques and design considerations: ozgrakkurt recommends using GCC to verify syscall numbers locally against LLM outputs; db48x proposes modernizing syscall interfaces for languages with length-aware strings; wg0 asks why syscalls vary by architecture if the Linux API is standardized.
“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.”
— guitmz, Developer · source -
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…
2 more of the top 3 · 5 posts in this stretch
-
Somewhat related - I am working on a dual Pentium III retro build (first retro build) and completely forgot that this would be 32-bit and won't have niceties like SSE2. Having some fun going down the rabbit hole of IDE, SCSI interfaces and AGP graphics. Can anyone recommend some OS installations to play with? So far I am thinking Haiku, ReactOS…
-
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?
-
-
1
guitmz releases updated syscall.sh with expanded features
The updated site now covers 27 architectures (Linux 3.3 to 7.3), adds a kernel selector, syscall descriptions, and improved mobile support. Data is pulled directly from kernel source code, with architecture-specific calling conventions documented.
“I first released those in back in 2020 and now I finally added more architectures, Kernel selector, syscall descriptions and a few other niceties.”
— guitmz -
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.
-
-
background
guitmz releases original syscall.sh — The developer first released the Linux syscall reference website and API in 2020.
Also covered reported alongside — the timeline has no entry for these yet
-
first by HN Best, 9d ago · also HN Frontpage
What people are saying 1 voices from 1 site · best of 9 · verbatim
- Why do syscalls vary per architecture if the Linux API is meant to be the same?
- How is the dataset built and how often can it become stale?
- Nov 2
-
I am not familiar with the internals, so excuse my question, but how does one builds this? Separately, how often can it get stale?