How to design a Linux kernel API

Session information has not yet been published for this event.

50 Minute Talk
Scheduled: Wednesday, October 15, 2014 from 2:30 – 3:20pm in Room 14

One Line Summary

The intended audience is kernel developers and user-space programmers with an interest in the long-term health of the kernel-user-space API, and anyone with an interest in API design.


The Linux kernel-user-space API is littered with design errors: APIs that are non-extensibe, unmaintainable, overly complex, limited-purpose, violations of standards, and inconsistent. Most of those mistakes can’t be fixed because doing so would break the ABI that the kernel presents to user-space binaries. To further rub salt into the wound, kernel-user-space APIs are often buggy when first shipped.

Thus, it’s important to get API designs right the first time. Taking (good and bad) examples from past APIs, I’ll cover a number ideas on improving the design of future kernel user-space APIs. Those tips are relevant both for kernel developers producing the APIs and for user-space programmers looking at what kernel developers are serving to them. I’ll also look at some strategies that developers can pursue in order to get help with improving the designs of APIs that they are producing.


  • 2949773721_861718e4e1_o-ks2008, sep 2008-x


    Michael Kerrisk is the author of the acclaimed book, “The Linux Programming Interface” ( ), a guide and reference for system programming on Linux and UNIX. He contributes to the Linux kernel primarily via documentation, review, and testing of new kernel-user-space interfaces. In Düsseldorf, he will be celebrating 10 years as the maintainer of the Linux man-pages project ( ). Michael is New Zealander, working as an independent trainer and consultant in Munich, Germany.