From the diary of AArch64 porter — system calls

This post is part 7 of the "From the diary of AArch64 porter" series:

  1. From the diary of AArch64 porter — autoconf
  2. From the diary of AArch64 porter — rpm packaging
  3. From the diary of AArch64 porter — testsuites
  4. From the diary of AArch64 porter — POSIX.1 functionality
  5. From the diary of AArch64 porter — PAGE_SIZE
  6. From the diary of AArch64 porter — vfp precision
  7. From the diary of AArch64 porter — system calls
  8. From the diary of AArch64 porter — parallel builds
  9. From the diary of AArch64 porter — firefighting
  10. From the diary of AArch64 porter — drive-by coding
  11. From the diary of AArch64 porter — manylinux2014
  12. From the diary of AArch64 porter — handling big patches
  13. From the diary of AArch64 porter — Arm CPU features table

When userspace want to talk to kernel it can use system calls. Applications usually do it via wrappers in libc to not have to deal with different numbers on different architectures.

There are over four hundred system calls in Linux kernel. Many of them have “legacy” status and as such are not available on many new architectures. Riku Voipio from Linaro has nice slides about it.

So to make things easier for developers I worked on creating a table showing all system calls and their number/status on different architectures. But this table was generated partially by hand…

I changed code to keep a list of all syscalls in place, wrote generator of C code and added makefile on top. And then pushed it into a new git repo called syscalls-table. Code is MIT licensed.

Please go, check the code, run it on any architecture and send me pull requests. The only requirements for generating list of architecture specific syscalls list are bash and C compiler. Table generation requires Python but does not have to be run on target platform.

aarch64 arm syscalls