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.

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).