Kernel ABI
also: Kernel ABI/API, kernel binary interface
The Kernel ABI (Application Binary Interface) defines the stable binary contract between the Linux kernel and user-space programs, ensuring applications work across kernel versions without recompilation.
The Kernel ABI specifies how system calls, data structures, and other kernel interfaces are presented to user-space applications at the binary level. This includes the exact layout of structs, register conventions for system calls, and the numbering of syscalls on each architecture.
Unlike the Kernel API (which is the source-level interface), the ABI guarantees binary compatibility. If the kernel maintains ABI stability, a compiled program will continue to run on newer kernel versions without being rebuilt—a critical requirement for Linux distributions supporting multiple kernel releases.
For example, the open() system call has a stable ABI number (2 on x86_64); user-space libraries can call it with confidence across kernel updates. However, changing the size of a structure passed to a syscall would break the ABI and require recompiling applications.
ABI breaks are rare and intentional, usually announced well in advance. This stability is one reason Linux maintains strong backward compatibility for user-space code.