A whirlwind tour of changes in the Linux 2.6.x system call API
Now that the dual-branch stable/unstable model of kernel development is history, new features appear in each 2.6.x kernel release, and some of these affect the system call API that the kernel provides to application programs. This tutorial presents a quick tour some of recent changes in the system call API. "Recent changes" means new features that Linux 2.6.0 added on top of what was available in Linux 2.4, as well features that have appeared in subsequent 2.6.x releases.
I won't go into all the details of each new feature. Instead, my aim is to give an idea of new capabilities that have recently appeared in the system call API and provide a flavour of what each feature does, answering questions like: what is it? why use it? how do we use it (brief presentation of an example program)? in which kernel did it first appear? is it (or something comparable) available on other Unix implementations?
The tutorial is targeted at application programmers and software designers that need an understanding of the system call API. The examples will be presented in C. (However, most of these features can also be used from other compiled languages, and some scripting languages also provide, or can be made to provide, interfaces to some or all of these features).
Topics of the tutorial (which may be subject to change) are likely to include at least the following: extended attributes; access control lists; POSIX timers; epoll; inotify; POSIX message queues; CPU affinity; and others.
Michael Kerrisk has been using and programming computers since 1978, starting on a PDP-11 (good) that didn't have Unix (unfortunate). He only found Unix in 1987, but they've been good friends since then. In 2004, after a few years as a contributor, he became the maintainer of sections 2, 3, 4, 5, and 7 of the Linux manual pages (the sections used by programmers on Linux http://www.kernel.org/pub/linux/docs/manpages/). He is currently working on a book that provides a detailed description of the Linux (and Unix) system call API. Michael lives in Munich, Germany, but he is originally from Christchurch, NZ, and says that he's an envoy from Linux City to the Mirror City.