I've uploaded man-pages-3.20 into the release directory (or view the online pages). Notable changes in man-pages-3.20 are:
- The addition of cpuid(4) and msr(4) device man pages (thanks to Andi Kleen)
- Numerous fixes to other pages.

I've uploaded man-pages-3.20 into the release directory (or view the online pages). Notable changes in man-pages-3.20 are:

Posted by
Michael Kerrisk
at
11:45 PM
1 comments
I've uploaded man-pages-3.19 into the release directory (or view the online pages). The most notable change in man-pages-3.19 is the addition of four pages describing the POSIX interval timers API: timer_create(2), timer_settime(2), timer_getoverrun(2), and timer_delete(2).
Posted by
Michael Kerrisk
at
3:17 AM
0
comments
I've uploaded man-pages-3.18 (my one hundredth release as maintainer!) into the release directory (or view the online pages). Notable changes in man-pages-3.18 are:
Posted by
Michael Kerrisk
at
1:47 AM
2
comments
For it's 11th time out, linux.conf.au returns to New Zealand again in 2010. (YAY!!) Congratulations to the successful bidders from Wellington! The conference will run from Monday 18 January to Saturday 23 January. The organizers' website is http://www.penguinsvisiting.org.nz/.
Posted by
Michael Kerrisk
at
9:34 PM
0
comments
Late notice (but that's all I got)... I'll be speaking at LCA 2009 in Hobart, Australia, on 22 Jan, considering what happens when kernel and userland don't talk.
Update: my presentation slides can be found here.
Posted by
Michael Kerrisk
at
4:52 AM
0
comments
I've uploaded man-pages-3.17 into the release directory (or view the online pages). Notable changes in man-pages-3.17 are:
Tasmanian Devil
Posted by
Michael Kerrisk
at
6:32 AM
0
comments
I've uploaded man-pages-3.16 into the release directory (or view the online pages). Notable changes in man-pages-3.16 are:
Posted by
Michael Kerrisk
at
11:05 PM
1 comments
It's too much fun to miss, so I finally made the booking... I'm going to LCA 2009 (19-24 Jan), in Hobart, Australia!
Posted by
Michael Kerrisk
at
6:56 PM
0
comments
I've uploaded man-pages-3.15 into the release directory (or view the online pages). Notable changes in man-pages-3.15 are:
Posted by
Michael Kerrisk
at
11:30 PM
0
comments
Not quite 6 months since I started the Linux Foundation fellowship, it's time to analyze and reflect on what has (or hasn't) been accomplished.
Some statistics
I took over maintainership of man-pages at the start of November 2004, with the first release being man-pages-2.00. From then until the fellowship started in the middle of May this year (a period of 185 weeks), I probably spent between 0 and 2.5 days a week on man-pages, most of it done as private, volunteer work. (For a period of around a year, I probably managed up about half day a week as part of my day job; thanks Google!) I'd guess it was a bit better than day a week on average (let's say 1.25 days), and we could roughly estimate that as the equivalent of 45 working weeks.
Since the fellowship started, I've worked for about 25 weeks on man-pages; that is, somewhat more than half of the estimated time that I spent on man-pages in the preceding 3.5 years. The first release during my tenure of the fellowship was man-pages-2.80, and since then there have been 15 more (man-pages-3.00 through man-pages-3.14).
What I'm expecting is that the limiting factor in the progress of man-pages is the availability of my time. If I get to work at around four times the rate I did before, then we should see a corresponding increase in the progress of man-pages. Very roughly, in the last 6 months, progress should have been somewhat more than 50% of what it was in the previous 3.5 years.So here's a first comparison:
| Period | Number of releases |
| Pre-fellowship | 80 |
| During fellowship | 16 |
Well, that doesn't look so good. But there's no question that there's more work going on for each release nowadays. Here's another simple statistic, derived from the commit logs:
| Period | Number of commits |
| Pre-fellowship | 3610 |
| During fellowship | 1852 |
| Period | Number of new pages added |
| Pre-fellowship | 93 |
| During fellowship | 56 |
| Period | By mtk | By others | By mtk + other(s) | Imports |
| Pre-fellowship | 52 | 22 | 13 | 6 |
| During fellowship | 50 | 4 | 1 | 1 |
| Period | Average contributors/week |
| Pre-fellowship | 2.8 |
| During fellowship | 5.9 |
Testing and bug reporting
I've done a fair bit of this over the course of the fellowship. Most new system calls and system call extensions got tested by me before they hit mainline. This uncovered a few bugs which were then fixed. The biggest single piece of work here was for the utimensat(2) system call, producing a test suite (later integrated into LTP), along with patches that fixed the 5 or so bugs in the interface (details here).
Many existing glibc functions also got tested as I updated the man pages for them. Most notably, updates to the man pages produced about 35 bug reports related to error reporting by the math functions. The addition of man pages for various pthreads functions has also been accompanied by a lot of testing, and a half dozen or so bug reports.
API design review
Most new system calls and system call extensions got reviewed before going into mainline. (My record on other kernel interfaces, such as /proc files, was a more spotty though.) Among other things, this resulted in a redesign of the proposed extension of the accept() system call (originally proposed as paccept(), with a signal set argument whose necessity was dubious, later revised to accept4(), which should appear in kernel 2.6.28).
Miscellaneous

Posted by
Michael Kerrisk
at
11:50 AM
0
comments
I've uploaded man-pages-3.14 into the release directory (or view the online pages). Notable changes in man-pages-3.14 are:
Posted by
Michael Kerrisk
at
10:40 PM
0
comments
I've uploaded man-pages-3.13 into the release directory (or view the online pages). Notable changes in man-pages-3.13 are:
Posted by
Michael Kerrisk
at
2:27 PM
0
comments
In recent Linux kernels, especially 2.6.27, a number of system calls have changed, or new versions of existing system calls have been added, to allow more control over the file descriptors created by those system calls. (Most of this work has been done by Ulrich Drepper.) These changes have taken the form of either adding new bits to the flags bit-mask argument of an existing system call, if it had such an argument, or creating a new version of the system call that adds an extra flags argument. In most cases, two new flags have been added: a close-on-exec flag, and a non-blocking flag, which we describe shortly.
The changes are summarized in the table below. In this table, the Kernel column indicates the kernel version where the change occurred, and the Glibc column indicates the version of glibc that adds the corresponding wrapper functions and/or header file definitions. (Note: glibc 2.9 is not yet released.)
| Interface | Changes | Kernel | Glibc | Notes |
| open(2) | New flag: O_CLOEXEC | 2.6.23 | 2.7 | Flag also supported for openat(2). These syscalls already supported O_NONBLOCK. |
fcntl(2) | New flag: F_DUPFD_CLOEXEC | 2.6.24 | 2.7 | Performs a similar task to dup3(2) |
| recvmsg(2) | New flag: MSG_CMSG_CLOEXEC | 2.6.23 | 2.7 | - |
| dup3(2) | New syscall, like dup2(2), but adds flags argument (O_CLOEXEC) | 2.6.27 | 2.9 | Requires new glibc interface |
pipe2(2) | New syscall, like pipe(2), but adds flags argument: O_CLOEXEC, O_NONBLOCK | 2.6.27 | 2.9 | Requires new glibc interface |
socket(2) | New flags in type argument: SOCK_CLOEXEC, SOCK_NONBLOCK | 2.6.27 | 2.9 | - |
socketpair(2) | New flags in type argument: SOCK_CLOEXEC, SOCK_NONBLOCK | 2.6.27 | 2.9 | - |
epoll_create1(2) | New syscall, like epoll_create(2), but adds flags argument: EPOLL_CLOEXEC; the new system call drops epoll_create()'s obsolete size argument | 2.6.27 | 2.9 | Requires new glibc interface |
inotify_init1(2) | New syscall, like inotify_init(2), but adds flags argument: IN_CLOEXEC, IN_NONBLOCK | 2.6.27 | 2.9 | Requires new glibc interface |
eventfd2(2) | New syscall, like eventfd(2), but adds flags argument: EFD_CLOEXEC, EFD_NONBLOCK | 2.6.27 | 2.9 | The glibc eventfd() wrapper already allowed a flags argument, so no new wrapper is required |
signalfd4(2) | New syscall, like signalfd(2), but adds flags argument: SFD_CLOEXEC, SFD_NONBLOCK | 2.6.27 | 2.9 | The glibc signalfd() wrapper already allowed a flags argument, so no new wrapper is required |
timerfd_create(2) | New flags: TFD_CLOEXEC, TFD_NONBLOCK | 2.6.27 | 2.9 | - |
Perhaps one day there might even be an analogous change for mq_notify(3), since (on Linux, but not on most other systems) a message queue descriptor is really just a file descriptor.
The close-on-exec flag (*_CLOEXEC)
The addition of a close-on-exec flag was the primary motivator for the system call changes. Specifying this flag causes the file descriptor created by the system call to automatically have its close-on-exec flag set. (This flag causes the file descriptor to automatically be closed if the process does a successful execve(2).)
Before the existence of this flag, it was possible to change the close-on-exec flag of a file descriptor after it has been created, using the fcntl(2) F_GETFL and F_SETFL operations. The fact that this required two additional system calls was not so problematic as the fact that the need for multiple (non-atomic) steps to set the flag on a new file descriptor meant that there were certain race conditions that could lead to races in multithreaded programs where one thread was trying to set a file descriptor's close-on-exec flag at the same time as another thread was performing a fork() plus execve(). Ulrich Drepper explains the resulting security issues in more detail.
The non-blocking flag (*_NONBLOCK)
The *_NONBLOCK flag causes the non-blocking flag to be set on the open file description associated with the new file descriptor. (For a discussion of the relationship of a file descriptor to an open file description, see the open(2) man page.)
There is also deliberately no *_NONBLOCK flag for epoll_create1(2), since equivalent functionality can be obtained with a zero timeout.
Other flags?
The flags argument added for the new system calls allows for other kinds of functionality to be added to these system calls in the future.
Future standards?
Ulrich Drepper already did some work on getting some of these interface changes into the POSIX.1-2008 standard, which includes specifications of the O_CLOEXEC flag for open() and the F_DUPFD_CLOEXEC operation for fcntl(). In the future, some the other changes may also make their way into the standard.
Posted by
Michael Kerrisk
at
4:26 PM
0
comments
I've uploaded man-pages-3.12 into the release directory (or view the online pages). Notable changes in man-pages-3.12 are:
Posted by
Michael Kerrisk
at
3:28 AM
3
comments
I've uploaded man-pages-3.11 into the release directory (or view the online pages). Notable changes in man-pages-3.11 are:
Posted by
Michael Kerrisk
at
11:30 AM
1 comments