Sunday, November 26, 2017

Next Linux/UNIX System Programming course in Munich, 5-9 February, 2018

There are still some places free for my next 5-day Linux/UNIX System Programming course to take place in Munich, Germany, for the week of 5-9 February 2018.

The course is intended for programmers developing system-level, embedded, or network applications for Linux and UNIX systems, or programmers porting such applications from other operating systems (e.g., proprietary embedded/realtime operaring systems or Windows) to Linux or UNIX. The course is based on my book, The Linux Programming Interface (TLPI), and covers topics such as low-level file I/O; signals and timers; creating processes and executing programs; POSIX threads programming; interprocess communication (pipes, FIFOs, message queues, semaphores, shared memory), and network programming (sockets).
The course has a lecture+lab format, and devotes substantial time to working on some carefully chosen programming exercises that put the "theory" into practice. Students receive printed and electronic copies of TLPI, along with a 600-page course book that includes all slides presented in the course. A reading knowledge of C is assumed; no previous system programming experience is needed.

Some useful links for anyone interested in the course:

Questions about the course? Email me via

man-pages-4.14 is released

I've released man-pages-4.14. The release tarball is available on The browsable online pages can be found on The Git repository for man-pages is available on

This release resulted from patches, bug reports, reviews, and comments from 71 contributors. Nearly 400 commits changed more than 160 pages. In addition, 4 new manual pages were added.

Among the more significant changes in man-pages-4.14 are the following:

  • With help from several people, I've added a new pthread_spin_init(3) page describing pthread_spin_init() and pthread_spin_destroy(). This page provides some recommendations on when the usage of spin locks is appropriate.
  • I added a new pthread_spin_lock(3) page describing pthread_spin_lock(), pthread_spin_unlock(), and pthread_spin_trylock().
  • A new smartpqi(4) page, written by Don Brace, documents the smartpqi SCSI controller.
  • A new veth(4) page, written by Tomáš Pospíšek, Eric Biederman, and me, documents veth virtual ethernet devices.
  • Substantial additions were made to the seccomp(2) page, by Tyler Hicks and me, documenting the many new seccomp features added in the Linux 4.14 kernel. In addition, I've added a section noting various caveats regarding the use of seccomp. (See also the article, The inherent fragility of seccomp(), which is accompanied by a number of quite informative comments.)