This is an old revision of the document!
This page lists a few important crumbs for modifying the Linux kernel.
There are three major steps to adding a system call to the Linux kernel:
Every system call must have an associated system call number which corresponds to its position in the system call table. This table is transformed / imported into the source as part of the build process. The correct table varies by architecture, but is in the following format/location in the source tree:
/arch/<archname>/entry/syscalls/syscall_<variant>.tbl
For example, in the x64 version of Linux, <archname> is x86 and <variant> is 64.
The table has four columns: <call_number> <abi> <call_name> <entry_point>
This example uses the “common” ABI and appends the x64 prefix (__x64_sys_) for the system call entry point:
435 common sample_syscall __x64_sys_sample_syscall