Tuesday, December 29, 2015

man-pages-4.04 is released

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

This release resulted from patches, bug reports,and  comments from more than 30 contributors. As well as a large number of minor fixes to nearly 90 man pages, the more significant changes in man-pages-4.04 include the following:

  • The futex(2) man page was long in a sorry state, with many aspects of the system call undocumented in the man page. After more than a year working off and on (and more than 250 commits!), I've completed a major rewrite and expansion of the page (which is now nearly 6 times as long as it used to be). Some of the information was drawn from Ulrich Drepper's highly informative paper, Futexes are tricky. A lot more information came from reading kernel and user-space source code, doing some experimenting (the revised man page even includes an example program!), and significant input from a number of reviewers (special thanks here to Thomas Gleixner and Torvald Riegel).
  • A new membarrier(2) man page was added, contributed by Mathieu Desnoyers, the developer of the new system call (added in Linux 4.3).
  • Eric Munson added documentation of the new mlock2() system call and the new mlockall() MCL_ONFAULT flag to the mlock(2) man page.

Saturday, December 5, 2015

man-pages-4.03 is released

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

This release is relatively small, but nevertheless nearly 40 people contributed patches, bug reports,and comments. The more significant changes in man-pages-4.03 include the following:

  • Vince Weaver has once again been very active on the perf_event_open(2) page, making many updates related to recent kernel changes.
  • Documentation of the ambient capabilities feature that was added in Linux 4.3 has been added to the capabilities(7) and prctl(2) pages.

Saturday, August 8, 2015

man-pages-4.02 is released

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

This release resulted from patches, bug reports,and  comments from around 15 contributors. As well as a large number of minor fixes to nearly 400 man pages, the more significant changes in man-pages-4.02 include the following:

  • A new dlinfo(3) page documents the library function of the same name.
  • The dlopen(3) page, which, in a single page, documented rather too many functions in the dlopen API, has been split into several smaller pages: dlopen(3), dlerror(3), dladdr(3), and dlsym(3).
  • Documentation of the dladdr1(3) library function has been added to the (new) dladdr(3) man page.
  • Documentation of the dlmopen(3) library function has been added to the dlopen(3) man page. In the process of writing this documentation, Carlos O'Donnel and I realized that the API has essentially been unusably broken since its first appearance in glibc 2.3.4 (somewhat more than 10 years ago!), as described in the BUGS section of the man page--yet another lesson in the consequences of adding an API without documentation or a clear specification of expected behavior. Together, we're working on fixing the interface, which is to say that we've been trying to determine what would be sane expected behavior, which I've been documenting and testing against against the current Solaris behavior while Carlos does the heavy lifting to fix the glibc dlmopen(3) implementation. With luck, things will be fixed in glibc 2.23 (which should be released in early 2016). 
  • Daniel Borkmann has made a number of updates to the bpf(2) page that was added in the last man-pages release.

Thursday, July 23, 2015

man-pages-4.01 is released

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

This release resulted from patches, bug reports,and  comments from nearly 50 contributors. As well as a large number of minor fixes to over 100 man pages, the more significant changes in man-pages-4.01 include the following:

  • A new bpf(2) man page documents the bpf() system call. This page was primarily written by Alexei Starovoitov, the author of the system call.
  • The queue(3) page has been updated (by reimporting and editing a recent FreeBSD version of the man page) to include a number of functions that were formerly undocumented.
  • Thread-safety information was added to more than 50 man pages, bringing the total number of pages that carry this information to over 500.
  • Marko Myllynen provided substantial updates for the locale(5) man page, so that it now provides near-complete documentation of the format of locale definition files.

Tuesday, June 16, 2015

Linux/UNIX System Programming course scheduled for September 2015, Munich

I've scheduled a further 5-day Linux/UNIX System Programming course to take place in Munich, Germany, for the week of 14-18 September 2015.

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., 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 training@man7.org.

Thursday, May 7, 2015

man-pages-4.00 is released

Version numbers for the current man-pages release had been getting uncomfortably high, so that I'd been thinking about bumping to a new major version for a while, and now that the Linux kernel has just done that, it seems an opportune moment do likewise. So, here we have it: man-pages-4.00, my 166th man-pages release.

The release tarball is available on kernel.org. The browsable online pages can be found on man7.org. The Git repository for man-pages is available on kernel.org.

This release resulted from patches, bug reports,and  comments from over 50 contributors. As well as a large number of minor fixes to around 90 man pages, the more significant changes in man-pages-4.00 include the following:

  • A new get_phys_pages(3) page by William Woodruff documents the get_phys_pages() and get_avphys_pages() library functions.
  • A new loop(4) page by Usr Thuermann and me documents the loop device.
  • The xattr(7) page has been added. This is not a new page, but an import from the attr project. After discussions with Andreas Grünbacher, maintainer of that project,we concluded that the best home for this page was in man-pages, since it is primarily documenting kernel details. Along the way, the page was renamed from attr(5) to xattr(7), a name that is more consistent with the system calls (setxattr(), etc.) that are employed with extended attributes. (A link file has been added, so that references to acl(5) will continue to work.)
  • The resolver(3) page now includes descriptions for a number of additional resolver functions.

Sunday, April 19, 2015

man-pages-3.83 is released

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

This release resulted from patches, bug reports,and  comments from 30 contributors. As well as a large number of minor fixes to more than 70 man pages, the more significant changes in man-pages-3.83 include the following:

  • A new posix_madvise(3) page documents the posix_madvise() library function.
  • The ftw(3) man page was reorganized to give primacy to the more modern nftw() function, with ftw() relegated to a few notes toward the end of the page.
  • The discussion of the /proc/PID/fdinfo file in the proc(5) man page was greatly enhanced in order to describe the information that fdinfo provides for various types of files.



Tuesday, March 31, 2015

man-pages-3.82 is released

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

As well as a large number of minor fixes to more than 80 man pages, the more significant changes in man-pages-3.82 include the following:

  • A new nptl(7) page documents some of the specifics of the NPTL (Native POSIX Thread Library) implementation provided by glibc. In addition, many man pages for signal-related system calls added some details on where the glibc NPTL wrapper functions implement semantics that differ from the the underlying bare system call.
  • A large number of changes were made in the user_namespaces(7) page, including the addition of documentation for the /proc/PID/setgroups file that was added in Linux 3.19 in order to fix a security problem related to the use of setgroups(2) inside user namespaces.

Monday, March 2, 2015

man-pages-3.81 is released

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

The changes in man-pages-3.81 relate exclusively to the (glibc) thread-safety markings in various man pages. More than 400 patches, mainly by Ma Shimiao and Peng Haitao of Fujitsu brought the following changes:

  • Thread-safety information has been added to many more pages.
  • The thread-safety notation in man-pages has been made consistent with the notation used in the GNU C Library Manual.
  • Thread-safety information in man-pages has been checked for consistency with the same information in the GNU C Library Manual. In some cases, this has resulted in refinements to the markings in man-pages.
  • The thread-safety information in man-pages has been been converted from a plain text layout to a tabular layout, for ease of reading.
By now, thanks mainly to the work of Peng Haitao and Ma Shimiao, nearly 400 of the (around 980) pages in man-pages carry thread-safety information.

In addition, a new attributes(7) man page, based on text supplied by Alexandre Oliva (who was responsible for adding thread-safety information to the GNU C Library manual) provides an overview of the thread-safety concepts documented in man-pages, and a description of the notation used in man-pages to describe the thread safety of functions. (Thanks also to Carlos O'Donell for helping us to obtain the permissions needed so that man-pages could recycle this text from the GNU C Library manual.)

Saturday, February 21, 2015

man-pages-3.80 is released

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

Aside from very many small fixes and improvements to various pages (by more than 30 contributors!), the most notable changes in man-pages-3.80 are the following:

  • A new ioctl_fat(2) man page, written by Heinrich Schuchardt, documents the ioctl() operations that are implemented for FAT filesystems.
  • Over the years, as various flags were added to the madvise() system call, the madvise(2) man page had failed to keep up with various details, and existing information in the page did not apply to the new flags. The page has been substantially revised and reorganized for this release.
  • Several more (mainly Section 2) pages add a C library/kernel ABI differences subheading that marks text that describes differences between the behavior of the glibc wrapper function described in the page and the underlying raw system call.

Wednesday, February 11, 2015

Linux/UNIX System Programming course scheduled for May 2015, Munich

I've scheduled a further 5-day Linux/UNIX System Programming course to take place in Munich, Germany, for the week of 4-8 May 2015.

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., 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 training@man7.org.

Monday, February 2, 2015

man-pages-3.79 is released

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

Aside from many smaller fixes and improvements to various pages, the most notable changes in man-pages-3.79 are the following:

  • A new getrandom(2) page has been added. This page, written by Heinrich Schuchardt, Ted T'so, and me, describes the getrandom() system call that was added in Linux 3.17.
  • The kexec_load(2) page has been substantially updated by Vivek Goyal and me. Documentation of the kexec_file_load() system call that was added in Linux 3.17 has been added to the page. In addition, the documentation of the older kexec_load() system call has been substantially improved.

Friday, January 23, 2015

man-pages-3.78 is released

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

Aside from many smaller fixes and improvements to various pages, the most notable changes in man-pages-3.78 are the following:

  • A new execveat(2) page documents the execveat() system call that was added in Linux 3.19.
  • A new memfd_create(2) page documents the memfd_create() system call that was added in Linux 3.17. This page also provides an overview of the file-sealing API. The file-sealing operations themselves are documented in updates to the fcntl(2) man page.

Saturday, January 10, 2015

man-pages-3.77 is released

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

Aside from many smaller fixes and improvements to various pages, the most notable changes in man-pages-3.77 is the following:

  • A new seccomp(2) manual page describes the seccomp() system call that was added in Linux 3.17.

Thursday, January 1, 2015

man-pages-3.76 is released

I've released man-pages-3.76. We've just passed 12k commits in the project, and this release, my 158th,  marks the completion of my tenth year as maintainer of the man-pages project.

The release tarball is available on kernel.org. The browsable online pages can be found on man7.org. The Git repository for man-pages is available on kernel.org.

Aside from a large number of smaller fixes and improvements to many pages, the most notable changes in man-pages-3.76 are the following:

  • The adjtimex(2) page has been greatly expanded adding many more details on the behavior of the adjtimex() system call (but much further work remains to be done on the page).
  • The sigreturn(2) page has been expanded to include an explanation of why this system call is need, as well as some details of the so-called signal trampoline code.