Thursday, October 16, 2014

man-pages-3.75 is released

I've released man-pages-3.75. 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 is a quite small release. The most notable changes in man-pages-3.75 are the following:

  • A new pthread_rwlockattr_setkind_np(3) page by Robert Schweikert documents two glibc extensions to the POSIX threads API, pthread_rwlockattr_setkind_np() and  pthread_rwlockattr_getkind_np().
  • I've added a number of details about the correct way to handle UNIX domain socket pathnames in the unix(7) page, including details of how to work around a longstanding design bug that I reported some time ago to the Austin Group mailing list.

Monday, October 6, 2014

man-pages-3.74 is released

I've released man-pages-3.74. 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 various minor changes to many pages, the most notable changes in man-pages-3.74 are the following:

  • A new cp1252(7) page by Marko Myllynen documents the CP 1252 character set. Marko also submitted a large number of patches that made the various character set pages in Section 7 more consistent content and layout.
  • I've written a new pldd(1) page that documents the pldd command added to glibc in version 2.15.
  • I've made a number of updates to the mq_overview(7) page, among them to add documentation of the  /proc/sys/fs/mqueue/msgsize_default and  /proc/sys/fs/mqueue/msg_default files.

Sunday, September 21, 2014

man-pages-3.73 is released

I've released man-pages-3.73. 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 most notable changes in man-pages-3.73 are various new and modified pages describing namespaces in general, and user and PID namespaces in detail:

  • A new namespaces(7) page provides an overview of Linux namespaces. Linux currently supports six namespaces (IPC, mount, network, PID, UTS, and user), and each namespace wraps some global system resource(s) in an abstraction that makes it appear to the processes within the namespace that  they  have  their own  isolated  instance  of the resource(s). Much of the content this and the other new pages in this release was drawn from a series of articles that I wrote for LWN.net in January 2013, but a few details have changed since and are documented the new man pages.
  • A new pid_namespaces(7) page documents PID namespaces in detail.
  • A new user_namespaces(7) page documents user namespaces in great detail.
  • The clone(2) page adds documentation of the CLONE_USER flag, which is used for creating a child process in a new user namespace.
  • The setns(2) page adds documentation of the CLONE_NEWNS, CLONE_NEWPID, and CLONE_NEWUSER  flags.
  • The unshare(2) page adds documentation of the CLONE_NEWPID, CLONE_NEWUSER, CLONE_SIGHAND, CLONE_THREAD, and CLONE_VM flags.

Sunday, September 7, 2014

man-pages-3.72 is released

I've released man-pages-3.72. 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 is a small release; the  more notable changes in man-pages-3.72 are the addition of three new pages by Peter Schiffer that document glibc commands used for memory profile and malloc tracing:

  • The new memusage(1) and memusagestat(1) pages document glibc commands of the same names that are used for memory profiling.
  • The new mtrace(1) page documents the glibc command that is used to process malloc tracing data files produced by mtrace(3).

Thursday, August 21, 2014

man-pages-3.71 is released

I've released man-pages-3.71. 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 many smaller fixes to various pages, the more notable changes in man-pages-3.71 are the following:

  • A subheading "C library/kernel ABI differences" has been added to various pages that describe cases where the glibc wrapper for a system call provides some different behavior from the underlying system call.
  • Details about the ancient Linux libc (which ceased to be used in the late 1990s) have now been removed from various pages.
  • A new group_member(3) page documents the group_member() library function.
  • A new isfdtype(3) page documents the isfdtype() library function.
  • Vince Weaver added documentation of various new perf_event_open() features to the perf_event_open(2) page.
  • I've added documentation of a number of /proc files to the proc(5) page.

Wednesday, July 23, 2014

Linux/UNIX System Programming course scheduled for October 2014

I've scheduled a further 5-day Linux/UNIX System Programming course to take place in Munich, Germany, for the week of 6-10 October 2014.

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),  network programming (sockets), and server design.
     
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 a copy of TLPI, along with a 600-page course book containing the more than 1000 slides that are used 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.

Wednesday, July 9, 2014

man-pages-3.70 is released

I've released man-pages-3.70. 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 is a relatively small release. As well as many smaller fixes to various pages, the more notable changes in man-pages-3.70 are the following:

  • A new sprof(1) page documents the sprof command provided by glibc.
  • The epoll_ctl(2) and epoll(7) pages add documentation of the EPOLLWAKEUP flag that appeared in Linux 3.5.
  • Various parts of the syslog(2) page were reworked and improved.
  • A number of details were added or improved in the inotify(7) page.

Sunday, June 15, 2014

man-pages-3.69 is released

I've released man-pages-3.69. 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 minor improvements and fixes to various pages, the notable changes in man-pages-3.69 are the following:

  • A new iconv(1) page by Marko Myllynen documents the iconv command provided by glibc.
  • A new iconvconfig(8) page by Marko Myllynen documents the iconvconfig command provided by glibc.
  • Jeff Layton has added documentation in the fcntl(2) man page of the new "open file description locks" that was added in Linux 3.15. (In addition, I've made a number of other updates in this page, mainly to do with file locking commands.)
  • Peng Haitao continues adding information about thread safety in various manual pages, and has been joined in this task by Qian Lei.

Thursday, June 5, 2014

Linux/UNIX System Programming course scheduled for July

I've scheduled a further 5-day Linux/UNIX System Programming course to take place in Munich, Germany, for the week of 21-25 July 2014.

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),  network programming (sockets), and server design.
     
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 a copy of TLPI, along with a 600-page course book containing the more than 1000 slides that are used 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.

Wednesday, May 28, 2014

man-pages-3.68 is released

I've released man-pages-3.68. 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 larger-than-usual set of minor improvements and fixes to various pages, the notable changes in man-pages-3.68 are the following:

  • A new localedef(1) page documents the localedef command; thanks to Marko Myllynen, Richard Braakman, Alastair McKinstry, and Lars Wirzenius.
  • A number of the pages related to locales received significant updates, thanks to the efforts of Marko Myllynen.
  • Thanks to some nice scripting work, Rasmus Villemoes was able to uncover a number of subtle errors (missing "const" keywords, incorrect argument types, and so on) in the SYNOPSIS section of many pages. A large number of his patches to fix those problems were merged in this release.
  • Meanwhile, Peng Haitao continues his work on adding thread-safety information to the manual pages; by now, nearly one third of the roughly 800 Section 2 and 3 pages have an ATTRIBUTES section.

Friday, May 23, 2014

man-pages-3.67 is released

I've released man-pages-3.67. 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 larger-than-usual set of minor improvements and fixes to various pages, the notable changes in man-pages-3.67 are the following:

  • A new sched_setattr() manual page documents the sched_setattr() and sched_getattr() system calls added in Linux 3.14.
  • Much of the system(3) manual page have been rewritten, and various details added.
  • The sched(7) adds documentation of the new SCHED_DEADLINE scheduling policy added in Linux 3.14.

Thursday, May 8, 2014

man-pages-3.66 is released

I've released man-pages-3.66. 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 number of minor improvements and fixes to various pages, the notable changes in man-pages-3.66 are the following:

  • Thanks to some excellent work by Heinrich Schuchardt, the fanotify API that was added in Linux 2.6.37 if at last well documented in three new manual pages: fanotify_init(2), fanotify_mark(2), and fanotify(7).
  • A new sched(7) manual page provides an overview of the Linux scheduling APIs. Much of the material in this page was extracted from the sched_setscheduler(2), which has now been trimmed (and extensively rewritten) so that it contains just a description of the sched_getscheduler() and sched_setscheduler() system calls. These changes pave the way for new pages that will probably be added in man-pages-67 that document the new sched_setattr() and sched_getattr() system calls that were added in Linux 3.14.
  • The rename(2) manual page adds documentation of the renameat2() system call that was added in Linux 3.15.
  • The fallocate(2) man page adds documentation of the FALLOC_FL_ZERO_RANGE operation that was added in Linux 3.14.

Sunday, April 20, 2014

man-pages-3.65 is released

I've released man-pages-3.65. 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 number of minor improvements and fixes to various pages, the notable changes in man-pages-3.65 are the following:

  • A new inet_net_pton(3) page describes the inet_net_pton() and inet_net_ntop() library functions.
  • The fallocate(2) page adds documentation for the FALLOC_FL_COLLAPSE_RANGE operation added in Linux 3.15.
  • The prctl(2) page adds documentation of the PR_SET_THP_DISABLE and PR_GET_THP_DISABLE operations added in Linux 3.15.
  • Peng Haitao continued the task of adding thread-safety information to various man pages.

Sunday, April 6, 2014

man-pages-3.64 is released

I've released man-pages-3.64. 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 number of minor improvements and fixes to various pages, the notable changes in man-pages-3.64 are the following:

  • I've written a new open_by_name_at(2) page that documents the name_to_handle_at() and open_by_handle_at() system calls that were added to Linux in version 2.6.39.
  • I've made substantial updates to the inotify(7) man page to document some of the limitations, complexities, and pitfalls of the inotify API.

Tuesday, March 18, 2014

man-pages-3.63 is released

I've released man-pages-3.63. 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.

Most notable among the changes in the release are many new and modified pages related to locales. Among the changes in man-pages-3.63 are the following:

  • I've written new pages that document the APIs used to create, modify, use, duplicate, and free locale objects: newlocale(3), duplocale(3), and uselocale(3).
  • I added documentation of various functions that are analogues of traditional locale-dependent functions, but differ in that they allow the caller to explicitly specify a locale. In each case, the documentation was added to the existing page for the traditional functions.
    • isalnum_l(3), isalpha_l(3), isblank_l(3), iscntrl_l(3), isdigit_l(3), isgraph_l(3), islower_l(3), isprint_l(3), ispunct_l(3), isspace_l(3), isupper_l(3), isxdigit_l(3), and isascii_l(3) in isalpha(3).
    • strerror_l(3) in strerror(3).
    • toupper_l(3) and tolower_l(3) in toupper(3).
    • towlower_l(3) in towlower(3).
    • towupper_l(3) in towupper(3).
    • In addition, I also rewrote the descriptions of towupper(3) and towlower(3) to be simpler and (I hope) clearer.
  • I've added documentation of the following locale categories in locale(7): LC_ADDRESS, LC_IDENTIFICATION, LC_MEASUREMENT, LC_NAME, LC_PAPER, and LC_TELEPHONE.
  • NOTE: There are many more locale-related APIs that remain to be documented (basically following the same pattern as in the above pages), as can be seen in the man-pages list of of missing pages. Assistance would be very welcome!

Wednesday, March 12, 2014

man-pages-3.62 is released

I've released man-pages-3.62. 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.

Among the more notable changes in man-pages-3.62 are the following:

  • A new locale(1) page documents the locale command provided by glibc.
  • The locale(5) page adds documentation of the (GNU-specific) LC_ADDRESS, LC_IDENTIFICATION, LC_MEASUREMENT, LC_NAME, LC_PAPER, and LC_TELEPHONE locale categories. Many other details in this page were also added or improved.
  • Many pieces of information in the feature_test_macros(7) page were updated or improved.
  • Again, Peng Haitao continued adding notes on thread-safety to various manual pages.

Wednesday, February 26, 2014

man-pages-3.61 is released

I've released man-pages-3.61. 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 was a relatively small release. Among the more notable changes in man-pages-3.61 are the following:

  • As ever, Peng Haitao continued adding notes on thread-safety to various manual pages.
  • A note from Christoph Hellwig prompted me to perform a task that has been queued for a while: merging the text of the man pages for the "directory file descriptor" APIs into their corresponding traditional pages. When the "directory file descriptor" pages were originally written (mostly in 2006), the APIs were not part of POSIX and (in most cases) were not available on other systems. So, it made some sense to wall them off into their own separate pages. Eight years later, with the APIs now all in POSIX (except scandirat()), it is much more sensible to document the newer APIs alongside their traditional counterparts, so that the newer APIs are not "hidden", and the reader can more easily see the differences between the APIs.

    Thus, the text of 14 pairs of pages has been merged, and the "merged from" pages have been converted to links to the "merged to" pages. Along the way, a few other fixes were made to the pages, as noted below. The resulting merged pages are: access(2), chmod(2), chown(2), link(2), mkdir(2), mknod(2), open(2), readlink(2), rename(2), stat(2), symlink(2), unlink(2), mkfifo(3), and scandir(3).

    One page that did not undergo such a change was utimensat(2), which is different enough from utime(2) that it warrants a separate page. Unlike the other pages, the utimensat(2) page was also already self-contained, rather than defining itself in terms of differences from the traditional API as the other pages did.
In addition, smaller improvements and fixes have been made to many other pages.

Wednesday, February 19, 2014

Further Linux/UNIX System Programming courses scheduled

I've scheduled two further public iterations of my Linux/UNIX System Programming course in Munich, Germany, in April and June, and I hope to announce a San Francisco date soon as well. (I'm also available to give on-demand tailored versions of the course onsite at customer premises, in Europe, the US, and further afield.)
          
The 5-day 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),  network programming (sockets), and server design.
     
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 a copy of TLPI, along with a 600-page course book containing the more than 1000 slides that are used 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.

Sunday, February 16, 2014

man-pages-3.59 and man-pages-3.60 released

I've released man-pages-3.59. 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 sole change in this release is the conversion of various man pages that contained non-ASCII characters, as well as the changelog, to UTF-8 encoding, a task completed thanks largely to some scripts provided by Peter Schiffer.

Update, 2014-02-18: turns out that a couple of section 7 pages had encoding errors added in man-pages-3.59. So, I've decided to make a quick small 3.60 release that fixes those issues, and includes a few other unrelated minor fixes.

Tuesday, February 11, 2014

man-pages-3.58 is released

I've released man-pages-3.58. 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 was a relatively small release. Among the more notable changes in man-pages-3.58 are the following:

  • The pipe(2) man page adds documentation of the new O_DIRECT flag that was implemented for pipe2() in Linux 3.4.
  • Daniel Borkmann added a description of the PACKET_QDISC_BYPASS socket option to the packet(7) man page.
  • The recv(2) man page underwent some reworking to add some details and make its structure more comprehensible.
  • And, as ever, Peng Haitao continued adding notes on thread-safety to various manual pages.
In addition, smaller improvements and fixes have been made to many other pages.

Friday, January 24, 2014

man-pages-3.57 is released

I've released man-pages-3.57. 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.

Among the more notable changes in man-pages-3.57 are the following:

  • The open(2) manual page adds documentation of the O_TMPFILE flag, which provides a race-free method of creating unnamed temporary files. Such temporary files can, if desired, later be linked into the filesystem using linkat(2), after  being populated and adjusted to have to have the desired filesystem attributes (ownership, permissions, etc.). Thanks to Andy Lutomirski for providing the basis for that documentation.
  • Vince weaver continues doing good work updating the perf_event_open(2) manual page, this time adding (with the help of Andi Kleen) documentation of the PERF_SAMPLE_TRANSACTION operation added in Linux 3.13.
  • Andrey Vagin added documentation of the PTRACE_PEEKSIGINFOPTRACE_GETSIGMASK, and PTRACE_SETSIGMASK operations to the ptrace(2) manual page.
  • Eliezer Tamir added documentation of the SO_BUSY_POLL socket option to the socket(7) manual page.
  • I added documentation of the TCP_USER_TIMEOUT and TCP_CONGESTION socket options to the tcp(7) manual page.
  • Peng Haitao continued adding notes on thread-safety to various manual pages.
In addition, smaller improvements and fixes have been made to many other pages.

Wednesday, January 22, 2014

Announcing POSIX.1-2013 man pages for Linux

The manual pages produced by the Linux man-pages project attempt to document deviations between Linux behavior and the POSIX.1 standard. However, the pages are no substitute for the standard itself.

In 2004, the IEEE and The Open Group decided to grant permission to the  Linux man-pages project to distribute parts of the then-current version of POSIX.1 in manual page format. That decision provided an extremely valuable resource for Linux programmers who wanted to write applications that are portable across UNIX systems. Evidence of that value has been demonstrated by regular requests in the last few years that the project should update its copy of the POSIX manual pages to the latest version provided by The Austin Group (the umbrella group that works on development of the POSIX.1 standard).

We are pleased to announce that, once again, the IEEE and The Open Group have kindly granted the Linux man-pages permission to distribute extracts from the latest version of the POSIX.1 standard:

IEEE Std 1003.1, 2013 Edition, Standard for Information Technology--Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, Copyright (C) 2013 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group.
(For those curious about the "2013" designation, this is POSIX.1-2008 with the 2013 Technical Corrigendum 1 applied.)

Thanks to some excellent scripting work by Felix Janda, the source files supplied by IEEE and The Open Group have been cleanly converted to  "man" format. The result is that portions of the standard are now
made available for easy reference  as (1139!) manual pages. Those pages are divided into three sections:
  • Section 0p = POSIX headers (specifications for header files)
  • Section 1p = POSIX utilities (i.e., specifications shell commands)
  • Section 3p = POSIX functions (specifications for functions)
Tarballs containing the pages can be found at https://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/man-pages-posix-2013-a.tar.gz and https://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix/man-pages-posix-2013-a.tar.xz

Finally, please note that all pages carry the following disclaimer:
In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.unix.org/online.html.

Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html.

Saturday, January 11, 2014

man-pages-3.56 is released

I've released man-pages-3.56. 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.

Among the more notable changes in man-pages-3.56 are the following:

  • A new vdso(7) page by Mike Frysinger explains many details of the virtual DSO that the Linux kernel maps into each user process.
  • The man-pages(7) adds a STYLE GUIDE section that provides a number of style guidelines specific to man pages.
  • Thanks to an idea and patch from David Malcolm, the dangerous gets(3) function (which is removed in the C11 standard) is documented alone in its own man page, rather than sitting in a man page with a number of otherwise safe functions (the functions now placed in the new fgetc(3) man page).
  • Willem de Bruijn has added documentation of a number of socket options to the packet(7) man page.

In addition, smaller improvements and fixes have been made to many other pages.