<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3174631896317411826</id><updated>2011-12-24T23:02:53.462+01:00</updated><category term='API consistency'/><title type='text'>Linux man-pages</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>79</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-7009875772051615348</id><published>2011-10-20T18:26:00.001+02:00</published><updated>2011-10-20T18:26:00.103+02:00</updated><title type='text'>LinuxCon Europe</title><content type='html'>I'll be at &lt;a href="https://events.linuxfoundation.org/events/linuxcon-europe"&gt;LinuxCon Europe&lt;/a&gt;, 26-28 October, in Prague, Czech Republic. (In fact, I arrive already on Monday, 24 October.) I'll have a few copies of my book, &lt;a style="font-style: italic;" href="http://man7.org/tlpi/"&gt;The Linux Programming Interface&lt;/a&gt;, with me for sale. If you want to buy a copy (signed even, if you want!), drop me a mail (mtk AT man7.org).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-7009875772051615348?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/7009875772051615348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=7009875772051615348' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7009875772051615348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7009875772051615348'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2011/10/linuxcon-europe.html' title='LinuxCon Europe'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-9141026998683231922</id><published>2011-10-04T19:11:00.002+02:00</published><updated>2011-11-23T10:25:48.780+01:00</updated><title type='text'>man-pages-3.35 is released</title><content type='html'>I've released &lt;em&gt;man-pages-3.35&lt;/em&gt;. For the moment, the various pieces of the release remain at different locations than usual. The browsable online pages can be found on &lt;a href="http://man7.org/linux/man-pages/"&gt;man7.org&lt;/a&gt;; the release tarball is available &lt;a href="http://man7.org/linux/man-pages/download/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A git repository for &lt;em&gt;man-pages&lt;/em&gt; can be found on &lt;a href="https://github.com/mkerrisk/man-pages"&gt;github&lt;/a&gt;. You can clone the repository with the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &amp;nbsp; $ git clone https://github.com/mkerrisk/man-pages.git&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The most notable &lt;a href="http://man7.org/linux/man-pages/changelog.html#release_3.35"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.35&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://man7.org/linux/man-pages/man2/recvmmsg.2.html"&gt;&lt;span style="font-style: italic;"&gt;recvmmsg(2)&lt;/span&gt;&lt;/a&gt; page (written by Andi Kleen and me) documents the &lt;span style="font-style: italic;"&gt;recvmmsg()&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt; system call that was added to Linux back in version 2.6.32.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://man7.org/linux/man-pages/man2/setns.2.html"&gt;&lt;span style="font-style: italic;"&gt;setns(2)&lt;/span&gt;&lt;/a&gt; page (written by Eric Biederman) documents the &lt;span style="font-style: italic;"&gt;setns()&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt; system call that was added in Linux 3.0.&lt;/li&gt;&lt;li&gt;Various global edits to improve the consistency of terminology used in the man pages.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-9141026998683231922?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/9141026998683231922/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=9141026998683231922' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9141026998683231922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9141026998683231922'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2011/10/man-pages-335-is-released.html' title='&lt;em&gt;man-pages-3.35&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2316152602796308405</id><published>2011-09-23T08:05:00.006+02:00</published><updated>2011-11-23T10:25:34.523+01:00</updated><title type='text'>man-pages-3.34 is released</title><content type='html'>I've released &lt;em&gt;man-pages-3.34&lt;/em&gt;. Again, because of the problems at &lt;em&gt;kernel.org&lt;/em&gt;, the various pieces of the release are at different locations than usual (and possibly some of these locations may become permanent). The browsable online pages can be found on &lt;a href="http://man7.org/linux/man-pages/"&gt;man7.org&lt;/a&gt;; the release tarball is available &lt;a href="http://man7.org/linux/man-pages/download/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A git repository for &lt;em&gt;man-pages&lt;/em&gt; can be found on &lt;a href="https://github.com/mkerrisk/man-pages"&gt;github&lt;/a&gt;. You can clone the repository with the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   $ git clone https://github.com/mkerrisk/man-pages.git&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The most notable &lt;a href="http://man7.org/linux/man-pages/changelog.html#release_3.34"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.34&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://man7.org/linux/man-pages/man2/rt_sigqueueinfo.2.html"&gt;&lt;span style="font-style: italic;"&gt;rt_sigqueueinfo(2)&lt;/span&gt;&lt;/a&gt; documents the &lt;span style="font-style: italic;"&gt;rt_sigqueueinfo()&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;rt_tgsigqueueinfo()&lt;/span&gt; system calls. At the same time, the &lt;a href="http://man7.org/linux/man-pages/man3/sigqueue.3.html"&gt;&lt;em&gt;sigqueue()&lt;/em&gt; man page&lt;/a&gt; was moved from Section 2 to Section 3, since the interface it documents really is a library function (layered on top of &lt;span style="font-style: italic;"&gt;rt_sigqueueinfo()&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;New man pages for the &lt;a href="http://man7.org/linux/man-pages/man4/cciss.4.html"&gt;&lt;span style="font-style: italic;"&gt;cciss(4)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://man7.org/linux/man-pages/man4/hpsa.4.html"&gt;&lt;span style="font-style: italic;"&gt;hpsa(4)&lt;/span&gt;&lt;/a&gt; drivers. Thanks to Stephen Cameron.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man2/fstatat.2.html"&gt;&lt;span style="font-style: italic;"&gt;fstatat(2)&lt;/span&gt;&lt;/a&gt; man page adds documentation of the &lt;span style="font-family:courier new;"&gt;AT_NO_AUTOMOUNT&lt;/span&gt; flag added in Linux 2.6.38.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man2/lseek.2.html"&gt;&lt;span style="font-style: italic;"&gt;lseek(2)&lt;/span&gt;&lt;/a&gt; man page adds documentation of the &lt;span style="font-family:courier new;"&gt;SEEK_HOLE&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;SEEK_DATA&lt;/span&gt; commands scheduled for the upcoming Linux 3.1. (These commands allow a program to map file holes.)&lt;/li&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man2/madvise.2.html"&gt;&lt;span style="font-style: italic;"&gt;madvise(2)&lt;/span&gt;&lt;/a&gt; man page adds documentation of the &lt;span style="font-family:courier new;"&gt;MADV_HUGEPAGE&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;MADV_NOHUGEPAGE&lt;/span&gt; commands added in Linux 2.6.38.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man7/feature_test_macros.7.html"&gt;&lt;span style="font-style: italic;"&gt;feature_test_macros(7)&lt;/span&gt;&lt;/a&gt; man page adds documentation of the &lt;span style="font-family:courier new;"&gt;_ISOC95_SOURCE&lt;/span&gt; macro added in &lt;em&gt;glibc&lt;/em&gt; 2.12&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2316152602796308405?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2316152602796308405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2316152602796308405' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2316152602796308405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2316152602796308405'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2011/09/man-pages-334-is-released.html' title='&lt;em&gt;man-pages-3.34&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-552555291757243751</id><published>2011-09-20T12:17:00.002+02:00</published><updated>2011-11-23T10:24:40.192+01:00</updated><title type='text'>man-pages-3.33 is released</title><content type='html'>After a long gap, I've released &lt;em&gt;man-pages-3.33&lt;/em&gt;. Given the ongoing problems at &lt;em&gt;kernel.org&lt;/em&gt;, the various pieces of the release are at different locations than usual (and possibly some of these locations may become permanent). The browsable online pages can be found on &lt;a href="http://man7.org/linux/man-pages/"&gt;man7.org&lt;/a&gt;; the release tarball is available &lt;a href="http://man7.org/linux/man-pages/download/man-pages-3.33.tar.gz"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A git repository for &lt;em&gt;man-pages&lt;/em&gt; can be found on &lt;a href="https://github.com/mkerrisk/man-pages"&gt;github&lt;/a&gt;. You can clone the repository with the command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   $ git clone git@github.com:mkerrisk/man-pages.git&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The most notable &lt;a href="http://man7.org/linux/man-pages/changelog.html#release_3.33"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.33&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man2/sync.2.html"&gt;&lt;span style="font-style: italic;"&gt;sync(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the &lt;span style="font-style: italic;"&gt;syncfs()&lt;/span&gt; system call that was added in Linux 2.6.39.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man2/syscalls.2.html"&gt;&lt;span style="font-style: italic;"&gt;syscalls(2)&lt;/span&gt;&lt;/a&gt; has been updated to be current as at Linux 3.1.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://man7.org/linux/man-pages/man2/syslog.2.html"&gt;&lt;span style="font-style: italic;"&gt;syslog(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the &lt;span style="font-family:courier new;"&gt;CAP_SYSLOG&lt;/span&gt; capability added in Linux 2.6.37.&lt;/li&gt;&lt;/ul&gt;In addition, various fixes were made in many other pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-552555291757243751?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/552555291757243751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=552555291757243751' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/552555291757243751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/552555291757243751'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2011/09/man-pages-333-is-released.html' title='&lt;em&gt;man-pages-3.33&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3374183602554258675</id><published>2011-09-20T08:34:00.009+02:00</published><updated>2011-10-04T14:16:29.420+02:00</updated><title type='text'>Relocated git repository for man-pages</title><content type='html'>&lt;div&gt;Since kernel.org remains down, I've set up a man-pages git repo on github, at &lt;a href="https://github.com/mkerrisk/man-pages"&gt;https://github.com/mkerrisk/man-pages&lt;/a&gt;. To clone the repo:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family:courier new;"&gt;  &amp;nbsp; git clone git@github.com:mkerrisk/man-pages.git&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I'm undecided yet, but this may become the permanent location of the upstream repository.&lt;/div&gt;&lt;br /&gt;&lt;i&gt;Update 2011-10-04&lt;/i&gt;: as a couple of people pointed out (and as I noted in some later posts), the better commands for cloning the repo would be:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &amp;nbsp; git clone git://github.com/mkerrisk/man-pages.git &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  &amp;nbsp; git clone https://github.com/mkerrisk/man-pages.git&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3374183602554258675?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3374183602554258675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3374183602554258675' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3374183602554258675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3374183602554258675'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2011/09/relocated-git-repository-for-man-pages.html' title='Relocated git repository for &lt;em&gt;man-pages&lt;/em&gt;'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-1202247445963358769</id><published>2010-12-05T15:03:00.001+01:00</published><updated>2010-12-05T15:03:58.848+01:00</updated><title type='text'>man-pages-3.32 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.32&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.32"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.32&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/readv.2.html"&gt;&lt;span style="font-style: italic;"&gt;readv(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the &lt;span style="font-style: italic;"&gt;preadv()&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;pwritev()&lt;/span&gt; system calls.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getrlimit.2.html"&gt;&lt;span style="font-style: italic;"&gt;getrlimit(2)&lt;/span&gt;&lt;/a&gt; page adds an example of the use of the&lt;span style="font-style: italic;"&gt; recently added prlimit()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_sigqueue.3.html"&gt;&lt;span style="font-style: italic;"&gt;phread_sigqueue(3)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="font-style: italic;"&gt;pthread_sigqueue()&lt;/span&gt; library function.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-1202247445963358769?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/1202247445963358769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=1202247445963358769' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1202247445963358769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1202247445963358769'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/12/man-pages-332-is-released.html' title='&lt;em&gt;man-pages-3.32&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6504575776273201165</id><published>2010-11-17T21:45:00.001+01:00</published><updated>2010-11-20T07:37:12.280+01:00</updated><title type='text'>The Linux Programming Interface is released</title><content type='html'>I'm happy to announce that my book, &lt;span style="FONT-STYLE: italic"&gt;The Linux Programming Interface&lt;/span&gt; (TLPI), is now available. TLPI is a detailed guide and reference for system programming on Linux and UNIX systems, 1552 pages in length, with 115 diagrams, 88 tables, nearly 200 example programs, and over 200 exercises.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.man7.org/tlpi/"&gt;TLPI web site&lt;/a&gt; contains the detailed table of contents (&lt;a href="http://www.man7.org/tlpi/download/TLPI-TOC-detailed.pdf"&gt;PDF&lt;/a&gt; or &lt;a href="http://www.man7.org/tlpi/toc-detailed.html"&gt;HTML&lt;/a&gt;), preface, sample chapters, and index for download. It also provides complete &lt;a href="http://www.man7.org/tlpi/code/"&gt;source code&lt;/a&gt; for the book (both as a tarball for download and &lt;a href="http://www.man7.org/tlpi/code/online/"&gt;browsable as individual files online&lt;/a&gt;). You can find a detailed description of TLPI on the web site &lt;a href="http://www.man7.org/tlpi/tlpi_in_detail.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A few &lt;span style="FONT-WEIGHT: bold"&gt;reviews&lt;/span&gt; (all extremely positive) have already appeared. You can find pointers to reviews &lt;a href="http://www.man7.org/tlpi/reviews.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For information on &lt;span style="FONT-WEIGHT: bold"&gt;ordering&lt;/span&gt; (a nice way to support the work of the &lt;em&gt;man-pages&lt;/em&gt; maintainer!), look &lt;a href="http://www.man7.org/tlpi/index.html#ordering"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;(Post updated 2010-11-20, to fix a typo and add a detail to the description.)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WgybbNCbhU0/TN9xGJp6XiI/AAAAAAAAAD0/4s-ZI1tFPnY/s1600/DSC_3317-ax-red.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 286px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5539270417173863970" border="0" alt="" src="http://4.bp.blogspot.com/_WgybbNCbhU0/TN9xGJp6XiI/AAAAAAAAAD0/4s-ZI1tFPnY/s400/DSC_3317-ax-red.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6504575776273201165?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6504575776273201165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6504575776273201165' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6504575776273201165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6504575776273201165'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/11/linux-programming-interface-is-released.html' title='&lt;em&gt;The Linux Programming Interface&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WgybbNCbhU0/TN9xGJp6XiI/AAAAAAAAAD0/4s-ZI1tFPnY/s72-c/DSC_3317-ax-red.jpg' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6396137537216033629</id><published>2010-11-14T16:37:00.001+01:00</published><updated>2010-11-14T16:40:29.259+01:00</updated><title type='text'>man-pages-3.31 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.31&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). This is a fairly small release. The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.31"&gt;changes in &lt;span style="FONT-STYLE: italic"&gt;man-pages-3.31&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/setrlimit.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;getrlimit(2)&lt;/span&gt;&lt;/a&gt; man page adds documentation of the &lt;span style="FONT-STYLE: italic"&gt;prlimit()&lt;/span&gt; system call, which was new in Linux 2.6.36.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/inotify.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;inotify(7)&lt;/span&gt;&lt;/a&gt; man page adds documentation of the &lt;span style="font-family:courier new;"&gt;IN_EXCL_UNLINK&lt;/span&gt; flag, also new in Linux 2.6.36.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6396137537216033629?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6396137537216033629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6396137537216033629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6396137537216033629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6396137537216033629'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/11/man-pages-331-is-released.html' title='&lt;em&gt;man-pages-3.31&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-8257981554894609683</id><published>2010-11-07T08:40:00.005+01:00</published><updated>2010-11-07T16:20:49.967+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='API consistency'/><title type='text'>System call credential checking (a tale of inconsistency)</title><content type='html'>While looking at the new &lt;span style="font-style: italic;"&gt;prlimit()&lt;/span&gt; system call in Linux 2.6.36, I surveyed the various system calls that allow one process to change the operation or attributes of another (arbitrary) process. In general, these system calls require either that the caller is privileged (i.e., has some &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/capabilities.7.html"&gt;capability&lt;/a&gt;) or that there is a match between the credentials (user or group IDs) of the calling process and the target process.&lt;br /&gt;&lt;br /&gt;There's a great deal of inconsistency. As at 2.6.36, here's what we have (in the following, &lt;span style="font-style: italic;"&gt;uid&lt;/span&gt; means the &lt;span&gt;real&lt;/span&gt; UID of the caller, &lt;span style="font-style: italic;"&gt;euid&lt;/span&gt; means the &lt;span&gt;effective&lt;/span&gt; UID, and &lt;span style="font-style: italic;"&gt;suid&lt;/span&gt; means the saved set-user-ID; a similar convention applies for the group IDs--thus &lt;span style="font-style: italic;"&gt;gid&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;egid&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;sgid&lt;/span&gt;; and a "t-" prefix means the corresponding credentials of the target process):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/setpriority.2.html"&gt;&lt;span style="font-style: italic;"&gt;setpriority()&lt;/span&gt;&lt;/a&gt;, &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setscheduler.2.html"&gt;sched_setscheduler()&lt;/a&gt;&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setparam.2.html"&gt;sched_setparam()&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setaffinity.2.html"&gt;sched_setaffinity()&lt;/a&gt;&lt;/span&gt;: &lt;span style="font-family:courier new;"&gt;CAP_SYS_NICE&lt;/span&gt; || &lt;span style="font-style: italic;"&gt;euid == t-uid || euid == t-euid&lt;/span&gt;. This is sane: you can make changes to another process if you have the right capability or you own the process--that is, you (i.e., here "you" means the UID currently operated via the effective UID) can change the attributes of a process that was originally created by you (&lt;span style="font-style: italic;"&gt;euid == t-uid&lt;/span&gt;) or one that has assumed (via the set-user-ID mechanism) your identity (&lt;span style="font-style: italic;"&gt;euid == t-euid&lt;/span&gt;). POSIX specifies that the checks for &lt;span style="font-style: italic;"&gt;setpriority()&lt;/span&gt; are &lt;span style="font-style: italic;"&gt;uid == t-euid || euid == t-euid&lt;/span&gt;; the Linux semantics are arguably saner (and are consistent with historical BSD &lt;span style="font-style: italic;"&gt;&lt;/span&gt;behavior). POSIX specifies &lt;span style="font-style: italic;"&gt;sched_setscheduler()&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;sched_setparam()&lt;/span&gt; but does not specify their permission-checking semantics.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/ioprio_set.2.html"&gt;&lt;span style="font-style: italic;"&gt;ioprio_set()&lt;/span&gt;&lt;/a&gt;: &lt;span style="font-family:courier new;"&gt;CAP_SYS_NICE&lt;/span&gt; || &lt;span style="font-style: italic;"&gt;uid == t-uid || euid == t-uid.&lt;/span&gt; The caller is privileged, or the caller's real or effective UID matches the target process's UID. There's no obvious reason for the inconsistency with &lt;span style="font-style: italic;"&gt;setpriority()&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/migrate_pages.2.html"&gt;&lt;span style="font-style: italic;"&gt;migrate_pages()&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/move_pages.2.html"&gt;&lt;span style="font-style: italic;"&gt;move_pages()&lt;/span&gt;&lt;/a&gt;: &lt;span style="font-family:courier new;"&gt;CAP_SYS_NICE&lt;/span&gt; || &lt;span style="font-style: italic;"&gt;uid == t-uid || uid == t-suid || euid == t-uid || euid == t-suid&lt;/span&gt;. Like &lt;span style="font-style: italic;"&gt;setpriority()&lt;/span&gt;, but you can also make changes if your real UID matches target credentials. Again, there's no obvious reason for the inconsistency with &lt;span style="font-style: italic;"&gt;setpriority()&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/kill.2.html"&gt;&lt;span style="font-style: italic;"&gt;kill()&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/killpg.2.html"&gt;&lt;span style="font-style: italic;"&gt;killpg()&lt;/span&gt;&lt;/a&gt;: &lt;span style="font-family:courier new;"&gt;CAP_KILL&lt;/span&gt; || &lt;span style="font-style: italic;"&gt;uid == t-uid || uid == t-suid || euid == t-uid euid == t-suid&lt;/span&gt;.&lt;span style="font-family:courier new;"&gt;&lt;/span&gt; The UID-matching semantics are as required by POSIX: the real or effective UID of the caller must match the real or saved set-user-ID of the target.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;prlimit()&lt;/span&gt;: &lt;span style="font-family:courier new;"&gt;CAP_SYS_RESOURCE&lt;/span&gt; || &lt;span style="font-style: italic;"&gt;(uid == t-uid &amp;amp;&amp;amp; uid == t-euid &amp;amp;&amp;amp; uid == t-suid) &lt;/span&gt;&amp;amp;&amp;amp; &lt;span style="font-style: italic;"&gt;(gid == t-gid &amp;amp;&amp;amp; gid == t-guid &amp;amp;&amp;amp; gid == t-sgid)&lt;/span&gt;. Now we start to get into strange territory. Using &lt;span style="font-family:courier new;"&gt;CAP_SYS_RESOURCE&lt;/span&gt; makes sense, because &lt;span style="font-family:courier new;"&gt;CAP_SYS_RESOURCE&lt;/span&gt; is used for the privilege checks in the &lt;span style="font-style: italic;"&gt;setrlimit()&lt;/span&gt; system call. However, requiring that all of the UIDs of the target match the real UID of the caller is quite inconsistent with any of the other APIs. Adding an analogous check for the group IDs further compounds the inconsistency.&lt;/li&gt;&lt;/ul&gt;One thing to note: the behavior of most of the Linux-specific system calls (i.e., &lt;span style="font-style: italic;"&gt;ioprio_set()&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;move_pages()&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;migrate_pages()&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;prlimit()&lt;/span&gt;)  was documented only after the implementation, which I'd argue was a contributing factor to the inconsistencies described above.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-8257981554894609683?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/8257981554894609683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=8257981554894609683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8257981554894609683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8257981554894609683'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/11/system-call-credential-checking-tale-of.html' title='System call credential checking (a tale of inconsistency)'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6460225415402580364</id><published>2010-11-01T19:10:00.001+01:00</published><updated>2010-11-01T19:10:00.833+01:00</updated><title type='text'>man-pages-3.30 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.30&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.30"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.30&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/kexec_load.2.html"&gt;&lt;span style="font-style: italic;"&gt;kexec_load(2)&lt;/span&gt;&lt;/a&gt; man page documents the &lt;span style="font-style: italic;"&gt;kexec_load()&lt;/span&gt; system call. Thanks to &lt;a href="http://www.halobates.de/"&gt;Andi Kleen&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/lio_listio.3.html"&gt;&lt;span style="font-style: italic;"&gt;lio_listio(3)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="font-style: italic;"&gt;lio_listio()&lt;/span&gt; library function.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/reboot.2.html"&gt;&lt;span style="font-style: italic;"&gt;reboot(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the &lt;span style="font-family: courier new;"&gt;LINUX_REBOOT_KEXEC&lt;/span&gt; command.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/unshare.2.html"&gt;&lt;span style="font-style: italic;"&gt;unshare(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of &lt;span style="font-family: courier new;"&gt;CLONE_NEWIPC&lt;/span&gt;, &lt;span style="font-family: courier new;"&gt;CLONE_NEWNET&lt;/span&gt;, &lt;span style="font-family: courier new;"&gt;CLONE_SYSVSEM&lt;/span&gt;, and &lt;span style="font-family: courier new;"&gt;CLONE_NEWUTS&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Various consistency fixes were made across a wide range of pages.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6460225415402580364?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6460225415402580364/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6460225415402580364' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6460225415402580364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6460225415402580364'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/11/man-pages-330-is-released.html' title='&lt;em&gt;man-pages-3.30&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-8490986257713736937</id><published>2010-10-20T13:19:00.001+02:00</published><updated>2010-11-01T16:33:00.597+01:00</updated><title type='text'>man-pages-3.29 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.29&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.29"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.29&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/subpage_prot.2.html"&gt;&lt;span style="font-style: italic;"&gt;subpage_prot(2)&lt;/span&gt;&lt;/a&gt; system call documents an ARM-specific system call for setting sub-page protections&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_init.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_init(3)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="font-style: italic;"&gt;aio_init()&lt;/span&gt; library function.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/posix_fadvise.2.html"&gt;&lt;span style="font-style: italic;"&gt;posix_fadvise(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the ARM-specific &lt;span style="font-style: italic;"&gt;arm_fadvise64_64()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sync_file_range.2.html"&gt;&lt;span style="font-style: italic;"&gt;sync_file_range(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the architecture-specific &lt;span style="font-style: italic;"&gt;sync_file_range(2)&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/psignal.3.html"&gt;&lt;span style="font-style: italic;"&gt;psignal(3)&lt;/span&gt;&lt;/a&gt; page adds documentation of the &lt;span style="font-style: italic;"&gt;psiginfo()&lt;/span&gt; library function.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/ip.7.html"&gt;&lt;span style="font-style: italic;"&gt;ip(7)&lt;/span&gt;&lt;/a&gt; page adds descriptions of the &lt;span style="font-family:courier new;"&gt;IP_RECVORIGDSTADDR&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;IP_TRANSPARENT&lt;/span&gt;, and &lt;span style="font-family:courier new;"&gt;IP_FREEBIND&lt;/span&gt; socket options.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/unix.7.html"&gt;&lt;span style="font-style: italic;"&gt;unix(7)&lt;/span&gt;&lt;/a&gt; page adds documentation for the autobind feature and fixes the description of abstract socket names.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-8490986257713736937?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/8490986257713736937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=8490986257713736937' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8490986257713736937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8490986257713736937'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/10/man-pages-329-is-released.html' title='&lt;em&gt;man-pages-3.29&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-938200927977955104</id><published>2010-10-11T09:08:00.001+02:00</published><updated>2010-10-11T09:08:25.383+02:00</updated><title type='text'>man-pages-3.28 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.28&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.28"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.28&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getaddrinfo_a.3.html"&gt;&lt;span style="font-style: italic;"&gt;getaddrinfo_a(3)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="font-style: italic;"&gt;getaddrinfo_a(3)&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;gai_suspend(3)&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;gai_cancel(3)&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;gai_error(3)&lt;/span&gt; library functions. Thanks to &lt;a href="http://pasky.or.cz/%7Epasky/"&gt;Petr Baudis&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/aio.7.html"&gt;&lt;span style="font-style: italic;"&gt;aio(7)&lt;/span&gt;&lt;/a&gt; page provides an overview of the POSIX asynchronous I/O API.&lt;/li&gt;&lt;li&gt;Various improvements were made to the section 3 pages describing the POSIX asynchronous I/O API: &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_cancel.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_cancel(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_error.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_error(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_fsync.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_fsync(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_read.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_read(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_return.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_return(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_suspend.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_suspend(3)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/aio_write.3.html"&gt;&lt;span style="font-style: italic;"&gt;aio_write(3)&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exec.3.html"&gt;&lt;span style="font-style: italic;"&gt;exec(3)&lt;/span&gt;&lt;/a&gt; page adds documentation for the &lt;span style="font-style: italic;"&gt;execvpe(3)&lt;/span&gt; library function.&lt;/li&gt;&lt;li&gt;Continuing the work of &lt;span style="font-style: italic;"&gt;man-pages-3.27&lt;/span&gt;, information about feature test macro requirements was improved in various pages.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-938200927977955104?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/938200927977955104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=938200927977955104' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/938200927977955104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/938200927977955104'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/10/man-pages-328-is-released.html' title='&lt;em&gt;man-pages-3.28&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2417979675712092232</id><published>2010-09-22T19:01:00.001+02:00</published><updated>2010-10-05T14:49:03.324+02:00</updated><title type='text'>man-pages-3.27 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.27&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.27"&gt;changes in &lt;span style="FONT-STYLE: italic"&gt;man-pages-3.27&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html"&gt;feature test macro&lt;/a&gt; requirements in a large number of pages were updated, either to incorporate changes in recent &lt;span style="FONT-STYLE: italic"&gt;glibc&lt;/span&gt; releases, to fix errors in existing pages, or to add requirements to pages that did not previously document them.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/sigevent.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;sigevent(7)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="FONT-STYLE: italic"&gt;sigevent&lt;/span&gt; structure that is used by several APIs that provide asynchronous notification. This page was created by extracting out the generic material on &lt;span style="FONT-STYLE: italic"&gt;sigevent&lt;/span&gt; from the &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timer_create.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;timer_create(2)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/mq_notify.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;mq_notify(3)&lt;/span&gt;&lt;/a&gt; pages. Thanks to &lt;a href="http://pasky.or.cz/~pasky/"&gt;Petr Baudis&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Additional information and an example program were added to the &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/insque.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;insque(3)&lt;/span&gt;&lt;/a&gt; page.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/rand.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;rand(3)&lt;/span&gt;&lt;/a&gt; page was expanded, and an example program added.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/ip.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;ip(7)&lt;/span&gt;&lt;/a&gt; manual page adds documentation of the &lt;span style="font-family:courier new;"&gt;IP_NODEFRAG&lt;/span&gt; socket option (new in Linux 2.6.36)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2417979675712092232?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2417979675712092232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2417979675712092232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2417979675712092232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2417979675712092232'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/09/man-pages-327-is-released.html' title='&lt;em&gt;man-pages-3.27&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4638264583985049378</id><published>2010-09-12T16:55:00.003+02:00</published><updated>2010-09-12T16:57:51.645+02:00</updated><title type='text'>I'll be at Linux Kongress</title><content type='html'>I'll be at the &lt;a href="http://www.linux-kongress.org/2010/"&gt;upcoming Linux Kongress&lt;/a&gt;, 23-24 September, in Nuremberg, Germany. All going well, I'll be there with copies of my book, &lt;a href="http://www.man7.org/tlpi/"&gt;&lt;span style="font-style: italic;"&gt;The Linux Programming Interface&lt;/span&gt;&lt;/a&gt;, which I should receive in the coming week. Get in touch with me at mtk-AT-man7.org, if you'll be at the conference and would like to see a copy of the book.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4638264583985049378?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4638264583985049378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4638264583985049378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4638264583985049378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4638264583985049378'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/09/ill-be-at-linux-kongress.html' title='I&apos;ll be at Linux Kongress'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-1973201737186666630</id><published>2010-09-10T21:37:00.002+02:00</published><updated>2010-09-22T18:35:14.930+02:00</updated><title type='text'>man-pages-3.26 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.26&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Mostly, this release consists of minor changes to existing pages. The notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.26"&gt;changes in &lt;span style="FONT-STYLE: italic"&gt;man-pages-3.26&lt;/span&gt;&lt;/a&gt; are as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/eventfd.2.html"&gt;eventfd(2)&lt;/a&gt;&lt;/em&gt; page adds documentation of the &lt;span style="font-family:courier new;"&gt;EFD_SEMAPHORE&lt;/span&gt; flag (new in Linux 2.6.30).&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/tzfile.5.html"&gt;tzfile(5)&lt;/a&gt;&lt;/em&gt; manual page adds documentation of version 2 format timezone files.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-1973201737186666630?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/1973201737186666630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=1973201737186666630' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1973201737186666630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1973201737186666630'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/09/man-pages-326-is-released.html' title='&lt;em&gt;man-pages-3.26&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3005877749442379996</id><published>2010-08-30T18:29:00.002+02:00</published><updated>2010-08-31T07:19:38.641+02:00</updated><title type='text'>Coming soon: The Linux Programming Interface</title><content type='html'>My book, &lt;em&gt;The Linux Programming Interface&lt;/em&gt;, is now just a few days away from leaving the printer. (Most likely, people in the US who &lt;a href="http://www.man7.org/tlpi/index.html"&gt;order online&lt;/a&gt; now will see the book before I even get a copy here in Germany.)&lt;br /&gt;&lt;br /&gt;I've built out the content of the &lt;a href="http://www.man7.org/tlpi/index.html"&gt;book web site&lt;/a&gt; with further information about the book, including:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The table of contents, preface, and index from the book.&lt;/li&gt;&lt;li&gt;A downloadable sample chapter from the book.&lt;/li&gt;&lt;li&gt;Complete source code, browsable as individual web pages.&lt;/li&gt;&lt;li&gt;Source code tarballs containing all of the examples from the book.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_WgybbNCbhU0/THUPSzePewI/AAAAAAAAADk/1uLNWjCvUjc/s1600/TLPI-complete-cover.png"&gt;&lt;img style="text-align: center; margin: 0px auto 10px; width: 594px; display: block; height: 350px;" id="BLOGGER_PHOTO_ID_5509326534886783746" alt="" src="http://2.bp.blogspot.com/_WgybbNCbhU0/THUPSzePewI/AAAAAAAAADk/1uLNWjCvUjc/s400/TLPI-complete-cover.png" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3005877749442379996?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3005877749442379996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3005877749442379996' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3005877749442379996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3005877749442379996'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/08/coming-soon-linux-programming-interface.html' title='Coming soon: The Linux Programming Interface'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WgybbNCbhU0/THUPSzePewI/AAAAAAAAADk/1uLNWjCvUjc/s72-c/TLPI-complete-cover.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6816431646170760769</id><published>2010-06-26T15:59:00.001+02:00</published><updated>2010-06-26T15:59:00.166+02:00</updated><title type='text'>man-pages-3.25 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.25&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.25"&gt;changes in &lt;span style="FONT-STYLE: italic"&gt;man-pages-3.25&lt;/span&gt;&lt;/a&gt; are the following: &lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/migrate_pages.2.html"&gt;migrate_pages(2)&lt;/a&gt;&lt;/em&gt; manual page, written by &lt;a href="http://www.halobates.de/"&gt;Andi Kleen&lt;/a&gt;, documenting the &lt;em&gt;migrate_pages()&lt;/em&gt; system call (added to Linux back in kernel 2.6.16).&lt;br /&gt;&lt;li&gt;A major update of the &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/quotactl.2.html"&gt;quotactl(2)&lt;/a&gt;&lt;/em&gt; manual page. This update incorporates material from the version of this page (mostly written by Jan Kara) that was in the &lt;em&gt;quota-tools&lt;/em&gt; package, and also adds new material by me. The &lt;em&gt;quotactl(2)&lt;/em&gt; manual page that was in &lt;em&gt;quota-tools&lt;/em&gt; has been &lt;a href="http://linuxquota.cvs.sourceforge.net/viewvc/linuxquota/quota-tools/Changelog?revision=1.164&amp;amp;view=markup"&gt;dropped&lt;/a&gt; from that package, so that there is now a single canonical &lt;em&gt;quotactl(2)&lt;/em&gt; page--the one in &lt;em&gt;man-pages&lt;/em&gt;.&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/mkstemp.3.html"&gt;mkstemp(3)&lt;/a&gt;&lt;/em&gt; manual page adds descriptions of the &lt;em&gt;mkstemps()&lt;/em&gt; and &lt;em&gt;mkostemps()&lt;/em&gt; library functions, which were added to &lt;em&gt;glibc&lt;/em&gt; in version 2.11.&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html"&gt;fcntl(2)&lt;/a&gt;&lt;/em&gt; man page adds descriptions of the &lt;span style="font-family:courier new;"&gt;F_SETPIPE_SZ&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;F_GETPIPE_SZ&lt;/span&gt; operations, which are new in Linux 2.6.35.&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/madvise.2.html"&gt;madvise(2)&lt;/a&gt;&lt;/em&gt; manual page adds descriptions of the following operations: &lt;span style="font-family:courier new;"&gt;MADV_HWPOISON&lt;/span&gt; (new in kernel 2.6.32), &lt;span style="font-family:courier new;"&gt;MADV_MERGEABLE&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;MADV_UNMERGEABLE&lt;/span&gt; (new in Linux 2.6.32), and &lt;span style="font-family:courier new;"&gt;MADV_SOFT_OFFLINE&lt;/span&gt; (new in Linux 2.6.33).&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html"&gt;prctl(2)&lt;/a&gt;&lt;/em&gt; manual page adds descriptions of the hardware poison operations (&lt;span style="font-family:courier new;"&gt;PR_MCE_KILL&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;PR_MCE_KILL_GET&lt;/span&gt;) added in kernel 2.6.32.&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setscheduler.2.html"&gt;sched_setscheduler(2)&lt;/a&gt;&lt;/em&gt; manual page adds a description of the &lt;span style="font-family:courier new;"&gt;SCHED_RESET_ON_FORK&lt;/span&gt; flag, which was new in kernel 2.6.32.&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/umount.2.html"&gt;umount(2)&lt;/a&gt;&lt;/em&gt; manual page adds a description of &lt;span style="font-family:courier new;"&gt;UMOUNT_NOFOLLOW&lt;/span&gt; (new in kernel 2.6.34).&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/socket.7.html"&gt;socket(7)&lt;/a&gt;&lt;/em&gt; manual page adds descriptions of the read-only socket operations &lt;span style="font-family:courier new;"&gt;SO_DOMAIN&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;SO_PROTOCOL&lt;/span&gt;, both new in kernel 2.6.32.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6816431646170760769?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6816431646170760769/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6816431646170760769' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6816431646170760769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6816431646170760769'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/06/man-pages-325-is-released.html' title='&lt;em&gt;man-pages-3.25&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5482810137338128265</id><published>2010-04-14T23:01:00.002+02:00</published><updated>2010-05-01T13:28:08.562+02:00</updated><title type='text'>Book progress</title><content type='html'>Production of my book, &lt;a href="http://blog.man7.org/2009/07/whats-book-about.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;The Linux Programming Interface&lt;/span&gt;&lt;/a&gt;, which provides a &lt;a href="http://blog.man7.org/2009/12/complete-table-of-contents.html"&gt;detailed description&lt;/a&gt; of Linux and UNIX system programming, has stretched out longer than I and &lt;a href="http://www.nostarch.com/"&gt;No Starch Press&lt;/a&gt; were hoping, but by now we're getting close to the end: the book should appear in June (I'll post more precise dates on &lt;a href="http://blog.man7.org/"&gt;my other blog&lt;/a&gt; as we get closer to publication date).&lt;br /&gt;&lt;br /&gt;In the meantime, I've made the first steps toward building out a &lt;a href="http://www.man7.org/"&gt;web site&lt;/a&gt; for the book. Most notably, I've started putting some sample some sample code from the book online. Take a look &lt;a href="http://www.man7.org/tlpi/code/online/online_dir.html"&gt;here&lt;/a&gt; to see the code from Chapters 3 to 12, and send me comments at &lt;span style="FONT-STYLE: italic;font-family:courier new;" &gt;mtk AT man7.org&lt;/span&gt;, if you want.&lt;br /&gt;&lt;br /&gt;And, we finalized the cover (and, evidently, the subtitle) for the book:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WgybbNCbhU0/S8YqaOPhckI/AAAAAAAAADc/yR-pmGBNmus/s1600/linuxprogramming_big-a.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 303px; DISPLAY: block; HEIGHT: 400px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5460098228221473346" border="0" alt="" src="http://2.bp.blogspot.com/_WgybbNCbhU0/S8YqaOPhckI/AAAAAAAAADc/yR-pmGBNmus/s400/linuxprogramming_big-a.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Updated 1 May 2010, to correct email address.&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5482810137338128265?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5482810137338128265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5482810137338128265' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5482810137338128265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5482810137338128265'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/04/book-progress.html' title='Book progress'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WgybbNCbhU0/S8YqaOPhckI/AAAAAAAAADc/yR-pmGBNmus/s72-c/linuxprogramming_big-a.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-558291106288765144</id><published>2010-02-27T16:40:00.002+01:00</published><updated>2010-02-27T17:00:38.544+01:00</updated><title type='text'>man-pages-3.24 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.24&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.24"&gt;changes in &lt;span style="FONT-STYLE: italic"&gt;man-pages-3.24&lt;/span&gt;&lt;/a&gt; are the following: &lt;ul&gt;&lt;li&gt;The addition of three pages by David Howells describing the kernel key management facility: &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/add_key.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;add_key(2)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/request_key.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;request_key(2)&lt;/span&gt;&lt;/a&gt;, and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/keyctl.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;keyctl(2)&lt;/span&gt;&lt;/a&gt;. (These pages were formerly part of the &lt;em&gt;keyutils&lt;/em&gt; package.)&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html"&gt;&lt;em&gt;fcntl(2)&lt;/em&gt;&lt;/a&gt; manual pages adds documention of &lt;span style="font-family:courier new;"&gt;F_SETOWN_EX&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;F_GETOWN_EX&lt;/span&gt;, which are new in Linux 2.6.32.&lt;/li&gt;&lt;li&gt;Minor changes to many other pages.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-558291106288765144?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/558291106288765144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=558291106288765144' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/558291106288765144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/558291106288765144'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2010/02/man-pages-324-is-released.html' title='&lt;em&gt;man-pages-3.24&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4379478880010929573</id><published>2009-10-03T07:45:00.003+02:00</published><updated>2009-10-03T07:59:48.366+02:00</updated><title type='text'>man-pages-3.23 release; my book progresses</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.23&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). This release consists entirely of fixes to existing pages.&lt;br /&gt;&lt;br /&gt;Meanwhile, progress continues on my book providing a detailed description of Linux and Unix system programming. &lt;a href="http://blog.man7.org/2009/10/we-have-book-title.html"&gt;We now have a title&lt;/a&gt;: &lt;span style="font-style: italic;"&gt;The Linux Programming Interface&lt;/span&gt;. I've also posted the &lt;a href="http://blog.man7.org/2009/09/chapters-1-to-42.html"&gt;detailed table of contents of chapters 1 to 42&lt;/a&gt;. (Full list of chapters &lt;a href="http://blog.man7.org/2009/07/64-chapters.html"&gt;here&lt;/a&gt;; draft preface &lt;a href="http://blog.man7.org/2009/07/whats-book-about.html"&gt;here&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4379478880010929573?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4379478880010929573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4379478880010929573' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4379478880010929573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4379478880010929573'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/10/man-pages-323-release-my-book.html' title='&lt;em&gt;man-pages-3.23&lt;/em&gt; release; my book progresses'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6778504060846807865</id><published>2009-09-28T14:04:00.001+02:00</published><updated>2009-09-28T14:08:45.025+02:00</updated><title type='text'>See you at LCA 2010!</title><content type='html'>One of my proposals got accepted for &lt;a href="http://www.lca2010.org.nz/"&gt;LCA 2010&lt;/a&gt;, in Wellington, New Zealand! As usual, there look to be &lt;a href="http://www.lca2010.org.nz/programme/schedule"&gt;lots of interesting papers&lt;/a&gt; at LCA. I'm presenting a tutorial on &lt;a href="http://www.lca2010.org.nz/programme/schedule/view_talk/50125?day=friday"&gt;writing secure privileged programs&lt;/a&gt;, which will draw heavily on &lt;a href="http://blog.man7.org/2009/09/chapter-38-writing-secure-privileged.html"&gt;Chapter 38&lt;/a&gt; of &lt;a href="http://blog.man7.org/2009/07/64-chapters.html"&gt;my&lt;/a&gt; &lt;a href="http://blog.man7.org/2009/07/whats-book-about.html"&gt;book&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6778504060846807865?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6778504060846807865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6778504060846807865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6778504060846807865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6778504060846807865'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/09/see-you-at-lca-2010.html' title='See you at LCA 2010!'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4136509645849464393</id><published>2009-09-10T19:54:00.003+02:00</published><updated>2009-09-10T19:54:00.289+02:00</updated><title type='text'>What to call my book?</title><content type='html'>We (me, &lt;a href="http://www.nostarch.com/"&gt;my publisher&lt;/a&gt;) are still trying to work out what to call my (&lt;a href="http://blog.man7.org/2009/07/64-chapters.html"&gt;lengthy&lt;/a&gt;) system programming &lt;a href="http://blog.man7.org/2009/07/whats-book-about.html"&gt;book&lt;/a&gt;. On my other blog, I'm &lt;a href="http://blog.man7.org/2009/09/choosing-title-for-book.html"&gt;asking for opinions&lt;/a&gt; from potential readers. If you'd like to help me name my book, please have a read of that blog post and send me a vote!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4136509645849464393?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4136509645849464393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4136509645849464393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4136509645849464393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4136509645849464393'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/09/what-to-call-my-book.html' title='What to call my book?'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5940272498704074266</id><published>2009-09-06T09:35:00.001+02:00</published><updated>2009-09-06T09:35:00.434+02:00</updated><title type='text'>System programming book now half-way through copyediting</title><content type='html'>My book on Lunux/Unix system programming is now more than half-way through copyediting, so I've posted the &lt;a href="http://blog.man7.org/2009/08/chapters-1-to-33.html"&gt;detailed table of contents of the first 33 chapters&lt;/a&gt;. (For an overview of the book, &lt;a href="http://blog.man7.org/2009/07/whats-book-about.html"&gt;look here&lt;/a&gt;, and to see the brief table of contents--chapter names only--&lt;a href="http://blog.man7.org/2009/07/64-chapters.html"&gt;look here&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;We're still on schedule for the book to be published in the first half of 2010 (by &lt;a href="http://nostarch.com/"&gt;No Starch Press&lt;/a&gt;). Ongoing progress towards publication is regularly updated at &lt;a href="http://blog.man7.org/"&gt;blog.man7.org&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Please keep telling people about the book and the blog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5940272498704074266?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5940272498704074266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5940272498704074266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5940272498704074266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5940272498704074266'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/09/system-programming-book-now-half-way.html' title='System programming book now half-way through copyediting'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-595158091446524067</id><published>2009-07-27T22:30:00.000+02:00</published><updated>2009-07-27T22:34:01.086+02:00</updated><title type='text'>A different story: my book</title><content type='html'>For quite a long time now, I've been working on a book that covers much the same topic area as &lt;em&gt;man-pages&lt;/em&gt;; that is, the Linux/Unix kernel-userland interface (system calls, &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt;, and so on) and C library (&lt;em&gt;glibc&lt;/em&gt;) functions.&lt;br /&gt;&lt;br /&gt;The book is going to be comprehensive: it runs to around 1500 pages (exactly how long will depend on typesetting and page layout, which are just getting started), has 64 chapters, 116 diagrams, 85 tables, and around 250 example programs. It will be published in the first half of 2010 by &lt;a href="http://nostarch.com/"&gt;No Starch Press&lt;/a&gt;. You can read about its ongoing progress towards publication in my other blog at &lt;a href="http://blog.man7.org/"&gt;blog.man7.org&lt;/a&gt;. To get an overview of what the book is about, read &lt;a href="http://blog.man7.org/2009/07/whats-book-about.html"&gt;this post&lt;/a&gt;, and to see the table of contents of the book, read &lt;a href="http://blog.man7.org/2009/07/64-chapters.html"&gt;this post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And of course, please tell people about the book!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-595158091446524067?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/595158091446524067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=595158091446524067' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/595158091446524067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/595158091446524067'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/07/different-story-my-book.html' title='A different story: my book'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3858736698543157357</id><published>2009-07-25T20:38:00.001+02:00</published><updated>2009-07-25T20:40:44.101+02:00</updated><title type='text'>man-pages-3.22 is released</title><content type='html'>After a long gap without a release, I've uploaded &lt;em&gt;man-pages-3.22&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). This release consists entirely of fixes to existing pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3858736698543157357?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3858736698543157357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3858736698543157357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3858736698543157357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3858736698543157357'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/07/man-pages-322-is-released.html' title='&lt;em&gt;man-pages-3.22&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-7261114663178385292</id><published>2009-04-20T20:01:00.001+02:00</published><updated>2009-04-21T06:53:52.934+02:00</updated><title type='text'>man-pages-3.21 is released</title><content type='html'>A few days ago, I uploaded &lt;em&gt;man-pages-3.21&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.21"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.21&lt;/span&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_setconcurrency.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_setconcurrency(3)&lt;/span&gt;&lt;/a&gt; page documents &lt;span style="font-style: italic;"&gt;pthread_setconcurrency()&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;pthread_getconcurrency()&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_yield.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_yield(3)&lt;/span&gt;&lt;/a&gt; page documents &lt;span style="font-style: italic;"&gt;pthread_yield()&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html"&gt;&lt;span style="font-style: italic;"&gt;feature_test_macro(7)&lt;/span&gt;&lt;/a&gt; page adds information on the &lt;span&gt;changes that &lt;/span&gt;&lt;span style="font-style: italic;"&gt;g&lt;/span&gt;&lt;span style="font-style: italic;"&gt;libc &lt;/span&gt;2.10 makes &lt;span style="font-family:courier new;"&gt;&lt;features.h&gt;&lt;/features.h&gt;&lt;features.h&gt;&lt;/features.h&gt;&lt;/span&gt; for alignment with POSIX.1-2008, and adds an example program that can be used to display the feature test macros that are implicitly defined by particular &lt;span style="font-style: italic;"&gt;glibc&lt;/span&gt; versions and as a consequence of explicitly setting macros.&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WgybbNCbhU0/Se1EAOk9pzI/AAAAAAAAACs/Am10IUGZAwk/s1600-h/DSC_6840-xr.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 235px;" src="http://1.bp.blogspot.com/_WgybbNCbhU0/Se1EAOk9pzI/AAAAAAAAACs/Am10IUGZAwk/s400/DSC_6840-xr.jpg" alt="" id="BLOGGER_PHOTO_ID_5326988704952985394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Living with options, Los Gatos&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-7261114663178385292?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/7261114663178385292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=7261114663178385292' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7261114663178385292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7261114663178385292'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/04/man-pages-321-is-released.html' title='&lt;em&gt;man-pages-3.21&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WgybbNCbhU0/Se1EAOk9pzI/AAAAAAAAACs/Am10IUGZAwk/s72-c/DSC_6840-xr.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5353849236289092435</id><published>2009-03-30T23:45:00.000+02:00</published><updated>2009-03-30T23:47:11.651+02:00</updated><title type='text'>man-pages-3.20 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.20&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.20"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-3.20&lt;/span&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The addition of &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man4/cpuid.4.html"&gt;&lt;span style="font-style: italic;"&gt;cpuid(4)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man4/msr.4.html"&gt;&lt;span style="font-style: italic;"&gt;msr(4)&lt;/span&gt;&lt;/a&gt; device man pages (thanks to &lt;a href="http://www.halobates.de/"&gt;Andi Kleen&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Numerous fixes to other pages.&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WgybbNCbhU0/SdE64nuKuYI/AAAAAAAAACk/hY4exA6Aowk/s1600-h/DSC_5933-xr.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 309px; height: 400px;" src="http://4.bp.blogspot.com/_WgybbNCbhU0/SdE64nuKuYI/AAAAAAAAACk/hY4exA6Aowk/s400/DSC_5933-xr.jpg" alt="" id="BLOGGER_PHOTO_ID_5319097379310975362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Te whare karakia i Onuku, Ōtautahi&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5353849236289092435?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5353849236289092435/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5353849236289092435' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5353849236289092435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5353849236289092435'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/03/man-pages-320-is-released.html' title='&lt;em&gt;man-pages-3.20&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WgybbNCbhU0/SdE64nuKuYI/AAAAAAAAACk/hY4exA6Aowk/s72-c/DSC_5933-xr.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3464811602762931049</id><published>2009-02-25T03:17:00.001+01:00</published><updated>2009-02-25T03:17:49.450+01:00</updated><title type='text'>man-pages-3.19 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.19&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The most notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.19"&gt;change in &lt;span style="font-style: italic;"&gt;man-pages-3.19&lt;/span&gt;&lt;/a&gt; is the addition of four pages describing the POSIX interval timers API: &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timer_create.2.html"&gt;&lt;span style="font-style: italic;"&gt;timer_create(2)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timer_settime.2.html"&gt;&lt;span style="font-style: italic;"&gt;timer_settime(2)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timer_getoverrun.2.html"&gt;&lt;span style="font-style: italic;"&gt;timer_getoverrun(2)&lt;/span&gt;&lt;/a&gt;, and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timer_delete.2.html"&gt;&lt;span style="font-style: italic;"&gt;timer_delete(2)&lt;/span&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3464811602762931049?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3464811602762931049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3464811602762931049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3464811602762931049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3464811602762931049'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/02/man-pages-319-is-released.html' title='&lt;em&gt;man-pages-3.19&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5309884216012499132</id><published>2009-02-11T01:47:00.003+01:00</published><updated>2009-02-11T02:22:19.583+01:00</updated><title type='text'>man-pages-3.18 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.18&lt;/em&gt; (my one hundredth release as maintainer!) into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.18"&gt;changes in man-pages-3.18&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;4 new pages describing character sets: &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/armscii-8.7.html"&gt;&lt;em&gt;armscii-8(7)&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso_8859-11.7.html"&gt;&lt;em&gt;iso_8859-11(7)&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso_8859-4.7.html"&gt;&lt;em&gt;iso_8859-4(7)&lt;/em&gt;&lt;/a&gt;, and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso_8859-6.7.html"&gt;&lt;em&gt;iso _8859-6(7)&lt;/em&gt;&lt;/a&gt;. Thanks once again to Lefteris Dimitroulakis for contributing!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_kill.3.html"&gt;&lt;em&gt;pthread_kill(3)&lt;/em&gt;&lt;/a&gt; page documents &lt;em&gt;pthread_kill()&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_kill_other_threads_np.3.html"&gt;&lt;em&gt;pthread_kill_other_threads_np(3)&lt;/em&gt;&lt;/a&gt; page documents &lt;em&gt;pthread_kill_other_threads_np()&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_sigmask.3.html"&gt;pthread_sigmask(3)&lt;/a&gt; page documents &lt;em&gt;pthread_sigmask()&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/clock_getres.3.html"&gt;&lt;em&gt;clock_getres(2)&lt;/em&gt;&lt;/a&gt; page was moved from Section 3 to Section 2 (since the interfaces it describes really are system calls, not library functions), and adds a description of &lt;span style="font-family:courier new;"&gt;CLOCK_MONOTONIC_RAW&lt;/span&gt;, new in 2.6.28.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some bugs were fixed in &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/select_tut.2.html"&gt;&lt;em&gt;select_tut(2)&lt;/em&gt;&lt;/a&gt; and many changes and tidy-ups were made to the text.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5309884216012499132?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5309884216012499132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5309884216012499132' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5309884216012499132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5309884216012499132'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/02/man-pages-318-is-released.html' title='&lt;em&gt;man-pages-3.18&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-611722750981158280</id><published>2009-01-23T21:34:00.002+01:00</published><updated>2009-01-23T21:45:55.834+01:00</updated><title type='text'>linux.conf.au 2010 in Wellington</title><content type='html'>For it's 11th time out, &lt;a href="http://linux.conf.au/"&gt;linux.conf.au&lt;/a&gt; returns to &lt;a href="http://maps.google.com/maps?f=q&amp;amp;source=s_q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=wellington,+new+zealand&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=32.335236,79.101563&amp;amp;ie=UTF8&amp;amp;ll=-40.245992,174.770508&amp;amp;spn=15.549819,39.550781&amp;amp;z=5&amp;amp;iwloc=addr"&gt;New Zealand&lt;/a&gt; again in 2010.  (YAY!!)  Congratulations to the successful bidders from &lt;a href="http://en.wikipedia.org/wiki/Wellington"&gt;Wellington&lt;/a&gt;!   The conference will run from Monday 18 January to Saturday 23 January.  The organizers' website is &lt;a href="http://www.penguinsvisiting.org.nz/"&gt;http://www.penguinsvisiting.org.nz/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-611722750981158280?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/611722750981158280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=611722750981158280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/611722750981158280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/611722750981158280'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/01/linuxconfau-2010-in-wellington.html' title='linux.conf.au 2010 in Wellington'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2003585216661560516</id><published>2009-01-20T04:52:00.004+01:00</published><updated>2009-01-23T21:33:00.507+01:00</updated><title type='text'>Speaking at LCA 2009</title><content type='html'>Late notice (but that's all I got)... I'll be speaking at &lt;a href="http://lca2009.linux.org.au/"&gt;LCA 2009&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Hobart"&gt;Hobart&lt;/a&gt;, Australia, on 22 Jan, considering &lt;a href="https://conf.linux.org.au/programme/schedule/view_talk/80"&gt;what happens when kernel and userland don't talk&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update&lt;/strong&gt;: my presentation slides can be found &lt;a href="http://userweb.kernel.org/~mtk/papers/lca2009/kernel_and_userland_dont_talk.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2003585216661560516?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2003585216661560516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2003585216661560516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2003585216661560516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2003585216661560516'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/01/speaking-at-lca-2009.html' title='Speaking at LCA 2009'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-7666736196441882674</id><published>2009-01-19T06:32:00.001+01:00</published><updated>2009-01-26T11:46:58.797+01:00</updated><title type='text'>man-pages-3.17 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.17&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.17"&gt;changes in man-pages-3.17&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/endian.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;endian(3)&lt;/span&gt;&lt;/a&gt; page documents functions added in glibc 2.9 that convert between host byte order and little- and big-endian order: &lt;span style="FONT-STYLE: italic"&gt;htobe16(), htole16(), be16toh(), le16toh(), htobe32(), htole32(), be32toh(), le32toh(), htobe64(), htole64(), be64toh()&lt;/span&gt;, and &lt;span style="FONT-STYLE: italic"&gt;le64toh()&lt;/span&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getifaddrs.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;getifaddrs(3)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="FONT-STYLE: italic"&gt;getifaddrs()&lt;/span&gt; and &lt;span style="FONT-STYLE: italic"&gt;freeifaddrs()&lt;/span&gt; library functions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;8 new pages describe various character sets: &lt;span style="FONT-STYLE: italic"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/cp1251.7.html"&gt;cp1251(7)&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso-8859-10.7.html"&gt;iso-8859-10(7)&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso-8859-13.7.html"&gt;iso_8859-13(7)&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso-8859-14.7.html"&gt;iso_8859-14(7)&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso-8859-3.7.html"&gt;iso_8859-3(7)&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso-8859-5.7.html"&gt;iso_8859-5(7)&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/iso-8859-8.7.html"&gt;iso_8859-8(7)&lt;/a&gt;, &lt;/span&gt;and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/koi8-u.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;koi8-u(7)&lt;/span&gt;&lt;/a&gt;. Thanks to Lefteris Dimitroulakis for contributing these! &lt;/li&gt;&lt;br /&gt;&lt;li&gt;And various smaller changes in many other pages. &lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5295551401874334738" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 328px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_WgybbNCbhU0/SX2T8WaKpBI/AAAAAAAAAB8/Fn33uipL1FM/s400/IMG_0374-xr.jpg" border="0" /&gt;&lt;em&gt;Tasmanian Devil&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-7666736196441882674?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/7666736196441882674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=7666736196441882674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7666736196441882674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7666736196441882674'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/01/man-pages-317-is-released.html' title='&lt;em&gt;man-pages-3.17&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WgybbNCbhU0/SX2T8WaKpBI/AAAAAAAAAB8/Fn33uipL1FM/s72-c/IMG_0374-xr.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-8946697918142734828</id><published>2009-01-12T23:05:00.000+01:00</published><updated>2009-01-12T23:06:01.359+01:00</updated><title type='text'>man-pages-3.16 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.16&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.16"&gt;changes in man-pages-3.16&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_getcpuclockid.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_getcpuclockid(3)&lt;/span&gt;&lt;/a&gt; page documents &lt;span style="font-style: italic;"&gt;pthread_getcpuclockid().&lt;/span&gt;&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/libc.7.html"&gt;&lt;span style="font-style: italic;"&gt;libc(7)&lt;/span&gt;&lt;/a&gt; page provides an overview of the standard C library implementations on Linux.&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/rtld-audit.7.html"&gt;&lt;span style="font-style: italic;"&gt;rtld-audit(7)&lt;/span&gt;&lt;/a&gt; page provides an overview of the dynamic linker auditing API (modeled on the &lt;a href="http://docs.sun.com/app/docs/doc/819-0690/chapter6-1242?a=view"&gt;Solaris API&lt;/a&gt;): the functions &lt;span style="font-style: italic;"&gt;la_version(), la_objsearch(), la_activity(), la_objopen(), la_objclose(), la_preinit(), la_symbind(), la_pltenter(),&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;la_pltexit().&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man8/ld.so.8.html"&gt;&lt;span style="font-style: italic;"&gt;ld.so(8)&lt;/span&gt;&lt;/a&gt; page adds documentation of the &lt;span style="font-family: courier new;"&gt;LD_AUDIT&lt;/span&gt; and &lt;span style="font-family: courier new;"&gt;LD_POINTER_GUARD&lt;/span&gt; environment variables.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-8946697918142734828?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/8946697918142734828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=8946697918142734828' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8946697918142734828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8946697918142734828'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/01/man-pages-316-is-released.html' title='&lt;em&gt;man-pages-3.16&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5575844340590209373</id><published>2009-01-06T18:56:00.006+01:00</published><updated>2009-01-20T22:19:54.755+01:00</updated><title type='text'>See you at LCA 2009</title><content type='html'>It's too much fun to miss, so I finally made the booking... I'm going to &lt;a href="http://lca2009.linux.org.au/"&gt;LCA 2009&lt;/a&gt; (19-24 Jan), in &lt;a href="http://en.wikipedia.org/wiki/Hobart"&gt;Hobart&lt;/a&gt;, Australia!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5575844340590209373?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5575844340590209373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5575844340590209373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5575844340590209373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5575844340590209373'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2009/01/see-you-at-lca-2009.html' title='See you at LCA 2009'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4516899305229554502</id><published>2008-12-05T23:30:00.002+01:00</published><updated>2009-01-12T22:52:41.056+01:00</updated><title type='text'>man-pages-3.15 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.15&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.15"&gt;changes in man-pages-3.15&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/makedev.3.html"&gt;&lt;span style="font-style: italic;"&gt;makedev(3)&lt;/span&gt;&lt;/a&gt; page documents the &lt;span style="font-style: italic;"&gt;makedev()&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;major()&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;minor()&lt;/span&gt; macros used to manipulate device IDs.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_cleanup_push_defer_np.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_cleanup_push_defer_np(3)&lt;/span&gt;&lt;/a&gt; page documents &lt;span style="font-style: italic;"&gt;pthread_cleanup_push_defer_np()&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;pthread_cleanup_pop_restore_np()&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/accept.2.html"&gt;&lt;span style="font-style: italic;"&gt;accept(2)&lt;/span&gt;&lt;/a&gt; page adds documentation of the new &lt;span style="font-style: italic;"&gt;accept4()&lt;/span&gt; system call (coming in Linux 2.6.28)&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fmemopen.3.html"&gt;&lt;span style="font-style: italic;"&gt;fmemopen(3)&lt;/span&gt;&lt;/a&gt; page adds a description of &lt;span style="font-style: italic;"&gt;open_wmemstream(3)&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/tcp.7.html"&gt;&lt;span style="font-style: italic;"&gt;tcp(7)&lt;/span&gt;&lt;/a&gt; page adds a description of the use of the &lt;span style="font-family:courier new;"&gt;MSG_TRUNC&lt;/span&gt; flag for retrieving data from a TCP socket.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Many updates to the &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/atexit.3.html"&gt;&lt;span style="font-style: italic;"&gt;atexit(3)&lt;/span&gt;&lt;/a&gt; page.&lt;/li&gt;&lt;li&gt;Updates to many other pages&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Special thanks to Petr Baudis for a lot of patches that went into this release.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WgybbNCbhU0/STn7pcvKuoI/AAAAAAAAAB0/TOvMjUBKW84/s1600-h/DSC_0207-x.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 239px;" src="http://3.bp.blogspot.com/_WgybbNCbhU0/STn7pcvKuoI/AAAAAAAAAB0/TOvMjUBKW84/s400/DSC_0207-x.jpg" alt="" id="BLOGGER_PHOTO_ID_5276525127948483202" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Caballito del diablo ("Devil's little horse")&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4516899305229554502?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4516899305229554502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4516899305229554502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4516899305229554502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4516899305229554502'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/12/man-pages-315-is-released.html' title='&lt;em&gt;man-pages-3.15&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WgybbNCbhU0/STn7pcvKuoI/AAAAAAAAAB0/TOvMjUBKW84/s72-c/DSC_0207-x.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3251602230106227079</id><published>2008-12-03T11:50:00.005+01:00</published><updated>2008-12-03T18:15:04.966+01:00</updated><title type='text'>Linux Foundation fellowship, 6 months in</title><content type='html'>Not quite 6 months since I &lt;a href="http://linux-man-pages.blogspot.com/2008/06/man-pages-is-now-supported.html"&gt;started&lt;/a&gt; the Linux Foundation fellowship, it's time to analyze and reflect on what has (or hasn't) been accomplished.&lt;br /&gt;&lt;p style="font-weight: bold;"&gt;Some statistics&lt;/p&gt;&lt;p&gt;I took over maintainership of &lt;em&gt;man-pages&lt;/em&gt; at the start of November 2004, with the first release being &lt;em&gt;man-pages-2.00&lt;/em&gt;. 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 &lt;em&gt;man-pages&lt;/em&gt;, 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.&lt;/p&gt;&lt;p&gt;Since the fellowship started, I've worked for about 25 weeks on &lt;em&gt;man-pages&lt;/em&gt;; that is, somewhat more than half of the estimated time that I spent on &lt;em&gt;man-pages&lt;/em&gt; in the preceding 3.5 years. The first release during my tenure of the fellowship was &lt;em&gt;man-pages-2.80&lt;/em&gt;, and since then there have been 15 more (&lt;em&gt;man-pages-3.00&lt;/em&gt; through &lt;em&gt;man-pages-3.14&lt;/em&gt;).&lt;/p&gt;&lt;p&gt;What I'm expecting is that the limiting factor in the progress of &lt;em&gt;man-pages&lt;/em&gt; 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:&lt;br /&gt;&lt;style type="text/css"&gt;.nobrtable br { display: no&lt;/style&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Period&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;strong&gt;Number of releases&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Pre-fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;80&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;During fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;16&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;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:&lt;br /&gt;&lt;/p&gt;&lt;style type="text/css"&gt;.nobrtable br { display: non&lt;/style&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Period&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Number of commits&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Pre-fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;3610&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;During fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;1852&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Commits in the last 6 months were nearly 50% of the total during the previous 3.5 years. That seems roughly in line with expectations, and supports the theory that there's a lot more work going into each &lt;em&gt;man-pages&lt;/em&gt; release nowadays. Of course, commits vary a lot in size, ranging from a spelling fix, to a complete new page, and going through to some of the enormous global formatting fixes that took place in the &lt;span style="font-style: italic;"&gt;man-pages-2.*&lt;/span&gt; series, so this is a very rough measure.  (One of the commits cleaning up source files layout in &lt;em&gt;man-pages-2.47&lt;/em&gt; had a diff size of more than 60000 lines(!).  There were many other large formatting commits in the &lt;span style="font-style: italic;"&gt;man-pages-2.*&lt;/span&gt;, which is why trying to compare the volume of diffs before and during the fellowship doesn't produce a useful metric.)Another rough measure is how many man pages were added to the set over time:&lt;br /&gt;&lt;style type="text/css"&gt;.nobrtable br { display: none }&lt;/style&gt;&lt;br /&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Period&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;Number of new pages added&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Pre-fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;93 &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;During fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;56&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Again, that's roughly in line with expectations, with the number of pages added during the fellowship being somewhat more than 50% of the previous period.&lt;br /&gt;&lt;br /&gt;But where did the new pages come from?&lt;br /&gt;&lt;style type="text/css"&gt;.nobrtable br { display: none }&lt;/style&gt;&lt;br /&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Period&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;By mtk&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;By others&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;&lt;strong&gt;By mtk + other(s)&lt;/strong&gt;&lt;/td&gt;&lt;td style="font-weight: bold;"&gt;Imports&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Pre-fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;52&lt;/td&gt;&lt;td style="text-align: center;"&gt;22&lt;/td&gt;&lt;td style="text-align: center;"&gt;13&lt;/td&gt;&lt;td style="text-align: center;"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;During fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;50&lt;/td&gt;&lt;td style="text-align: center;"&gt;4&lt;/td&gt;&lt;td style="text-align: center;"&gt;1&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="text-align: center;"&gt;1&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;"mtk" is me. "Other(s)" is someone else. "Imports" are pages under a free license that I scooped up from some other source (e.g., found on the net, in a distro, or in BSD).&lt;br /&gt;&lt;br /&gt;On the negative side, I wrote the vast majority of new pages that have been added so far during the fellowship. On the positive side, Paul Jackson contributed the single biggest page, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html"&gt;cpuset(7)&lt;/a&gt;&lt;/em&gt;, which became the fourth largest page in &lt;em&gt;man-pages&lt;/em&gt;. (Also worth noting: in the &lt;em&gt;man-pages-2.*&lt;/em&gt; releases, a total of 28 pages were &lt;em&gt;deleted&lt;/em&gt;, mainly obsolete pages in Section 1.) In fact, I had hoped to be able to get even more pages written, but other tasks, such as testing, API review, and kernel patches have also taken up a significant fraction of my time during the fellowship. When considered as a (calendar) monthly rate, contributions of new pages by others are, unfortunately, essentially unchanged since before the fellowship.&lt;br /&gt;&lt;br /&gt;So, progress towards improving contributions by others, at least in terms of new pages, has not been good. However, my gut feeling has been that more people &lt;span style="font-style: italic;"&gt;are&lt;/span&gt; actually contributing to &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; than before: the fact that there is a full-time maintainer means people are rather more likely to send bug reports, suggestions, and patches for existing pages. Here's a statistic that bears it out:&lt;br /&gt;&lt;style type="text/css"&gt;.nobrtable br { display: none }&lt;/style&gt;&lt;br /&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;Period&lt;/strong&gt;&lt;/td&gt;&lt;td style="font-weight: bold;"&gt;Average contributors/week&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Pre-fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;2.8&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;During fellowship&lt;/td&gt;&lt;td style="text-align: center;"&gt;5.9&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;This was calculated by summing the number of contributors in each of the change logs in all of the releases over the two periods and then dividing by the number of calendar weeks in each period (185 and 28 respectively). 5.9 contributors per week is still much lower than I'd like, but my feeling is that the rate has increased steadily over the time of the fellowship, so that the current rate is already higher than 5.9, and set to increase further.  (Another factor that may also have helped boost the number of reports is that in December 2007 I started adding a COLOPHON to each man page describing how to report bugs, and this change would have filtered into distribution CDs a few months later.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Timeliness of documentation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Things have defintely got better during the fellowship.  Most additions and changes to the kernel-userland interface during the time of the fellowship have been documented in &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; pretty much as they occur.  (This contrasts with earlier times, where interface changes have sometimes been followed only months (or in extreme cases years) later by man page updates.)  Most notably, &lt;a href="http://linux-man-pages.blogspot.com/2008/10/recent-changes-in-file-descriptor.html"&gt;Ulrich Drepper's new system calls in Linux 2.6.27&lt;/a&gt; saw man pages go out a few days after the release of that kernel.&lt;br /&gt;&lt;p style="font-weight: bold;"&gt;Testing and bug reporting&lt;/p&gt;&lt;p&gt;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 &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utimensat.2.html"&gt;&lt;span style="font-style: italic;"&gt;utimensat(2)&lt;/span&gt;&lt;/a&gt; system call, producing a test suite (later integrated into LTP), along with patches that fixed the 5 or so bugs in the interface (details &lt;a href="http://linux-man-pages.blogspot.com/2008/06/whats-wrong-with-kernel-userland_30.html"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;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 &lt;a href="http://linux-man-pages.blogspot.com/2008/08/math-functions-and-error-reporting.html"&gt;error reporting by the math functions&lt;/a&gt;.  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.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;API design review&lt;/p&gt;&lt;p&gt;Most new system calls and system call extensions got reviewed before going into mainline.  (My record on other kernel interfaces, such as &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt; files, was a more spotty though.)  Among other things, this resulted in a redesign of the proposed extension of the &lt;span style="font-style: italic;"&gt;accept()&lt;/span&gt; system call (originally proposed as &lt;a href="http://thread.gmane.org/gmane.linux.kernel/723952"&gt;&lt;span style="font-style: italic;"&gt;paccept()&lt;/span&gt;&lt;/a&gt;, with a &lt;a href="http://article.gmane.org/gmane.linux.network/106071/"&gt;signal set argument whose necessity was dubious&lt;/a&gt;, later revised to &lt;a href="http://thread.gmane.org/gmane.linux.kernel/749510"&gt;&lt;span style="font-style: italic;"&gt;accept4()&lt;/span&gt;&lt;/a&gt;, which should appear in kernel 2.6.28).&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;Miscellaneous&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;A summary of other &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; work that I've done during the time of the fellowship:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;man-pages&lt;/em&gt; &lt;a href="http://linux-man-pages.blogspot.com/2008/09/man-pages-goes-git-at-last_11.html"&gt;moved from a private Subversion repository to a public &lt;em&gt;git&lt;/em&gt; repository&lt;/a&gt; on &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;In general, I'm blogging a bit more actively nowadays, and in addition to posts summarizing releases, there have been longer posts on topics such as: &lt;a href="http://linux-man-pages.blogspot.com/2008/06/whats-wrong-with-kernel-userland_30.html"&gt;problems with kernel-userland interface design and implementation&lt;/a&gt;; the &lt;a href="http://linux-man-pages.blogspot.com/2008/08/math-functions-and-error-reporting.html"&gt;state of error reporting for glibc's math functions&lt;/a&gt;; and a few articles describing or summarizing Linux kernel-userland interface changes.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;After my &lt;a href="http://linux-man-pages.blogspot.com/2008/08/speaking-at-lpc.html"&gt;presentation&lt;/a&gt; at LPC for the kernel-userland interface track, I finally got round to an idea I'd been considering for a while: creating the &lt;a href="http://vger.kernel.org/vger-lists.html#linux-api"&gt;linux-api&lt;/a&gt; mailing list. The &lt;a href="http://thread.gmane.org/gmane.linux.ltp/5658"&gt;rationale for the list&lt;/a&gt; is that all patches that cause API/ABI changes should be CCed to the list, so that the many parties who are interested in API/ABI changes (e.g., &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/"&gt;man-pages&lt;/a&gt;&lt;/em&gt;, &lt;a href="http://www.linuxfoundation.org/en/LSB"&gt;LSB&lt;/a&gt;, &lt;em&gt;libc&lt;/em&gt; developers, kernel developers, testers such as the folk at &lt;a href="http://ltp.sourceforge.net/"&gt;LTP&lt;/a&gt;, and of course userland developers) can get an idea of what's going on. Most people still don't read &lt;span style="font-family:courier new;"&gt;&lt;a href="http://lxr.linux.no/linux/Documentation/SubmitChecklist"&gt;Documentation/SubmitChecklist&lt;/a&gt;&lt;/span&gt;, to know they should be using this list, so I try to regularly chase people to use it (and some others also help in that regard), and by now at least some people do so without prompting.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I've helped out &lt;a href="http://www.linuxfoundation.org/en/LSB"&gt;LSB&lt;/a&gt; on a number of occasions, filing a few bug reports against the spec, but also helping out by writing man pages for functions that they wanted to specify that were currently undocumented  (see, e.g., &lt;a href="http://bugs.linuxbase.org/show_bug.cgi?id=2245"&gt;here&lt;/a&gt; and &lt;a href="http://bugs.linuxbase.org/show_bug.cgi?id=2364"&gt;here&lt;/a&gt;).  This resulted in new man pages such as &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getprotoent_r.3.html"&gt;&lt;span style="font-style: italic;"&gt;getprotoent_r(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getservent_r.3.html"&gt;&lt;span style="font-style: italic;"&gt;getservent_r(3)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://http//www.kernel.org/doc/man-pages/online/pages/man3/getnetent_r.3.html"&gt;&lt;span style="font-style: italic;"&gt;getnetent_r(3)&lt;/span&gt;&lt;/a&gt;, and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_getattr_np.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_getattr_np()&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I continue to respond to many bug reports in the &lt;a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=manpages"&gt;&lt;span style="font-style: italic;"&gt;manpages&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=manpages-dev"&gt;&lt;span style="font-style: italic;"&gt;manpages-dev&lt;/span&gt;&lt;/a&gt; components of Debian's bug tracking system.  This has mutual benefits: on the one hand, although I'm not actually a member of Debian, I'm by far the most active fixer of their bug reports; on the other hand, most Debian bug reports for man pages really apply to the upstream pages (I ignore the ones that don't), and so the reports provide a valuable source of pointers to things that need fixing in &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;.  A big thank you to Debian users, who produce far more (and more useful) &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; bug reports than all of the other distributions put together!&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Working on &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; led me to find various deficiencies in POSIX.1 specifications, resulting in around a half dozen bug reports to the &lt;a href="http://www.opengroup.org/austin/"&gt;Austin group&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WgybbNCbhU0/STa7dOE8IiI/AAAAAAAAABs/ee5cqkETu_w/s1600-h/DSC_0196-xa.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 320px;" src="http://1.bp.blogspot.com/_WgybbNCbhU0/STa7dOE8IiI/AAAAAAAAABs/ee5cqkETu_w/s400/DSC_0196-xa.jpg" alt="" id="BLOGGER_PHOTO_ID_5275610124180529698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Mariposa&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a id="publishButton" class="cssButton" href="javascript:void(0)" onclick="if (this.className.indexOf(&amp;quot;ubtn-disabled&amp;quot;) == -1) {var e = document['stuffform'].publish;(e.length) ? e[0].click() : e.click(); if (window.event) window.event.cancelBubble = true; return false;}"&gt;&lt;div class="cssButtonOuter"&gt;&lt;div class="cssButtonMiddle"&gt;&lt;div class="cssButtonInner"&gt;Publish Post&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3251602230106227079?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3251602230106227079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3251602230106227079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3251602230106227079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3251602230106227079'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/12/linux-foundation-fellowship-6-months-in.html' title='Linux Foundation fellowship, 6 months in'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WgybbNCbhU0/STa7dOE8IiI/AAAAAAAAABs/ee5cqkETu_w/s72-c/DSC_0196-xa.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-7835028658102698846</id><published>2008-11-25T22:40:00.000+01:00</published><updated>2008-11-27T02:01:59.905+01:00</updated><title type='text'>man-pages-3.14 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.14&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directo&lt;/a&gt;&lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;ry&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.14"&gt;changes in man-pages-3.14&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/CPU_SET.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;CPU_SET(3)&lt;/span&gt;&lt;/a&gt; page documents the CPU_* macros used for manipulating CPU sets (the &lt;span style="FONT-STYLE: italic"&gt;cpu_set_t&lt;/span&gt; data structure used by &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setaffinity.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;sched_setaffinity(2)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setaffinity_np.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthread_attr_setaffinity_np(3)&lt;/span&gt;&lt;/a&gt;, and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_setaffinity_np.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthread_setaffinity_np(3)&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;More man pages for POSIX threads library functions: 5 new pages documenting 8 functions&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setinheritsched.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthread_attr_setinheritsched(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="FONT-STYLE: italic"&gt;pthread_attr_getinheritsched()&lt;/span&gt;)&lt;/li&gt;&lt;li style="FONT-STYLE: italic"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_cancel.3.html"&gt;pthread_cancel(3)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_cleanup_push.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthread_cleanup_push(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="FONT-STYLE: italic"&gt;pthread_cleanup_pop()&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_setcancelstate.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthread_setcancelstate(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="FONT-STYLE: italic"&gt;pthread_setcanceltype()&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_testcancel.3.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthread_testcancel(3)&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;clone(2)&lt;/span&gt;&lt;/a&gt; adds documentation of the &lt;span style="font-family:courier new;"&gt;CLONE_NEWNET&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;CLONE_NEWUTS&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;CLONE_NEWPID&lt;/span&gt;, and &lt;span style="font-family:courier new;"&gt;CLONE_IPC&lt;/span&gt; flags&lt;span style="FONT-STYLE: italic"&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/mmap.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;mmap(2)&lt;/span&gt;&lt;/a&gt; adds documentation of the &lt;span style="font-family:courier new;"&gt;MAP_STACK&lt;/span&gt; flag.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/arp.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;arp(7)&lt;/span&gt;&lt;/a&gt; adds documentation of a few preously undocumented &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt; files.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/icmp.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;icmp(7)&lt;/span&gt;&lt;/a&gt; adds documentation of a few previously undocumented &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt; files.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/tcp.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;tcp(7)&lt;/span&gt;&lt;/a&gt; adds documentation of &lt;span style="FONT-STYLE: italic"&gt;many&lt;/span&gt; previously undocumented &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt; files.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/udp.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;udp(7)&lt;/span&gt;&lt;/a&gt; adds documentation of a few previously undocumented &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt; files.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/pthreads.7.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;pthreads(7)&lt;/span&gt;&lt;/a&gt; adds lists of functions that POSIX.1 specifies &lt;span style="FONT-STYLE: italic"&gt;are&lt;/span&gt; and &lt;span style="FONT-STYLE: italic"&gt;may be&lt;/span&gt; cancellation points.&lt;/li&gt;&lt;/ul&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WgybbNCbhU0/SSzDiQTEszI/AAAAAAAAABk/kyTa7BiC1OM/s1600-h/DSC_9882-x.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5272804257001943858" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: pointer; HEIGHT: 258px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_WgybbNCbhU0/SSzDiQTEszI/AAAAAAAAABk/kyTa7BiC1OM/s400/DSC_9882-x.jpg" border="0" /&gt;&lt;/a&gt;&lt;span style="FONT-STYLE: italic"&gt;Lagarto&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-7835028658102698846?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/7835028658102698846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=7835028658102698846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7835028658102698846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7835028658102698846'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/11/man-pages-314-is-released.html' title='&lt;em&gt;man-pages-3.14&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WgybbNCbhU0/SSzDiQTEszI/AAAAAAAAABk/kyTa7BiC1OM/s72-c/DSC_9882-x.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4258381547470042153</id><published>2008-11-07T14:27:00.003+01:00</published><updated>2008-11-07T20:48:11.861+01:00</updated><title type='text'>man-pages-3.13 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.13&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directo&lt;/a&gt;&lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;ry&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).  Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.13"&gt;changes in man-pages-3.13&lt;/a&gt; are:&lt;ul&gt;&lt;li&gt;More man pages for POSIX threads library functions: 6 new pages documenting 11 functions.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt; &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setaffinity_np.3.html"&gt;pthread_attr_setaffinity_np(3)&lt;/a&gt;&lt;/span&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getaffinity_np(3)&lt;/span&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setschedparam.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setschedparam(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getschedparam(3)&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setschedpolicy.3.html"&gt;&lt;span style="font-style: italic;"&gt; pthread_attr_setschedpolicy(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt; pthread_attr_getschedpolicy(3)&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_setaffinity_np.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_setaffinity_np(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_getaffinity_np(3)&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_setschedparam.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_setschedparam(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_getschedparam(3)&lt;/span&gt;)&lt;/li&gt;&lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_setschedprio.3.html"&gt;pthread_setschedprio(3)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Various fixes and improvements to the example program in &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/epoll.7.html"&gt;&lt;span style="font-style: italic;"&gt;epoll(7)&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WgybbNCbhU0/SRSW4lDHLyI/AAAAAAAAABc/gUe_ScH_oyQ/s1600-h/DSC_9348-x.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 328px;" src="http://4.bp.blogspot.com/_WgybbNCbhU0/SRSW4lDHLyI/AAAAAAAAABc/gUe_ScH_oyQ/s400/DSC_9348-x.jpg" alt="" id="BLOGGER_PHOTO_ID_5265999763064958754" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Saltamontes, intentando evitarme&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4258381547470042153?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4258381547470042153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4258381547470042153' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4258381547470042153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4258381547470042153'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/11/man-pages-313-is-released.html' title='&lt;em&gt;man-pages-3.13&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WgybbNCbhU0/SRSW4lDHLyI/AAAAAAAAABc/gUe_ScH_oyQ/s72-c/DSC_9348-x.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3577746938434588214</id><published>2008-10-30T16:26:00.011+01:00</published><updated>2008-10-31T03:27:47.086+01:00</updated><title type='text'>Recent changes in file descriptor system calls</title><content type='html'>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 &lt;a href="http://en.wikipedia.org/wiki/Ulrich_Drepper"&gt;Ulrich Drepper&lt;/a&gt;.)  These changes have taken the form of either adding new bits to the &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; 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 &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; argument.  In most cases, two new flags have been added: a close-on-exec flag, and a non-blocking flag, which we describe shortly.&lt;br /&gt;&lt;br /&gt;The changes are summarized in the table below.  In this table, the &lt;span style="font-style: italic;"&gt;Kernel &lt;/span&gt;column indicates the kernel version where the change occurred, and the &lt;span style="font-style: italic;"&gt;Glibc &lt;/span&gt;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.)&lt;br /&gt;&lt;style type="text/css"&gt;.nobrtable br { display: none }&lt;/style&gt;&lt;br /&gt;&lt;div class="nobrtable"&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;/table&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="1" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center; font-weight: bold;"&gt;Interface&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="text-align: center; font-weight: bold;"&gt;&lt;br /&gt;Changes&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-weight: bold;"&gt;&lt;br /&gt;Kernel&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-weight: bold;"&gt;&lt;br /&gt;Glibc&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-weight: bold; text-align: center;"&gt;&lt;br /&gt;Notes&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html"&gt;open(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New flag: &lt;span style="font-family:courier new;"&gt;O_CLOEXEC&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;2.6.23&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;2.7&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Flag also supported for &lt;span style="font-style: italic;"&gt;openat(2).  &lt;/span&gt;&lt;span&gt;These syscalls already supported &lt;span style="font-family:courier new;"&gt;O_NONBLOCK&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html"&gt;fcntl(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New flag: &lt;span style="font-family:courier new;"&gt;F_DUPFD_CLOEXEC&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.24&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.7&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Performs a similar task to &lt;span style="font-style: italic;"&gt;dup3(2)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/recvmsg.2.html"&gt;recvmsg(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;New flag: &lt;span style="font-family:courier new;"&gt;MSG_CMSG_CLOEXEC&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;2.6.23&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;2.7&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;-&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html"&gt;dup3(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;New syscall, like &lt;span style="font-style: italic;"&gt;dup2(2)&lt;/span&gt;, but adds &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; argument (&lt;span style="font-family:courier new;"&gt;O_CLOEXEC&lt;/span&gt;)&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Requires new glibc interface&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html"&gt;pipe2(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New syscall, like &lt;span style="font-style: italic;"&gt;pipe(2)&lt;/span&gt;, but adds &lt;span style="font-style: italic;"&gt;flags &lt;/span&gt;argument: &lt;span style="font-family:courier new;"&gt;O_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;O_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Requires new glibc interface&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/socket.2.html"&gt;socket(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;New flags in &lt;span style="font-style: italic;"&gt;type &lt;/span&gt;argument: &lt;span style="font-family:courier new;"&gt;SOCK_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;SOCK_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/socketpair.2.html"&gt;socketpair(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;New flags in &lt;span style="font-style: italic;"&gt;type &lt;/span&gt;argument: &lt;span style="font-family:courier new;"&gt;SOCK_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;SOCK_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/epoll_create1.2.html"&gt;epoll_create1(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New syscall, like &lt;span style="font-style: italic;"&gt;epoll_create(2)&lt;/span&gt;, but adds &lt;span style="font-style: italic;"&gt;flags &lt;/span&gt;argument: &lt;span style="font-family:courier new;"&gt;EPOLL_CLOEXEC&lt;/span&gt;; the new system call drops &lt;span style="font-style: italic;"&gt;epoll_create()&lt;/span&gt;'s obsolete &lt;span style="font-style: italic;"&gt;size&lt;/span&gt; argument&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Requires new glibc interface&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/inotify_init1.2.html"&gt;inotify_init1(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New syscall, like &lt;span style="font-style: italic;"&gt;inotify_init(2)&lt;/span&gt;, but adds &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; argument: &lt;span style="font-family:courier new;"&gt;IN_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;IN_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;Requires new glibc interface&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/eventfd2.2.html"&gt;eventfd2(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New syscall, like &lt;span style="font-style: italic;"&gt;eventfd(2)&lt;/span&gt;, but adds &lt;span style="font-style: italic;"&gt;flags &lt;/span&gt;argument: &lt;span style="font-family:courier new;"&gt;EFD_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;EFD_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;The glibc &lt;span style="font-style: italic;"&gt;eventfd()&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;/span&gt; wrapper already allowed a &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; argument, so no new wrapper is required&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd4.2.html"&gt;signalfd4(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New syscall, like &lt;span style="font-style: italic;"&gt;signalfd(2)&lt;/span&gt;, but adds &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; argument: &lt;span style="font-family:courier new;"&gt;SFD_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;SFD_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;The glibc &lt;span style="font-style: italic;"&gt;signalfd()&lt;/span&gt; wrapper already allowed a &lt;span style="font-style: italic;"&gt;flags&lt;/span&gt; argument, so no new wrapper is required&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td style="font-style: italic;"&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timerfd_create.2.html"&gt;timerfd_create(2)&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;New flags: &lt;span style="font-family:courier new;"&gt;TFD_CLOEXEC&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;TFD_NONBLOCK&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.6.27&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;2.9&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;-&lt;br /&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A proposed analogous change for &lt;span style="font-style: italic;"&gt;accept(2)&lt;/span&gt;, &lt;a href="http://article.gmane.org/gmane.linux.kernel/671443/"&gt;&lt;span style="font-style: italic;"&gt;paccept()&lt;/span&gt;&lt;/a&gt;, supporting flags &lt;span style="font-family:courier new;"&gt;SOCK_CLOEXEC&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;SOCK_NONBLOCK&lt;/span&gt; and treatment of a signal mask argument like &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/pselect.2.html"&gt;&lt;span style="font-style: italic;"&gt;pselect(2)&lt;/span&gt;&lt;/a&gt;, was &lt;a href="http://thread.gmane.org/gmane.linux.kernel/723952"&gt;debated&lt;/a&gt; and then spent some time in &lt;a href="http://thread.gmane.org/gmane.linux.network/106071/focus=106156"&gt;limbo&lt;/a&gt;, but has recently re-emerged in a somewhat modified form, &lt;a href="http://thread.gmane.org/gmane.linux.kernel.api/74"&gt;&lt;span style="font-style: italic;"&gt;accept4()&lt;/span&gt;&lt;/a&gt; (which was in fact the original proposal), that will probably go into Linux 2.6.28 or 2.6.29.&lt;br /&gt;&lt;p&gt;Perhaps one day there might even be an analogous change for &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/mq_notify.3.html"&gt;&lt;span style="font-style: italic;"&gt;mq_notify(3)&lt;/span&gt;&lt;/a&gt;, since (on Linux, but not on most other systems) a message queue descriptor is really just a file descriptor.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;The close-on-exec flag (&lt;span style="font-family:courier new;"&gt;*_CLOEXEC&lt;/span&gt;)&lt;/p&gt;&lt;p&gt;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 &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html"&gt;&lt;span style="font-style: italic;"&gt;execve(2)&lt;/span&gt;&lt;/a&gt;.)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;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 &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/fcntl.2.html"&gt;&lt;span style="font-style: italic;"&gt;fcntl(2)&lt;/span&gt;&lt;/a&gt; &lt;span style="font-family:courier new;"&gt;F_GETFL&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;F_SETFL&lt;/span&gt; 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 &lt;span style="font-style: italic;"&gt;fork()&lt;/span&gt; plus &lt;span style="font-style: italic;"&gt;execve()&lt;/span&gt;.  Ulrich Drepper &lt;a href="http://udrepper.livejournal.com/20407.html"&gt;explains the resulting security issues in more detail&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;The non-blocking flag (&lt;span style="font-family:courier new;"&gt;*_NONBLOCK&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The &lt;span style="font-family:courier new;"&gt;*_NONBLOCK&lt;/span&gt; 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 &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html"&gt;&lt;span style="font-style: italic;"&gt;open(2)&lt;/span&gt;&lt;/a&gt; man page.)&lt;br /&gt;&lt;/p&gt;Unlike the &lt;span style="font-family:courier new;"&gt;*_CLOEXEC&lt;/span&gt; flag, the &lt;span style="font-family:courier new;"&gt;*_NONBLOCK&lt;/span&gt; flag exists merely as a convenience: it saves two system call operations (&lt;span style="font-style: italic;"&gt;fcntl(2)&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;F_GETFL&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;F_SETFL&lt;/span&gt;) if we want to immediately set the non-blocking flag when opening a file descriptor.&lt;br /&gt;&lt;br /&gt;Note that there deliberately is no &lt;span style="font-family:courier new;"&gt;*_NONBLOCK&lt;/span&gt; flag for &lt;span style="font-style: italic;"&gt;dup3(2)&lt;/span&gt;.  This would &lt;a href="http://thread.gmane.org/gmane.linux.kernel/723951"&gt;not be sensible&lt;/a&gt;, since the new file descriptor shares an open file description with the old file descriptor.&lt;br /&gt;&lt;p&gt;There is also deliberately no &lt;span style="font-family:courier new;"&gt;*_NONBLOCK&lt;/span&gt; flag for &lt;span style="font-style: italic;"&gt;epoll_create1(2)&lt;/span&gt;, since &lt;a href="http://thread.gmane.org/gmane.linux.kernel/723951"&gt;equivalent functionality can be obtained with a zero timeout&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Other flags?&lt;/p&gt;&lt;p style="font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;The &lt;span style="font-style: italic;"&gt;flags &lt;/span&gt;argument added for the new system calls allows for other kinds of functionality to be added to these system calls in the future.&lt;/span&gt; &lt;/p&gt;&lt;p style="font-weight: bold;"&gt;Future standards?&lt;/p&gt;&lt;p&gt;Ulrich Drepper already did some work on getting some of these interface changes into the POSIX.1-2008 standard, which includes specifications of the &lt;span style="font-family:courier new;"&gt;O_CLOEXEC&lt;/span&gt; flag for &lt;span style="font-style: italic;"&gt;open()&lt;/span&gt; and the &lt;span style="font-family:courier new;"&gt;F_DUPFD_CLOEXEC&lt;/span&gt; operation for &lt;span style="font-style: italic;"&gt;fcntl()&lt;/span&gt;.  In the future, some the other changes may also make their way into the standard.&lt;br /&gt;&lt;/p&gt;&lt;span style="font-weight: bold;"&gt;A note on the new system call names&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The numbers in the names of the new system calls refer to the number of arguments that each system call has.  This is an extension of a convention that was used for some existing Unix system calls, notably &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/dup2.2.html"&gt;&lt;span style="font-style: italic;"&gt;dup2(2)&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/wait3.2.html"&gt;&lt;span style="font-style: italic;"&gt;wait3(2)&lt;/span&gt;&lt;/a&gt;, and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/wait4.2.html"&gt;&lt;span style="font-style: italic;"&gt;wait4(2)&lt;/span&gt;&lt;/a&gt;.  Note that while the wrapper function for &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd.2.html"&gt;&lt;span style="font-style: italic;"&gt;signalfd(2)&lt;/span&gt;&lt;/a&gt; has three arguments, the underlying &lt;span style="font-style: italic;"&gt;signalfd4()&lt;/span&gt; system call really does have four arguments, as described in the man page.  (However, this suggests that, in the end, this naming scheme might not have been the best choice.)&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WgybbNCbhU0/SQox0u5C8lI/AAAAAAAAABU/fvodBIFfOi4/s1600-h/DSC_8250.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 268px;" src="http://1.bp.blogspot.com/_WgybbNCbhU0/SQox0u5C8lI/AAAAAAAAABU/fvodBIFfOi4/s400/DSC_8250.jpg" alt="" id="BLOGGER_PHOTO_ID_5263073896546103890" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3577746938434588214?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3577746938434588214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3577746938434588214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3577746938434588214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3577746938434588214'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/10/recent-changes-in-file-descriptor.html' title='Recent changes in file descriptor system calls'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WgybbNCbhU0/SQox0u5C8lI/AAAAAAAAABU/fvodBIFfOi4/s72-c/DSC_8250.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5027897508074688847</id><published>2008-10-30T03:28:00.010+01:00</published><updated>2008-10-30T15:45:09.893+01:00</updated><title type='text'>man-pages-3.12 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.12&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).  Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.12"&gt;changes in man-pages-3.12&lt;/a&gt; are:&lt;ul&gt;&lt;li&gt;Documentation is added for &lt;a href="http://lwn.net/Articles/281965/"&gt;a set of new and changed system calls&lt;/a&gt; (which will be the subject of a future post) that extend the functionality of existing system calls that work with file descriptors.  (The changes occurred in kernel 2.6.27.)  The new and modified system calls add flags that allow the close-on-exec file descriptor flag to be set, and the non-blocking file status to be set on a file description, as the file is opened.  The modified pages are:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/dup.2.html"&gt;&lt;span style="font-style: italic;"&gt;dup(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-style: italic;"&gt;dup3()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/epoll_create.2.html"&gt;&lt;span style="font-style: italic;"&gt;epoll_create(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-style: italic;"&gt;epoll_create1()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/eventfd.2.html"&gt;&lt;span style="font-style: italic;"&gt;eventfd(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-style: italic;"&gt;eventfd2()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/inotify_init.2.html"&gt;&lt;span style="font-style: italic;"&gt;inotify_init(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-style: italic;"&gt;inotify_init1()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/pipe.2.html"&gt;&lt;span style="font-style: italic;"&gt;pipe(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-style: italic;"&gt;pipe2()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/signalfd.2.html"&gt;&lt;span style="font-style: italic;"&gt;signalfd(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-style: italic;"&gt;signalfd4()&lt;/span&gt; system call.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/socket.2.html"&gt;&lt;span style="font-style: italic;"&gt;socket(2)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/socketpair.2.html"&gt;&lt;span style="font-style: italic;"&gt;socketpair(2)&lt;/span&gt;&lt;/a&gt; add a description of the new &lt;span style="font-family:courier new;"&gt;SOCK_CLOEXEC&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;SOCK_NONBLOCK&lt;/span&gt; flags.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/timerfd_create.2.html"&gt;&lt;span style="font-style: italic;"&gt;timerfd_create(2)&lt;/span&gt;&lt;/a&gt; adds a description of the new &lt;span style="font-family:courier new;"&gt;TFD_CLOEXEC&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;TFD_NONBLOCK&lt;/span&gt; flags.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;A start has been made on providing man pages for the POSIX threads library functions: 15 new pages documenting 23 functions.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_init.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_init(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_destroy(3)&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setdetachstate.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setdetachstate(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getdetachstate(3)&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setguardsize.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setguardsize(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getguardsize(3)&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setscope.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setscope(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getscope(3)&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setstack.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setstacki(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getstack(3)&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setstackaddr.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setstackaddr(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getstackaddr(3)&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_attr_setstacksize.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_attr_setstacksize(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_attr_getstacksize(3)&lt;/span&gt;)&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_create.3.html"&gt;pthread_create(3)&lt;/a&gt;&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_detach.3.html"&gt;pthread_detach(3)&lt;/a&gt;&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_equal.3.html"&gt;pthread_equal(3)&lt;/a&gt;&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_exit.3.html"&gt;pthread_exit(3)&lt;/a&gt;&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_getattr_np.3.html"&gt;pthread_getattr_np(3)&lt;/a&gt;&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_join.3.html"&gt;pthread_join(3)&lt;/a&gt;&lt;/li&gt; &lt;li style="font-style: italic;"&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_self.3.html"&gt;pthread_self(3)&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pthread_tryjoin_np.3.html"&gt;&lt;span style="font-style: italic;"&gt;pthread_tryjoin_np(3)&lt;/span&gt;&lt;/a&gt; (includes documentation of &lt;span style="font-style: italic;"&gt;pthread_timedjoin_np(3)&lt;/span&gt;)&lt;/li&gt;                                                                                                &lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Many details were added to, or fixed in, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man8/ld.so.8.html"&gt;&lt;span style="font-style: italic;"&gt;ld.so(8)&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WgybbNCbhU0/SQksFAg6YuI/AAAAAAAAABM/Vg9zqf2MHC4/s1600-h/DSC_8359-xr.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 354px; height: 400px;" src="http://2.bp.blogspot.com/_WgybbNCbhU0/SQksFAg6YuI/AAAAAAAAABM/Vg9zqf2MHC4/s400/DSC_8359-xr.jpg" alt="" id="BLOGGER_PHOTO_ID_5262786104108147426" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;El jardín de la casa&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5027897508074688847?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5027897508074688847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5027897508074688847' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5027897508074688847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5027897508074688847'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/10/man-pages-312-is-released.html' title='&lt;em&gt;man-pages-3.12&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WgybbNCbhU0/SQksFAg6YuI/AAAAAAAAABM/Vg9zqf2MHC4/s72-c/DSC_8359-xr.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-695559127443997513</id><published>2008-10-07T11:30:00.001+02:00</published><updated>2008-10-07T11:31:36.096+02:00</updated><title type='text'>man-pages-3.11 is released</title><content type='html'>&lt;p&gt;I've uploaded &lt;em&gt;man-pages-3.11&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).  Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.11"&gt;changes in man-pages-3.11&lt;/a&gt; are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/umount.2.html"&gt;&lt;span style="font-style: italic;"&gt;umount(2)&lt;/span&gt;&lt;/a&gt; page has been created by splitting the &lt;span style="font-style: italic;"&gt;umount()&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;umount2()&lt;/span&gt; material out of the old &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/mount.2.html"&gt;&lt;span style="font-style: italic;"&gt;mount(2)&lt;/span&gt;&lt;/a&gt; page.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/mount.2.html"&gt;&lt;span style="font-style: italic;"&gt;mount(2)&lt;/span&gt;&lt;/a&gt; page adds a description of per-process namespaces.&lt;/li&gt;&lt;li&gt;Various fixes and improvements  in &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getdents.2.html"&gt;&lt;span style="font-style: italic;"&gt;getdents(2)&lt;/span&gt;&lt;/a&gt;, including the addition of an example program.&lt;/li&gt;&lt;li&gt;Many improvements and additions in &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html"&gt;&lt;span style="font-style: italic;"&gt;signal(7)&lt;/span&gt;&lt;/a&gt;, the page that provides an overview of signals on Linux.&lt;/li&gt;&lt;li&gt;Numerous fixes to many other pages.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-695559127443997513?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/695559127443997513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=695559127443997513' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/695559127443997513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/695559127443997513'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/10/man-pages-311-is-released.html' title='&lt;em&gt;man-pages-3.11&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-631816919414986283</id><published>2008-09-24T11:04:00.002+02:00</published><updated>2008-09-24T11:14:46.672+02:00</updated><title type='text'>man-pages-3.10 is released</title><content type='html'>&lt;p&gt;I've uploaded &lt;em&gt;man-pages-3.10&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).  This is a fairly light release; conferences, and learning and changing my workflow for &lt;a href="http://git.or.cz/"&gt;&lt;span style="font-style: italic;"&gt;git&lt;/span&gt;&lt;/a&gt; have take a bit of time lately.  Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.10"&gt;changes in man-pages-3.10&lt;/a&gt; are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/clone.2.html"&gt;&lt;span style="font-style: italic;"&gt;clone(2)&lt;/span&gt;&lt;/a&gt; and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getpid.2.html"&gt;&lt;span style="font-style: italic;"&gt;getpid(2)&lt;/span&gt;&lt;/a&gt; pages add some notes and details of the consequences of the PID caching performed by glibc's &lt;span style="font-style: italic;"&gt;getpid()&lt;/span&gt; wrapper function.&lt;/li&gt;&lt;li&gt;Various changes to &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/services.5.html"&gt;&lt;span style="font-style: italic;"&gt;services(5)&lt;/span&gt;&lt;/a&gt;, including removing various out-of-date pieces of text.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-631816919414986283?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/631816919414986283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=631816919414986283' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/631816919414986283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/631816919414986283'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/09/man-pages-310-is-released.html' title='&lt;em&gt;man-pages-3.10&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5678766654154441855</id><published>2008-09-18T17:14:00.002+02:00</published><updated>2008-09-18T17:22:05.564+02:00</updated><title type='text'>git update</title><content type='html'>I updated my previous post, mainly to add the details required to import subversion &lt;span style="font-style: italic;"&gt;tags &lt;/span&gt;into &lt;span style="font-style: italic;"&gt;git&lt;/span&gt;.  If you cloned the repository that I put up at &lt;span style="font-family: courier new;"&gt;kernel.org&lt;/span&gt; about a week ago, you'll need to re-clone.  (Sorry!)&lt;br /&gt;&lt;br /&gt;The timing has been good.  Primed and ready to start learning more about &lt;span style="font-style: italic;"&gt;git&lt;/span&gt;, I got to join a sizable crowd at the &lt;a href="http://www.linuxplumbersconf.org/"&gt;Linux Plumbers Conference&lt;/a&gt; to see &lt;a href="http://www.linuxplumbersconf.org/program/speakers/getspeaker.php?speaker=ltorvalds.txt"&gt;Linus giving a highly informative and entertaining tutorial on &lt;span style="font-style: italic;"&gt;git&lt;/span&gt;&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5678766654154441855?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5678766654154441855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5678766654154441855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5678766654154441855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5678766654154441855'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/09/git-update.html' title='&lt;em&gt;git&lt;/em&gt; update'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6296474043079341679</id><published>2008-09-11T10:44:00.041+02:00</published><updated>2008-09-18T17:26:14.442+02:00</updated><title type='text'>man-pages goes git (at last!)</title><content type='html'>[&lt;span style="font-weight: bold;"&gt;Update: 19 Sep 2008&lt;/span&gt;: when I first attempted the &lt;span style="font-style: italic;"&gt;git &lt;/span&gt;import, I didn't import the &lt;span style="font-style: italic;"&gt;subversion&lt;/span&gt; tags into &lt;span style="font-style: italic;"&gt;git&lt;/span&gt;.  I've updated and expanded this post to include the required details to do that.]&lt;br /&gt;&lt;br /&gt;When I inherited &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;, there was no &lt;a href="http://en.wikipedia.org/wiki/Revision_control"&gt;version control system&lt;/a&gt; (VCS) in use. To help myself keep track of changes, I've been running a private &lt;a style="font-style: italic;" href="http://subversion.tigris.org/"&gt;subversion&lt;/a&gt; repository since I took over as maintainer (i.e., since &lt;span style="font-style: italic;"&gt;man-pages-2.00&lt;/span&gt;), but I never got round to hosting it on a public server so that people could pull from it (requests for such a facility were only occasional). Instead, people wanting to send patches would just grab the latest tarball from the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;downloads directory&lt;/a&gt;, patch the required source file, and email me the patch.&lt;br /&gt;&lt;br /&gt;Somewhat more frequent requests for a public repository, and the fact that the Linux world is nowadays mostly oriented around the &lt;a href="http://git.or.cz/"&gt;&lt;span style="font-style: italic;"&gt;git&lt;/span&gt;&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Distributed_revision_control"&gt;distributed version control system&lt;/a&gt;, have gradually created a pressure to change things. So, I'm taking baby steps towards using &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; for &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;. Here goes...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Importing from &lt;span style="font-style: italic;"&gt;subversion&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;git&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I found the &lt;a href="http://www.simplisticcomplexity.com/2008/03/05/cleanly-migrate-your-subversion-repository-to-a-git-repository/"&gt;Simplistic Complexity blog's simple instructions on &lt;span style="font-style: italic;"&gt;subversion&lt;/span&gt;-to-&lt;span style="font-style: italic;"&gt;git&lt;/span&gt; migration&lt;/a&gt; quite useful (though it didn't supply all of the details I needed for importing &lt;span style="font-style: italic;"&gt;subversion &lt;/span&gt;tags).&lt;br /&gt;&lt;br /&gt;My subversion repository had a somewhat non-standard layout, which affected the options (see the &lt;span style="font-style: italic;"&gt;git svn init&lt;/span&gt; command below) that I needed to do an import that included my subversion tags.  (Thanks to various people on the &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; mailing list who &lt;a href="http://thread.gmane.org/gmane.comp.version-control.git/96038/"&gt;helped me find the right way to do things&lt;/a&gt;, especially Björn Steinbrink and Michael Gruber.)   The following &lt;span style="font-style: italic;"&gt;subversion &lt;/span&gt;commands give an idea of the layout:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;branches/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;tags/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;trunk/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/trunk&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/trunk/man-pages&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Changes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Changes.old&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Makefile&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;README&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man7/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man8/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;scripts/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/tags&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-2.00/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-2.01/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-3.08/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-3.09/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/tags&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-2.00&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-2.01&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-3.08&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages-3.09&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/tags/man-pages-2.00&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/tags/man-pages-2.01&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;man-pages&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-style: italic;"&gt;[and so on]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$ &lt;span style="font-weight: bold;"&gt;svn list file:///home/mtk/man-pages-rep/branches&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;$&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0); font-style: italic;"&gt;[i.e., no branches, since this has been a linear svn repo.]&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Set up an empty, temporary &lt;span style="font-style: italic;"&gt;git &lt;/span&gt;repository, in the process informing &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; about the location of the &lt;span style="font-style: italic;"&gt;subversion &lt;/span&gt;repository from which the import should be done:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;cd $HOME&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;mkdir man-pages-git-tmp&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;cd man-pages-git-tmp&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;git svn init file:///home/mtk/man-pages-rep/ \&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;                    -T trunk/man-pages \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;                    -b branches/*/man-pages&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;                    -t tags/*/man-pages&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0); font-weight: bold;font-family:courier new;" &gt;                    --no-metadata&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Initialized empty Git repository in .git/&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Tell &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; about the names of users in the &lt;span style="font-style: italic;"&gt;subversion&lt;/span&gt; commit logs. Because the &lt;span style="font-style: italic;"&gt;subversion&lt;/span&gt; repository was private (I just took other people's emailed input and made changes as required), I'm the only user.  That means that the historical information in the repository will be bogus, suggesting that I'm responsible for all of the nearly 5000 commits to the repository, when it's probably more like 75%.  My apologies to everyone else.  Something like the true story for &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; 2.00 through to 3.09 can be found &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;cat &gt; ~/users.txt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;mtk = Michael Kerrisk&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;^D&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;git config svn.authorsfile ~/users.txt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Do the import:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;time git svn fetch&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[...]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;        M Changes&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;r4917 = 93a6e8f9ee5d0710a084425548775348389e2900 (git-svn)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Checking out files: 100% (1925/1925), done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Checked out HEAD:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;  file:///home/mtk/man-pages-rep/trunk/man-pages r4917&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;real 70m24.850s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;user 14m46.571s&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;sys 22m29.852s&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;And yes, I definitely need some faster hardware...&lt;br /&gt;&lt;br /&gt;At this point, &lt;span style="font-style: italic;"&gt;git branch -a&lt;/span&gt; showed that I had imported the &lt;span style="font-style: italic;"&gt;subversion &lt;/span&gt;tags into &lt;span style="font-style: italic;"&gt;git&lt;/span&gt;.  But the tags still need to be turned into proper &lt;span style="font-style: italic;"&gt;git &lt;/span&gt;tags.  This requires a command for each tag, which can be automated in a script.  (Thanks to &lt;a href="http://www.iki.fi/shd"&gt;Heikki Orsila&lt;/a&gt; who pointed out to me that this step was required, and who supplied the script.)&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;cat git-svn-tags.sh&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;git branch -a | grep tags/ | while read tag ; do&lt;br /&gt;  tagname=$(echo $tag | cut -d/ -f2)&lt;br /&gt;  commit=$(git rev-parse $tag)&lt;br /&gt;  res=$(git log master | grep "^commit $commit")&lt;br /&gt;  if test -z "$res" ; then&lt;br /&gt;      # take the parent commit for the tag commit (found in master)&lt;br /&gt;      commit=$(git rev-parse $tag^)&lt;br /&gt;  fi&lt;br /&gt;  echo $tagname $commit&lt;br /&gt;  git tag -a $tagname $commit -m "This is $tagname"&lt;br /&gt;done&lt;br /&gt;&lt;br /&gt;$ &lt;span style="font-weight: bold;"&gt;sh ~/git-svn-tags.sh&lt;/span&gt;&lt;br /&gt;man-pages-2.00 105a35bc69bd3088d69f5d3c94d22e6595e223d2&lt;br /&gt;man-pages-2.01 972a9aee950d4df97cc1f81147b64fe52007dfc7&lt;br /&gt;...&lt;br /&gt;man-pages-3.08 5c8cbdc1b2c9b5a1ebb8626361ea01cb73965636&lt;br /&gt;man-pages-3.09 81468e1308f643ffd5718809379c074ff75dc311&lt;br /&gt;$ &lt;span style="font-weight: bold;"&gt;git tag -l&lt;/span&gt;&lt;br /&gt;man-pages-2.00&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;man-pages-2.01&lt;br /&gt;...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;man-pages-3.08&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;man-pages-3.09&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Clone the temporary repository, to produce a clean repository from which any lingering cruft that was used to support &lt;span style="font-style: italic;"&gt;git svn&lt;/span&gt; has been removed:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;git clone man-pages-git-tmp man-pages-git&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Initialized empty Git repository in /home/mtk/man-pages-git/.git/&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;0 blocks&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;And then run a garbage collection to clean up any remaining unneeded files, and otherwise improve the efficiency of the repository:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;git gc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Counting objects: 36341, done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Compressing objects: 100% (12059/12059), done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Writing objects: 100% (36341/36341), done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Total 36341 (delta 29117), reused 29623 (delta 23595)&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Hosting the &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; repository on &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The public &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; repository is to be hosted on &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt;. Quite a while back the admins there already set up a location for a &lt;span style="font-style: italic;"&gt;man-pages git&lt;/span&gt; repository. &lt;a href="http://ozlabs.org/%7Ejk/"&gt;Jeremy Kerr&lt;/a&gt; kindly held my hand through the hurdles of the initial set up.&lt;br /&gt;&lt;br /&gt;On &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt;, the admins assigned &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; a repository location of &lt;span style="font-family:courier new;"&gt;/pub/scm/docs/man-pages&lt;/span&gt;. So, let's create an empty repository there:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;ssh mtk@master.kernel.org&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;mtk@master.kernel.org's password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[mtk@hera man-pages]$ &lt;span style="font-weight: bold;"&gt;cd /pub/scm/docs/man-pages&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[mtk@hera man-pages]$ &lt;span style="font-weight: bold;"&gt;git init&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[mtk@hera man-pages]$ &lt;span style="font-weight: bold;"&gt;mv .git/ man-pages.git&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[mtk@hera man-pages]$ &lt;span style="font-weight: bold;"&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Back on my local machine, modify the &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; repository's &lt;span style="font-family:courier new;"&gt;config&lt;/span&gt; file so that I can write simple &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; push commands to push changes onto the &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt; repository&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;cat &gt;&gt; ~/man-pages-git/.git/config&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[remote "kernel.org"]&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;        url = ssh://master.kernel.org/pub/scm/docs/man-pages/man-pages.git&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;        push = +refs/heads/master:refs/heads/master&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;And then do the push to &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;cd $HOME/man-pages-git&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;git push kernel.org&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;mtk@master.kernel.org's password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Counting objects: 36341, done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Compressing objects: 100% (12059/12059), done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Writing objects: 100% (36341/36341), 8.62 MiB 681 KiB/s, done.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Total 36341 (delta 29117), reused 29623 (delta 23595)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;To ssh://master.kernel.org/pub/scm/docs/man-pages/man-pages.git&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt; * [new branch] master -&gt; master&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;Log into &lt;span style="font-family:courier new;"&gt;kernel.org&lt;/span&gt; and give the repository a public description:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;span style="font-weight: bold;"&gt;ssh mtk@master.kernel.org&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;mtk@master.kernel.org's password:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[mtk@hera man-pages]$ &lt;span style="font-weight: bold;"&gt;cat &gt; /pub/scm/docs/man-pages/man-pages.git/description&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;Man pages for Linux kernel and glibc APIs&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;^D&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;[mtk@hera man-pages]$ &lt;span style="font-weight: bold;"&gt;exit&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;And then we have the repository visible and ready for use at &lt;a href="http://git.kernel.org/"&gt;http://git.kernel.org/&lt;/a&gt;, and you can clone it using the following command:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 153, 0);font-family:courier new;" &gt;$ &lt;/span&gt;&lt;code style="font-family: courier new; color: rgb(0, 153, 0); font-weight: bold;"&gt;git clone git://git.kernel.org/pub/scm/docs/man-pages/man-pages.git&lt;/code&gt;&lt;/pre&gt;&lt;/blockquote&gt;PS In case it's not clear: only use &lt;span style="font-style: italic;"&gt;git&lt;/span&gt; to submit changes to &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; if that's your preference. It's still possible to submit patches the &lt;a href="http://www.kernel.org/doc/man-pages/patches.html"&gt;good old-fashioned way&lt;/a&gt;, by grabbing the latest release (tarballs will continue to be released as usual every week or two), editing the required source file(s), and sending me a &lt;span style="font-style: italic;"&gt;diff -u&lt;/span&gt; patch by email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6296474043079341679?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6296474043079341679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6296474043079341679' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6296474043079341679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6296474043079341679'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/09/man-pages-goes-git-at-last_11.html' title='&lt;em&gt;man-pages&lt;/em&gt; goes &lt;em&gt;git&lt;/em&gt; (at last!)'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-9124645673346403783</id><published>2008-09-10T15:55:00.006+02:00</published><updated>2008-09-14T15:20:49.692+02:00</updated><title type='text'>man-pages-3.09 is released</title><content type='html'>&lt;p&gt;I've uploaded &lt;em&gt;man-pages-3.09&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.09"&gt;changes in man-pages-3.09&lt;/a&gt; are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fopencookie.3.html"&gt;&lt;span style="font-style: italic;"&gt;fopencookie(3)&lt;/span&gt;&lt;/a&gt; page, documents a library function that allows a custom implementation of a &lt;span style="font-style: italic;"&gt;stdio&lt;/span&gt; stream.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/networks.5.html"&gt;&lt;span style="font-style: italic;"&gt;networks(5)&lt;/span&gt;&lt;/a&gt; page (adopted from Debian) documents the &lt;span style="font-family:courier new;"&gt;/etc/networks&lt;/span&gt; file.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html"&gt;Feature test macro&lt;/a&gt; requirements were added or fixed for various pages.&lt;/li&gt;&lt;li&gt;Many parts of the &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/hsearch.3.html"&gt;&lt;span style="font-style: italic;"&gt;hsearch(3)&lt;/span&gt;&lt;/a&gt; man page were fixed and rewritten.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.jidanni.org/"&gt;Dan Jacobson&lt;/a&gt; remarked that people who read the COLOPHON at the end of each man page may have a kernel or &lt;span style="font-style: italic;"&gt;glibc&lt;/span&gt; bug to report, rather than a &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; bug report, but that following the URL in the COLOPHON only leads to a page describing how to report documentation bugs.  So, I wrote a &lt;a href="http://www.kernel.org/doc/man-pages/reporting_code_bugs.html"&gt;new page giving some pointers about reporting kernel and glibc bugs&lt;/a&gt;, and that page is linked from the &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; &lt;a href="http://www.kernel.org/doc/man-pages/reporting_bugs.html"&gt;reporting bugs&lt;/a&gt; page.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WgybbNCbhU0/SM0OPQ0FFYI/AAAAAAAAABE/Ofyjq2kItlQ/s1600-h/DSC_6299+%28968+x+648%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 211px;" src="http://2.bp.blogspot.com/_WgybbNCbhU0/SM0OPQ0FFYI/AAAAAAAAABE/Ofyjq2kItlQ/s400/DSC_6299+%28968+x+648%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5245864796330726786" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Fast fertig auf da Wiesn&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_WgybbNCbhU0/SM0Noa3dl7I/AAAAAAAAAA8/DJaEYCoIMmc/s1600-h/DSC_6299+%28968+x+648%29.jpg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-9124645673346403783?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/9124645673346403783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=9124645673346403783' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9124645673346403783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9124645673346403783'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/09/man-pages-309-is-released.html' title='&lt;em&gt;man-pages-3.09&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_WgybbNCbhU0/SM0OPQ0FFYI/AAAAAAAAABE/Ofyjq2kItlQ/s72-c/DSC_6299+%28968+x+648%29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3034195656333488560</id><published>2008-08-27T15:22:00.005+02:00</published><updated>2008-09-14T15:19:17.560+02:00</updated><title type='text'>man-pages-3.08 is released</title><content type='html'>&lt;p&gt;I've uploaded &lt;em&gt;man-pages-3.08&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.08"&gt;changes in man-pages-3.08&lt;/a&gt; are: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/numa.7.html"&gt;numa(7)&lt;/a&gt;&lt;/em&gt; page gives an overview of the Linux NUMA interfaces.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getnetent_r.3.html"&gt;getnetent_r(3)&lt;/a&gt;&lt;/em&gt; page documents &lt;em&gt;getnetent_r()&lt;/em&gt;, &lt;em&gt;getnetbyname_r()&lt;/em&gt;, and &lt;em&gt;getnetbyaddr_r()&lt;/em&gt;, the reentrant equivalents of &lt;em&gt;getnetent()&lt;/em&gt;, &lt;em&gt;getnetbyname()&lt;/em&gt;, and &lt;em&gt;getnetbyaddr()&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getprotoent_r.3.html"&gt;getprotoent_r(3)&lt;/a&gt;&lt;/em&gt; page documents &lt;em&gt;getprotoent_r()&lt;/em&gt;, &lt;em&gt;getprotobyname_r()&lt;/em&gt;, and &lt;em&gt;getprotobynumber_r()&lt;/em&gt;, the reentrant equivalents of &lt;em&gt;getprotoent()&lt;/em&gt;, &lt;em&gt;getprotobyname()&lt;/em&gt;, and &lt;em&gt;getprotobynumber()&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getrpcent_r.3.html"&gt;getrpcent_r(3)&lt;/a&gt;&lt;/em&gt; page documents &lt;em&gt;getrpcent_r()&lt;/em&gt;, &lt;em&gt;getrpcbyname_r()&lt;/em&gt;, and&lt;br /&gt;&lt;em&gt;getrpcbynumber_r()&lt;/em&gt;, the reentrant equivalents of &lt;em&gt;getrpcent()&lt;/em&gt;, &lt;em&gt;getrpcbyname()&lt;/em&gt;, and &lt;em&gt;getrpcbynumber()&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getservent_r.3.html"&gt;getservent_r(3)&lt;/a&gt;&lt;/em&gt; page documents documents &lt;em&gt;getservent_r()&lt;/em&gt;, &lt;em&gt;getservbyname_r()&lt;/em&gt;, and &lt;em&gt;getservbyport_r()&lt;/em&gt;, the reentrant equivalents of &lt;em&gt;getservent()&lt;/em&gt;, &lt;em&gt;getservbyname()&lt;/em&gt;, and &lt;em&gt;getservbyport()&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;Further updates related to changes in the recently &lt;a href="https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&amp;amp;source=L&amp;amp;listname=austin-group-l&amp;amp;id=11620"&gt;approved&lt;/a&gt; POSIX.1-2008 standard.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3034195656333488560?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3034195656333488560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3034195656333488560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3034195656333488560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3034195656333488560'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/man-pages-308-is-released.html' title='&lt;em&gt;man-pages-3.08&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-386801324503670408</id><published>2008-08-15T05:09:00.005+02:00</published><updated>2008-08-15T05:14:16.324+02:00</updated><title type='text'>Speaking at LPC</title><content type='html'>My paper for &lt;a href="http://linuxplumbersconf.org/"&gt;Linux Plumbers Conference&lt;/a&gt; (&lt;a href="http://linuxplumbersconf.org/program/schedule/"&gt;16-19 September&lt;/a&gt;, Portland, OR) got accepted :-).  I'll be considering the question: &lt;a href="http://linuxplumbersconf.org/program/speakers/getspeaker.php?speaker=mkerrisk.txt"&gt;Who owns the interface?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-386801324503670408?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/386801324503670408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=386801324503670408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/386801324503670408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/386801324503670408'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/speaking-at-lpc.html' title='Speaking at LPC'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5336087878696882974</id><published>2008-08-12T14:33:00.009+02:00</published><updated>2008-08-12T17:17:24.941+02:00</updated><title type='text'>man-pages-3.07 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.07&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.07"&gt;changes in man-pages-3.07&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/move_pages.2.html"&gt;move_pages(2)&lt;/a&gt;&lt;/em&gt; page, written by Christoph Lameter, documents the &lt;em&gt;move_pages()&lt;/em&gt; system call. This page was formerly part of the &lt;a href="http://oss.sgi.com/projects/libnuma/"&gt;&lt;em&gt;numactl&lt;/em&gt;&lt;/a&gt; package, but has been revised and moved into &lt;em&gt;man-pages&lt;/em&gt; (its natural home, since it is a kernel interface).&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/clock_getcpuclockid.3.html"&gt;clock_getcpuclockid(3)&lt;/a&gt;&lt;/em&gt; page describes the &lt;em&gt;clock_getcpuclockid()&lt;/em&gt; library function.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/udplite.7.html"&gt;udplite(7)&lt;/a&gt;&lt;/em&gt; page, written by Gerrit Renker, documents the Linux implementation (since kernel 2.6.20) of the &lt;a href="http://tools.ietf.org/html/rfc3828"&gt;UDP-Lite&lt;/a&gt; transport layer protocol.&lt;/li&gt;&lt;li&gt;The&lt;em&gt; &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html"&gt;proc(5)&lt;/a&gt;&lt;/em&gt; man page adds a description of the &lt;em&gt;/proc/PID/numa_maps&lt;/em&gt; file.&lt;/li&gt;&lt;li&gt;Various updates and improvements by Lee Schermerhorn for the &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/mbind.2.html"&gt;mbind(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/get_mempolicy.2.html"&gt;get_mempolicy(2)&lt;/a&gt;&lt;/em&gt;, and &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/set_mempolicy.2.html"&gt;set_mempolicy(2)&lt;/a&gt;&lt;/em&gt; pages.&lt;/li&gt;&lt;li&gt;Following on from last week's big update to the math man pages, there are a few more changes to these pages. Most notably, where error-reporting details have differed (from &lt;em&gt;glibc&lt;/em&gt; 2.8) in earlier versions of &lt;em&gt;glibc&lt;/em&gt;, the differences have been noted in the man pages. Currently, the details have been extended back until &lt;em&gt;glibc&lt;/em&gt; 2.3.2, but I hope to extend them back further, when I can get test results. If you want to help, look &lt;a href="http://linux-man-pages.blogspot.com/2008/08/help-request-testing-of-math-function.html"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;On 24 July, the Governing Board of &lt;a href="http://www.opengroup.org/"&gt;The Open Group&lt;/a&gt; &lt;a href="https://www.opengroup.org/sophocles/show_mail.tpl?CALLER=show_archive.tpl&amp;amp;source=L&amp;amp;listname=austin-group-l&amp;amp;id=11620"&gt;approved&lt;/a&gt; the 2008 revisions of POSIX.1. Among other things, POSIX.1-2008 marks some previously specified functions as obsolete, and drops the specifications of some other functions altogether. The manual pages have been updated to reflect all of these changes. (The standard should be published in final form after approval by the IEEE, but in the meantime you can get access to the draft by joining the &lt;a href="http://www.opengroup.org/austin/"&gt;Austin group&lt;/a&gt;.)&lt;/li&gt;&lt;li&gt;VERSIONS sections have been added to the man pages of many library functions to indicate the &lt;em&gt;glibc&lt;/em&gt; version where the function first appeared.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5233638467560683426" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 224px; CURSOR: hand; HEIGHT: 289px; TEXT-ALIGN: center" height="355" alt="" src="http://3.bp.blogspot.com/_WgybbNCbhU0/SKGedQ3GN6I/AAAAAAAAAA0/mn578uWXqrg/s320/DSC_4320-cropped.jpg" width="281" border="0" /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;em&gt;Grünegg Fenster&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5336087878696882974?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5336087878696882974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5336087878696882974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5336087878696882974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5336087878696882974'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/man-pages-307-is-released.html' title='&lt;em&gt;man-pages-3.07&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WgybbNCbhU0/SKGedQ3GN6I/AAAAAAAAAA0/mn578uWXqrg/s72-c/DSC_4320-cropped.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4947337487038466984</id><published>2008-08-08T11:41:00.011+02:00</published><updated>2008-11-28T17:50:41.323+01:00</updated><title type='text'>Translating man-pages</title><content type='html'>Lately, I've gotten a few requests for information about how to translate &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/"&gt;man-pages&lt;/a&gt;&lt;/em&gt; into other languages&lt;em&gt;.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;First off, I should say that I have never translated &lt;em&gt;man-pages&lt;/em&gt;. But I have communicated with a few people who do. So these are my current thoughts...&lt;br /&gt;&lt;br /&gt;Do you really want to do this? Before you answer this, consider the following:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;man-pages&lt;/em&gt; contains the documentation of the Linux and &lt;em&gt;glibc&lt;/em&gt; programming APIs (i.e., pages in Sections 2, 3, 4, 5, and 7). Is this the set of man pages that your group of language speakers most need? If, for example, you are more interested in translating pages for end users, then you might want instead to translate pages in the &lt;a href="http://www.gnu.org/software/coreutils/"&gt;&lt;em&gt;coreutils&lt;/em&gt;&lt;/a&gt; package. (More generally, if you want to find out which package a particular man page belongs to, take a look &lt;a href="http://www.kernel.org/doc/man-pages/man_pages_other.html"&gt;here&lt;/a&gt;.)&lt;/li&gt;&lt;li&gt;How big is the target audience? Your target audience is primarily programmers. What proportion of them aren't able to read English well enough to read man pages, and therefore would benefit from a translation? Is that group big enough to warrant the effort of a translation? Or is there perhaps a better place where you can invest your time in working on Linux?&lt;/li&gt;&lt;li&gt;How much time do you have? There are currently around 850 &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;pages in &lt;em&gt;man-pages&lt;/em&gt;&lt;/a&gt;, amounting to perhaps 2000 pages of printed text. My guess is that this amounts to one to two person years of translation work. In other words, you'll need to have a team of translators, if you intend to complete the translation in any reasonable time.&lt;/li&gt;&lt;li&gt;What is your longer term commitment? &lt;em&gt;man-pages&lt;/em&gt; is a &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html"&gt;moving target&lt;/a&gt;: starting a couple of months ago, I'm now working full time on &lt;em&gt;man-pages&lt;/em&gt;, and I make a release every week or so. The &lt;a href="http://manpagesfr.free.fr/"&gt;French translator &lt;/a&gt;estimates that there is around two days' work for him translating each release. Now, I may not be working full time on man-pages forever, and therefore the required translation effort may decrease some day, but the point remains that there is a significant ongoing effort required to keep a translation up to date and useful.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The size of the translation effort should not be underestimated. It is because it is so large that to date there has been only one complete and up-to-date translation: the &lt;a href="http://linux-man-pages.blogspot.com/2007/12/man-pages-fr-2740-est-sorti.html"&gt;French translation&lt;/a&gt;. (For a while, there was a fairly full German translation, but it seems to have &lt;a href="http://lists.infodrom.org/manpages-de/2008/0000.html"&gt;languished for a few years now&lt;/a&gt;.) The state of the French translation has largely been down to the extraordinary work of two people: &lt;a href="http://www.blaess.fr/christophe/index.html"&gt;Christophe Blaess&lt;/a&gt;, and more recently, &lt;a href="http://fedoraproject.org/wiki/AlainPortal"&gt;Alain Portal&lt;/a&gt;. (In fact, there are nowadays two French translations which cooperate to some extent: the &lt;a href="http://packages.debian.org/stable/doc/manpages-fr"&gt;Debian distribution has a team&lt;/a&gt; doing a French translation of &lt;em&gt;man-pages&lt;/em&gt;.) But nowadays even the French translator(s) have started to feel the strain resulting from the recent increase in my output.&lt;/p&gt;&lt;p&gt;If you decide you really want to do a translation (and think very carefully before you do decide that!), then I have a few thoughts on how you go about it.&lt;/p&gt;&lt;p&gt;Tools: I have no real recommendations here (since I never translated &lt;em&gt;man-pages&lt;/em&gt;). But it's worth mentioning that the Debian French translators use &lt;a href="http://po4a.alioth.debian.org/"&gt;po4a&lt;/a&gt;, and see it as &lt;em&gt;very&lt;/em&gt; beneficial for their work, especially for &lt;em&gt;facilitating the work of a team&lt;/em&gt; of translators.&lt;/p&gt;&lt;p&gt;Other than that, I'd say that you need to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Estimate the time required to translate the 850 pages in &lt;em&gt;man-pages&lt;/em&gt;, and decide if you have the necessary number translators who have sufficient time to complete the work.&lt;/li&gt;&lt;li&gt;Divide the work up so that your translators can work independently on translations. I suggest you divide the pages up into small, related parcels. For example, the POSIX message queue pages (&lt;em&gt;mq_*&lt;/em&gt;) could be a parcel translated by a single translator, or the &lt;a href="http://linux-man-pages.blogspot.com/2008/08/math-functions-and-error-reporting.html"&gt;math man pages&lt;/a&gt; could be a parcel translated by a single translator, etc.&lt;/li&gt;&lt;li&gt;Come up with a review plan, so that each translation by one member of your team is reviewed by at least one other member. &lt;/li&gt;&lt;li&gt;Devise a glossary of terminology, so that you all translate English technical terms ("e.g., shared memory segment") into the same terms in the target language.&lt;/li&gt;&lt;li&gt;Plan for ongoing maintenance, so that as the English man pages are updated, then the translated pages are also updated. Don't underestimate the amount of this work!&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;My suggestion is that if you go forward with a translation project, then:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Pick a particular &lt;em&gt;man-pages&lt;/em&gt; release -- let's say &lt;em&gt;man-pages-3.x&lt;/em&gt; -- and translate all of the pages in that version. &lt;/li&gt;&lt;li&gt;When that is completed, you can then update your translation with all of the changes that have occurred in the English original since release &lt;em&gt;man-pages-3.x&lt;/em&gt;. I keep fairly detailed &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html"&gt;changelogs&lt;/a&gt; which should assist you during this phase of the work. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I suggest doing things this way since I estimate that trying to do a translation while simultaneously trying to keep up with changes in already translated pages would just prove too difficult. You might decide otherwise.&lt;/p&gt;&lt;p&gt;And finally... did I mention that you should think long and hard before embarking on a translation of &lt;em&gt;man-pages&lt;/em&gt;?&lt;/p&gt;&lt;p&gt;[12 Aug 08: minor updates, to point out exactly which sections are in &lt;em&gt;man-pages&lt;/em&gt;, and to suggest more appropriate pages to translate, if targeting end users.]&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4947337487038466984?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4947337487038466984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4947337487038466984' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4947337487038466984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4947337487038466984'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/translating-man-pages.html' title='Translating &lt;em&gt;man-pages&lt;/em&gt;'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3022235648825267933</id><published>2008-08-06T11:00:00.000+02:00</published><updated>2008-08-06T11:01:56.732+02:00</updated><title type='text'>Help request: testing of math function error reporting</title><content type='html'>&lt;p&gt;As I mentioned in my &lt;a href="http://linux-man-pages.blogspot.com/2008/08/math-functions-and-error-reporting.html"&gt;previous post&lt;/a&gt;, as of &lt;em&gt;&lt;a href="http://linux-man-pages.blogspot.com/2008/08/man-pages-306-is-released.html"&gt;man-pages-3.06&lt;/a&gt;&lt;/em&gt;, the math man pages now describe the error-reporting behavior of the math functions as at &lt;em&gt;glibc&lt;/em&gt; 2.8. I'd like to extend those descriptions to cover differences in older &lt;em&gt;glibc&lt;/em&gt; versions. In order to do that, I've written some scripts to check the error-reporting behavior of the math functions, and I'd like to run them on as many different versions of &lt;em&gt;glibc&lt;/em&gt; as possible.&lt;/p&gt;&lt;p&gt;If you'd like to help, and you have an x86 system with an older &lt;em&gt;glibc&lt;/em&gt; (look at the version number in the first line of output produced by the command &lt;span style="font-family:courier new;"&gt;/lib/libc.so.6&lt;/span&gt;), run the script in &lt;a href="http://userweb.kernel.org/~mtk/tests/glibc/math/math_error/math_tests-2008-08-06.tar.gz"&gt;this tarball&lt;/a&gt; (see the &lt;span style="font-family:courier new;"&gt;README&lt;/span&gt; file inside the tarball for details), and send me the resulting log file (email to &lt;em&gt;mtk.manpages AT gmail.com&lt;/em&gt;).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3022235648825267933?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3022235648825267933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3022235648825267933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3022235648825267933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3022235648825267933'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/help-request-testing-of-math-function.html' title='Help request: testing of math function error reporting'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4313558200504838613</id><published>2008-08-06T10:45:00.014+02:00</published><updated>2008-08-07T05:41:11.629+02:00</updated><title type='text'>Math functions and error reporting</title><content type='html'>Math functions are different from most other library functions in the kinds of errors that they report, and in the way that they report errors. Broadly speaking, a math function can fail for one of the following reasons:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Domain error&lt;/em&gt;: an argument to the function was outside the range for which the function was defined. For example, the call &lt;em&gt;sqrt(-1.0)&lt;/em&gt; gives a domain error because a negative number does not have (real) square root. When a domain error occurs, a math function typicall returns a &lt;a href="http://en.wikipedia.org/wiki/NaN"&gt;NaN&lt;/a&gt; (not-a-number).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Pole error&lt;/em&gt;: the function result is an exact infinity. For example &lt;em&gt;log(0.0)&lt;/em&gt; is negative infinity. When a pole error occurs, most math functions return the floating-point representation of positive or negative infinity, as appropriate (i.e., &lt;span style="font-family:courier new;"&gt;HUGE_VAL&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;-HUGE_VAL&lt;/span&gt; for functions returning a &lt;em&gt;double&lt;/em&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Range error (overflow)&lt;/em&gt;: an overflow occurs if the function result is too large to be represented as a floating-point number. For example, &lt;em&gt;exp(1e10)&lt;/em&gt; produces a number too large to represent in a &lt;em&gt;double&lt;/em&gt;. When an overflow occurs, most math functions return the floating-point representation of positive or negative infinity, as appropriate (i.e., &lt;span style="font-family:courier new;"&gt;HUGE_VAL&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;-HUGE_VAL&lt;/span&gt; for functions returning a &lt;em&gt;double&lt;/em&gt;).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Range error (underflow)&lt;/em&gt;: an underflow occurs if the function result is so small that it can't be represented as a (normalized) floating-point number. For example, &lt;em&gt;exp(-1e10)&lt;/em&gt; produces a number too large to represent in a &lt;em&gt;double&lt;/em&gt;. When an underflow occurs, a math function usually either returns a &lt;a href="http://en.wikipedia.org/wiki/Signed_zero"&gt;(signed) zero&lt;/a&gt;, or a &lt;a href="http://en.wikipedia.org/wiki/Denormal_number"&gt;subnormal value&lt;/a&gt;, as appropriate.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;(More details can be found in the &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/math_error.7.html"&gt;math_error(7)&lt;/a&gt;&lt;/em&gt; man page.) &lt;/p&gt;&lt;p&gt;Many library functions report an error by returning a &lt;span style="font-family:courier new;"&gt;NULL&lt;/span&gt; pointer or an integer -1. Neither of these mechanisms would be suitable for math functions: these functions usually return a floating-point value, and -1 is in many cases a valid successful return. For this reasons, the C99 and POSIX.1-2001 standards define two other mechanisms by which math functions can report errors. &lt;/p&gt;&lt;p&gt;The first of the error-reporting mechanisms is to use the traditional &lt;em&gt;errno&lt;/em&gt; variable. We set the &lt;em&gt;errno&lt;/em&gt; to zero before the call, and if it has a non-zero value after the call, then an error occurred. On error, &lt;em&gt;errno&lt;/em&gt; is set as follows: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Domain error: &lt;span style="font-family:courier new;"&gt;EDOM&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pole error: &lt;span style="font-family:courier new;"&gt;ERANGE&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Overflow: &lt;span style="font-family:courier new;"&gt;ERANGE&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Underflow: &lt;span style="font-family:courier new;"&gt;ERANGE&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;(These settings do of course make it hard to distinguish the last three types of errors.)&lt;br /&gt;&lt;br /&gt;The other error-reporting mechanism is exceptions. For each of the errors described above, the system raises an exception, and the &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fetestexcept.3.html"&gt;fetestexcept()&lt;/a&gt;&lt;/em&gt; library function can be used to check whether an exception occurred. In order to use this mechanism we do the following:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Call &lt;em&gt;feclearexcept(FE_ALL_EXCEPT)&lt;/em&gt; to clear any existing exceptions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Call the math library function.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Call &lt;em&gt;fetestexcept(FE_INVALID FE_DIVBYZERO FE_OVERFLOW FE_UNDERFLOW)&lt;/em&gt;. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;If the math function was successful, then &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fetestexcept.3.html"&gt;fetestexcept()&lt;/a&gt;&lt;/em&gt; returns 0. If an error occurred while calling the math function, then &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fetestexcept.3.html"&gt;fetestexcept()&lt;/a&gt;&lt;/em&gt; returns a bit mask indicating the error. In this bit mask, exactly one of &lt;span style="font-family:courier new;"&gt;FE_INVALID&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;FE_DIVBYZERO&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;FE_OVERFLOW&lt;/span&gt;, or &lt;span style="font-family:courier new;"&gt;FE_UNDERFLOW&lt;/span&gt; will be set. The exceptions raised for each error are:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Domain error: invalid exception (&lt;span style="font-family:courier new;"&gt;FE_INVALID&lt;/span&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Pole error: divide-by-zero exception (&lt;span style="font-family:courier new;"&gt;FE_DIVBYZERO&lt;/span&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Overflow: overflow exception (&lt;span style="font-family:courier new;"&gt;FE_OVERFLOW&lt;/span&gt;)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Underflow: underflow exception (&lt;span style="font-family:courier new;"&gt;FE_UNDERFLOW&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;C99 and POSIX.1-2001 require an implementation to support at least one of the error-reporting mechanisms for all math functions, and allow both to be supported. The standards specify an identifier, &lt;em&gt;math_errhandling&lt;/em&gt;, that an implementation should set to indicate which mechanisms are supported. If &lt;em&gt;(math_errhandling &amp;amp; MATH_ERRNO)&lt;/em&gt; is non-zero, then &lt;em&gt;errno&lt;/em&gt; is set to indicate errors. If &lt;em&gt;(math_errhandling &amp;amp; MATH_EXCEPT)&lt;/em&gt; is non-zero ,then exceptions are raised on errors.&lt;/p&gt;&lt;p&gt;The &lt;span style="font-family:courier new;"&gt;&lt;a href="http://sourceware.org/cgi-bin/cvsweb.cgi/libc/CONFORMANCE?cvsroot=glibc"&gt;CONFORMANCE&lt;/a&gt;&lt;/span&gt; file in the &lt;em&gt;glibc&lt;/em&gt; sources has long explained that: &lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;Implementing MATH_ERRNO, MATH_ERREXCEPT and math_errhandling in &lt;math.h&gt;needs compiler support: see&lt;br /&gt;&lt;a href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00008.html"&gt;http://sources.redhat.com/ml/libc-hacker/2000-06/msg00008.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00014.html"&gt;http://sources.redhat.com/ml/libc-hacker/2000-06/msg00014.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00015.html"&gt;http://sources.redhat.com/ml/libc-hacker/2000-06/msg00015.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;But to date this support has not arrived. In any case, this support is a somewhat moot point, since it transpires that neither of the mechanisms is supported by all of the math functions in &lt;em&gt;glibc&lt;/em&gt;: most (but not all) support exceptions, many support both exceptions and &lt;em&gt;errno&lt;/em&gt;, a few support &lt;em&gt;errno&lt;/em&gt; but not exceptions, and one or two functions support neither mechanism. To make things even worse, the man pages didn't fully and correctly describe the details for each math function. Since &lt;em&gt;&lt;a href="http://linux-man-pages.blogspot.com/2008/08/man-pages-306-is-released.html"&gt;man-pages-3.06&lt;/a&gt;&lt;/em&gt;, the details should now be accurate, at least for &lt;em&gt;glibc&lt;/em&gt; 2.8.&lt;/p&gt;&lt;p&gt;Ideally, all of the &lt;em&gt;glibc&lt;/em&gt; math functions would support both mechanisms, so that programs that depend on either mechanism could be happily ported to Linux. With that idea in mind, I went through and tested the error-reporting behavior for each math function, and &lt;a href="http://thread.gmane.org/gmane.comp.lib.glibc.alpha/13583/focus=13594"&gt;filed a series of bug reports&lt;/a&gt; that document deviations from that ideal. &lt;/p&gt;&lt;p&gt;In order to get an overview, the table below summarizes the situation for all of the math functions as at &lt;em&gt;glibc&lt;/em&gt; 2.8. The third and fourth columns indicate whether &lt;em&gt;errno&lt;/em&gt; is correctly set and an exception is raised for each error case. &lt;style type="text/css"&gt;.nobrtable br { display: none}&lt;/style&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="nobrtable"&gt;&lt;br /&gt;&lt;br /&gt;&lt;table cellspacing="0" cellpadding="3" border="1"&gt;&lt;br /&gt;&lt;br /&gt;&lt;tbody&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;&lt;strong&gt;Function&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;&lt;strong&gt;Expected error&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;&lt;strong&gt;&lt;em&gt;errno&lt;/em&gt; set correctly?&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;&lt;strong&gt;Exception correctly raised?&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/acos.3.html"&gt;acos&lt;/a&gt;(+-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/acosh.3.html"&gt;acosh&lt;/a&gt;(x&lt;1)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/asin.3.html"&gt;asin&lt;/a&gt;(+-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/asinh.3.html"&gt;asinh&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/atan.3.html"&gt;atan&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/atan2.3.html"&gt;atan2&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/atanh.3.html"&gt;atanh&lt;/a&gt;(+-1)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;errno&lt;/em&gt; is set to EDOM (should be ERANGE)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/atanh.3.html"&gt;atanh&lt;/a&gt;(x&gt;1)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/cbrt.3.html"&gt;cbrt&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ceil.3.html"&gt;ceil&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/cos.3.html"&gt;cos&lt;/a&gt;(+-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/cosh.3.html"&gt;cosh&lt;/a&gt;(+-large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., cosh(DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/erf.3.html"&gt;erf&lt;/a&gt;(+-small)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;For subnormal &lt;em&gt;x&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/erfc.3.html"&gt;erfc&lt;/a&gt;(x)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Result underflows but produces representable (i.e., subnormal) result; e.g., erfc(27)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exp.3.html"&gt;exp&lt;/a&gt;(+large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exp.3.html"&gt;exp&lt;/a&gt;(-large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exp10.3.html"&gt;exp10&lt;/a&gt;(+large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;GNU extension, but inconsistent with exp()&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exp10.3.html"&gt;exp10&lt;/a&gt;(-large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;GNU extension, but inconsistent with exp()&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exp2.3.html"&gt;exp2&lt;/a&gt;(+large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/exp2.3.html"&gt;exp2&lt;/a&gt;(-large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/expm1.3.html"&gt;expm1&lt;/a&gt;(+large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fabs.3.html"&gt;fabs&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fdim.3.html"&gt;fdim&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., fdim(DBL_MAX, -DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/floor.3.html"&gt;floor&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fma.3.html"&gt;fma&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Various causes, e.g., one of &lt;em&gt;x&lt;/em&gt; or &lt;em&gt;y&lt;/em&gt; is an infinity and the other is 0.&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fma.3.html"&gt;fma&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., fma(DBL_MAX, DBL_MAX, 0)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fma.3.html"&gt;fma&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., fma(DBL_MIN, DBL_MIN, 0)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fmax.3.html"&gt;fmax&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fmin.3.html"&gt;fmin&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fmod.3.html"&gt;fmod&lt;/a&gt;(+-inf,y)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/fmod.3.html"&gt;fmod&lt;/a&gt;(x,0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/hypot.3.html"&gt;hypot&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., hypot(DBL_MAX, DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/hypot.3.html"&gt;hypot&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., if both arguments are small subnormal numbers&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ilogb.3.html"&gt;ilogb&lt;/a&gt;(+-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Does correctly return INT_MAX&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ilogb.3.html"&gt;ilogb&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Does correctly return FP_ILOGB0&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ilogb.3.html"&gt;ilogb&lt;/a&gt;(nan)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Does correctly return FP_ILOGBNAN&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/j0.3.html"&gt;j0&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., j0(DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/j1.3.html"&gt;j1&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/jn.3.html"&gt;jn&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ldexp.3.html"&gt;ldexp&lt;/a&gt;(x, +large-exp)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ldexp.3.html"&gt;ldexp&lt;/a&gt;(x, -large-exp)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/lgamma.3.html"&gt;lgamma&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., lgamma(DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/lgamma.3.html"&gt;lgamma&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Occurs when &lt;em&gt;x&lt;/em&gt; is a non-positive integer; &lt;em&gt;errno&lt;/em&gt; is set to EDOM (should be ERANGE)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/llrint.3.html"&gt;llrint&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;x&lt;/em&gt; is NaN, infinity, or too large to store in a &lt;em&gt;long long&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/llround.3.html"&gt;llround&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;x&lt;/em&gt; is NaN, infinity, or too large to store in a &lt;em&gt;long long&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log.3.html"&gt;log&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log.3.html"&gt;log&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log10.3.html"&gt;log10&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log10.3.html"&gt;log10&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log1p.3.html"&gt;log1p&lt;/a&gt;(-1)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log1p.3.html"&gt;log1p&lt;/a&gt;(x&lt;-1)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log2.3.html"&gt;log2&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/log2.3.html"&gt;log2&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/logb.3.html"&gt;logb&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/lrint.3.html"&gt;lrint&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;x&lt;/em&gt; is NaN, infinity, or too large to store in a &lt;em&gt;long&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/lround.3.html"&gt;lround&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;x&lt;/em&gt; is NaN, infinity, or too large to store in a &lt;em&gt;long&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/nearbyint.3.html"&gt;nearbyint&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/nextafter.3.html"&gt;nextafter&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., nextafter(DBL_MAX, +inf)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/nextafter.3.html"&gt;nextafter&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., nextafter(DBL_MIN, 0);&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/nexttoward.3.html"&gt;nexttoward&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., nexttoward(DBL_MAX, +inf)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/nexttoward.3.html"&gt;nexttoward&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., nexttoward(DBL_MIN, 0);&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pow.3.html"&gt;pow&lt;/a&gt;(0, -y)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole (0, neg)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;errno&lt;/em&gt; is set to EDOM (should be ERANGE)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pow.3.html"&gt;pow&lt;/a&gt;(x,y)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;p&gt;Suitable values to cause overflow (e.g., pow(2, 1e100))&lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pow.3.html"&gt;pow&lt;/a&gt;(x,y)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;p&gt;Suitable values to cause underflow (e.g., pow(2, -1e100)&lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/pow.3.html"&gt;pow&lt;/a&gt;(x&lt;0,&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/remainder.3.html"&gt;remainder&lt;/a&gt;(+-inf,y)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/remainder.3.html"&gt;remainder&lt;/a&gt;(x,0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/remquo.3.html"&gt;remquo&lt;/a&gt;(+-inf,y)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/remquo.3.html"&gt;remquo&lt;/a&gt;(x,0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/rint.3.html"&gt;rint&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/round.3.html"&gt;round&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalb.3.html"&gt;scalb&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., scalb(DBL_MAX, 200)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalb.3.html"&gt;scalb&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., scalb(DBL_MAX, -200)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalb.3.html"&gt;scalb&lt;/a&gt;(0,+inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalbln.3.html"&gt;scalbln&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., scalbln(DBL_MAX, 200)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalbln.3.html"&gt;scalbln&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., scalbln(DBL_MAX, -200)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalbn.3.html"&gt;scalbn&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., scalbn(DBL_MAX, 200)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalbn.3.html"&gt;scalbn&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., scalbn(DBL_MAX, -200)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/sin.3.html"&gt;sin&lt;/a&gt;(+-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/sinh.3.html"&gt;sinh&lt;/a&gt;(+-large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., sinh(DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/sqrt.3.html"&gt;sqrt&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tan.3.html"&gt;tan&lt;/a&gt;(+-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tan.3.html"&gt;tan&lt;/a&gt;(pi/2)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No test possible, since the best approximation of pi/2 in double precision only yields a tan() value of 1.633e16.&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tanh.3.html"&gt;tanh&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tgamma.3.html"&gt;tgamma&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Occurs for ranges of &lt;em&gt;x&lt;/em&gt; values between negative integers, e.g., tgamma(-10000.5)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tgamma.3.html"&gt;tgamma&lt;/a&gt;(+-0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tgamma.3.html"&gt;tgamma&lt;/a&gt;(+large)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tgamma.3.html"&gt;tgamma&lt;/a&gt;(-inf)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;p&gt;Note the difference from&lt;br /&gt;tgamma(x&lt;0)&lt;/p&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/tgamma.3.html"&gt;tgamma&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;For finite &lt;em&gt;x&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/trunc.3.html"&gt;trunc&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;No errors occur&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y0.3.html"&gt;y0&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Not possible to overflow with &lt;em&gt;double&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y0.3.html"&gt;y0&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., y0(DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y0.3.html"&gt;y0&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;errno&lt;/em&gt; is set to EDOM (should be ERANGE)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y0.3.html"&gt;y0&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y1.3.html"&gt;y1&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;Not possible to overflow with &lt;em&gt;double&lt;/em&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y1.3.html"&gt;y1&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., y1(DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y1.3.html"&gt;y1&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;errno&lt;/em&gt; is set to EDOM (should be ERANGE)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y1.3.html"&gt;y1&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/yn.3.html"&gt;yn&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;overflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., yn(1000, DBL_MIN)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/yn.3.html"&gt;yn&lt;/a&gt;()&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;underflow&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;e.g., yn(10, DBL_MAX)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/yn.3.html"&gt;yn&lt;/a&gt;(0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;pole&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;n&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;em&gt;errno&lt;/em&gt; is set to EDOM (should be ERANGE)&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/yn.3.html"&gt;yn&lt;/a&gt;(x&lt;0)&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;domain&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td align="middle"&gt;y&lt;/td&gt;&lt;br /&gt;&lt;br /&gt;&lt;td&gt;-&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4313558200504838613?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4313558200504838613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4313558200504838613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4313558200504838613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4313558200504838613'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/math-functions-and-error-reporting.html' title='Math functions and error reporting'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-1809889413241279650</id><published>2008-08-05T15:38:00.012+02:00</published><updated>2008-08-05T19:34:45.478+02:00</updated><title type='text'>man-pages-3.06 is released</title><content type='html'>&lt;div align="left"&gt;I've uploaded &lt;em&gt;man-pages-3.06&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). The main &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.06"&gt;changes in &lt;em&gt;man-pages-3.06&lt;/em&gt;&lt;/a&gt; are updates to around 65 math pages. The changes are broadly as follows:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;RETURN VALUE: in many cases, the math pages lacked descriptions of the return value when the function arguments are &lt;a href="http://en.wikipedia.org/wiki/IEEE_754-1985#Cases"&gt;special cases&lt;/a&gt; such as +0, &lt;a href="http://en.wikipedia.org/wiki/Signed_zero"&gt;-0&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/NaN"&gt;NaN&lt;/a&gt; (not-a-number), +infinity, -infinity, etc. This has been fixed. I carried out tests on &lt;em&gt;glibc&lt;/em&gt; 2.8 to ensure that the behavior of all of these functions matches the RETURN VALUE descriptions (and the POSIX.1-2001 requirements).&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;BUGS: a BUGS sections was added to a few pages to document deviations from from expected behavior.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;ERRORS: many pages lacked a clear (or indeed any) description of how &lt;em&gt;errno&lt;/em&gt; is set on error and what exception is raised for each error. This has been fixed. The ERRORS sections are now generally headed up as per the POSIX.1 way of doing things, describing Pole, Range, and Domain errors, as applicable. I carried out tests on &lt;em&gt;glibc&lt;/em&gt; 2.8 to ensure that all of these functions match the ERRORS descriptions. Deviations from POSIX.1-2001 requirements have been filed as &lt;em&gt;glibc&lt;/em&gt; bug reports, and noted in the man pages. (The pages now describe the situation for ERRORS as at &lt;em&gt;glibc&lt;/em&gt; 2.8. I may eventually try and extend the text with descriptions of changes in older versions of &lt;em&gt;glibc&lt;/em&gt;; watch for a post on that subject in the next days, when I'll describe my test scripts&lt;em&gt;.&lt;/em&gt;)&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Fixed &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/feature_test_macros.7.html"&gt;feature test macros&lt;/a&gt; (FTMs). Often, the FTM requirements for the &lt;em&gt;float&lt;/em&gt; and &lt;em&gt;long double&lt;/em&gt; versions of a math function are different from the requirements for the &lt;em&gt;double&lt;/em&gt; version. Each math page now shows the correct FTM requirements for all three versions of the function(s) it describes. This may have required either a change to the existing FTM text (if the requirements for the &lt;em&gt;double&lt;/em&gt; function were already described), or the addition of an FTM description to a SYNOPSIS where one was not previously present (typically because the &lt;em&gt;double&lt;/em&gt; version of the function does not require any FTMs to be defined). A few outright errors in the documentation of FTM requirements were also fixed.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;CONFORMING TO: in many cases, POSIX.1-2001 was not mentioned. Where a function is specified in POSIX.1-2001, this is now noted. Also, statements about what other standards a function conforms to were generally clarified. (The wording about which functions conformed to C99 was previously often done as an add-on sentence; now it is made part of the first sentence of the CONFORMING TO section, along with mention of POSIX.1-2001.)&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="left"&gt;While making all of the above changes, I split out some logically separate material from existing pages to create three new pages: &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/erfc.3.html"&gt;&lt;em&gt;erfc(3)&lt;/em&gt;&lt;/a&gt; (formerly part of &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/erf.3.html"&gt;&lt;em&gt;erf(3)&lt;/em&gt;&lt;/a&gt;), &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalbln.3.html"&gt;scalbln(3)&lt;/a&gt;&lt;/em&gt; (formerly part of &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scalb.3.html"&gt;scalb(3)&lt;/a&gt;&lt;/em&gt;), and &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/y0.3.html"&gt;y0(3)&lt;/a&gt;&lt;/em&gt; (formerly part of &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/j0.3.html"&gt;j0(3)&lt;/a&gt;&lt;/em&gt;).&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;p&gt;&lt;div align="left"&gt;P.S. One point that is still not covered in any page is the circumstances that generate inexact (&lt;span style="font-family:courier new;"&gt;FE_INEXACT&lt;/span&gt;) floating-point exceptions. (The details for these exceptions are not specified in POSIX.1-2001, and I haven't gone looking for the standards that describe the details.) If anyone has thoughts on what needs to be done about this, I'm open to ideas.&lt;/div&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5231084577025440770" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_WgybbNCbhU0/SJiLtROgPAI/AAAAAAAAAAs/63fvNctPTM8/s320/DSC_3716-cropped.jpg" border="0" /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;em&gt;Grünegg&lt;/em&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-1809889413241279650?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/1809889413241279650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=1809889413241279650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1809889413241279650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1809889413241279650'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/08/man-pages-306-is-released.html' title='&lt;em&gt;man-pages-3.06&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_WgybbNCbhU0/SJiLtROgPAI/AAAAAAAAAAs/63fvNctPTM8/s72-c/DSC_3716-cropped.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6284108552393900838</id><published>2008-07-28T11:41:00.003+02:00</published><updated>2008-07-28T12:59:51.424+02:00</updated><title type='text'>Handling bug reports explicitly</title><content type='html'>&lt;p&gt;(Thoughts after a recent mail conversation...)&lt;br /&gt;&lt;br /&gt;As a project maintainer, when you handle reports it's helpful to all concerned, but most especially you, if you are as explicit as possible when handling bug reports.  In other words, explain to the reporter exactly what you did to fix the problem they reported, and why you did it.  (This might be as simple as saying you applied a patch written by the reporter, or showing the patch you wrote and applied, but usually that's not enough.)  If you did nothing, explain why.  If the report was made by email to a list, then make sure you CC the list with your explanation.  If the report was via a bug-reporting facility, then make sure that your explanation goes into the facility.&lt;br /&gt;&lt;br /&gt;This helps you because:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It provides a historical record that will help you remember later what you did and why, and allow others to go back and find that information.&lt;/li&gt;&lt;li&gt;It encourages your good bug reporters to make future reports, because they can see that their reports make a difference.&lt;/li&gt;&lt;li&gt;It will help your bad bug reporters make better reports in the future.&lt;/li&gt;&lt;li&gt;Perhaps most importantly...  You'll always make mistakes (misunderstand the report, make the wrong fix, etc.): if you let as many people as possible (the reporter, readers of the mailing list to which the bug report was written, followers of traffic on the bug reporting facility) know as precisely as possible what you did, then you give them all a chance to spot your mistake.  I've had (far too) many of my mistakes spotted by others by explicitly explaining what I've done.  (People could always find out what you did by hunting down diffs in a source repository, or a tarball, or whatever, but the effort involved means that many people won't do that.)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It helps others because:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The reporter of the bug knows how their problem got fixed.&lt;/li&gt;&lt;li&gt;If you are an upstream package maintainer, it will help downstream maintainers know what you did and why.&lt;/li&gt;&lt;li&gt;If you are a downstream package maintainer, it will help the upstream maintainer know what you did and why, which will help them decide whether to integrate your downstream changes upstream. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6284108552393900838?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6284108552393900838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6284108552393900838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6284108552393900838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6284108552393900838'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/07/handling-bug-reports-explicitly.html' title='Handling bug reports explicitly'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2610847028774732896</id><published>2008-07-23T15:25:00.009+02:00</published><updated>2008-07-23T21:06:32.050+02:00</updated><title type='text'>man-pages-3.05 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.05&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.05"&gt;changes in man-pages-3.05&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/math_error.7.html"&gt;math_error(7)&lt;/a&gt;&lt;/em&gt; page describes how to diagnose errors when calling math functions.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/matherr.3.html"&gt;matherr(3)&lt;/a&gt;&lt;/em&gt; page describes the older &lt;a href="http://en.wikipedia.org/wiki/SVID"&gt;SVID&lt;/a&gt;-specified mechanism for diagnosing errors from math functions.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are a few other minor changes, but this week's release is indeed smaller than usual. That's because I'm working on pending changes to almost all of the math man pages to improve: the discussion of return values, treatment of special values (+0, -0, infinities, NaN), and error diagnostics; the accuracy of the description of feature test macro requirements; and various other details. Expect a (very) big release next week.&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5226214034740745010" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_WgybbNCbhU0/SIc9-ZTiEzI/AAAAAAAAAAk/qEhGrROJGvo/s320/DSC_4025-cropped-r.jpg" border="0" /&gt; &lt;p align="center"&gt;&lt;em&gt;Blick auf die Grünegg, Konolfingen&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2610847028774732896?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2610847028774732896/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2610847028774732896' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2610847028774732896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2610847028774732896'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/07/man-pages-305-is-released.html' title='&lt;em&gt;man-pages-3.05&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WgybbNCbhU0/SIc9-ZTiEzI/AAAAAAAAAAk/qEhGrROJGvo/s72-c/DSC_4025-cropped-r.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-4080166871364984500</id><published>2008-07-16T13:55:00.000+02:00</published><updated>2008-07-16T15:59:38.312+02:00</updated><title type='text'>Capabilities have fully arrived, finally</title><content type='html'>&lt;p&gt;Linux 2.6.26 is out, which means that a complete Linux capabilities implementation has &lt;em&gt;finally&lt;/em&gt; arrived, since we now have:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The ability to attach capability sets to files (added in 2.6.24), so that a process can acquire capabilities during an &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/execve.2.html"&gt;&lt;em&gt;execve(2)&lt;/em&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;A &lt;span style="font-family:courier new;"&gt;CAP_SETPCAP&lt;/span&gt; capability with the proper semantics (since 2.6.25).&lt;/li&gt;&lt;li&gt;A per-thread capability bounding set (added in 2.6.25).&lt;/li&gt;&lt;li&gt;The per-thread &lt;em&gt;securebits&lt;/em&gt; flags (added in 2.6.26), which can be used to restrict a thread and its children to a pure capabilities-only environment (i.e., one in which there is no special treatment of UID 0).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All of the details are provided in the recently revised &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/capabilities.7.html"&gt;&lt;em&gt;capabilities(7)&lt;/em&gt;&lt;/a&gt; man page. A couple of other useful places to look for information on capabilities are Serge Hallyn's article, &lt;a href="http://www.ibm.com/developerworks/library/l-posixcap.html"&gt;POSIX file capabilities: Parceling the power of root&lt;/a&gt;, and Chris Friedhoff's &lt;a href="http://www.friedhoff.org/posixfilecaps.html"&gt;page on capabilities&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-4080166871364984500?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/4080166871364984500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=4080166871364984500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4080166871364984500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/4080166871364984500'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/05/capabilities-have-fully-arrived-finally.html' title='Capabilities have fully arrived, finally'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5157744631636724141</id><published>2008-07-16T13:52:00.006+02:00</published><updated>2008-07-16T15:55:53.042+02:00</updated><title type='text'>man-pages-3.04 is released</title><content type='html'>&lt;p&gt;I've uploaded &lt;em&gt;man-pages-3.04&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.04"&gt;changes in &lt;em&gt;man-pages-3.04&lt;/em&gt;&lt;/a&gt; are: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utimensat.2.html"&gt;&lt;em&gt;utimensat(2)&lt;/em&gt;&lt;/a&gt; page describes the &lt;em&gt;utimensat()&lt;/em&gt; system call (new in kernel 2.6.22, &lt;a href="http://linux-man-pages.blogspot.com/2008/06/whats-wrong-with-kernel-userland_30.html"&gt;fixed &lt;/a&gt;in 2.6.26) and the &lt;em&gt;futimens()&lt;/em&gt; library function.&lt;/li&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/end.3.html"&gt;&lt;em&gt;end(3)&lt;/em&gt;&lt;/a&gt; page describes the &lt;em&gt;end&lt;/em&gt;, &lt;em&gt;etext&lt;/em&gt;, and &lt;em&gt;edata&lt;/em&gt; variables.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/capget.2.html"&gt;&lt;em&gt;capget(2)&lt;/em&gt;&lt;/a&gt; page was updated by Andrew Morgan, in line with changes in Linux capabilities in kernels 2.6.24, 2.6.25, and 2.6.26.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/capabilities.7.html"&gt;&lt;em&gt;capabilities(7)&lt;/em&gt;&lt;/a&gt; page adds discussion of: file capabilities (new in Linux 2.6.24), the per-thread capability bounding set (new in Linux 2.6.25); the changed semantics for &lt;span style="font-family:courier new;"&gt;CAP_SETPCAP&lt;/span&gt; (Linux 2.6.25); per-thread &lt;em&gt;securebits&lt;/em&gt; flags (new in Linux 2.6.26); three new capabilities, &lt;span style="font-family:courier new;"&gt;CAP_MAC_ADMIN&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;CAP_MAC_OVERRIDE&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;CAP_SETFCAP&lt;/span&gt; (Linux 2.6.25); historical &lt;span style="font-family:courier new;"&gt;CAP_SETPCAP&lt;/span&gt; semantics; the rules governing changes to capability sets; and the rationale for the inheritable set and capability bounding set. There were also many other more minor changes to this page. Thanks to Serge Hallyn for his contributions here.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getrusage.2.html"&gt;&lt;em&gt;getrusage(2)&lt;/em&gt;&lt;/a&gt; page adds a description of the &lt;span style="font-family:courier new;"&gt;RUSAGE_THREAD&lt;/span&gt; option, which is new in Linux 2.6.26.&lt;/li&gt;&lt;li&gt;Many changes were made to the &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/prctl.2.html"&gt;&lt;em&gt;prctl(2)&lt;/em&gt;&lt;/a&gt; page, including adding documentation of: &lt;span style="font-family:courier new;"&gt;PR_CAPBSET_READ&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;PR_CAPBSET_DROP&lt;/span&gt; (thanks to Serge Hallyn); &lt;span style="font-family:courier new;"&gt;PR_GET_TSC&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;PR_SET_TSC&lt;/span&gt; (thanks to Erik Bosman); &lt;span style="font-family:courier new;"&gt;PR_SET_SECCOMP&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;PR_GET_SECCOMP&lt;/span&gt;; and &lt;span style="font-family:courier new;"&gt;PR_SET_SECUREBITS&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;PR_GET_SECUREBITS&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html"&gt;&lt;em&gt;proc(5)&lt;/em&gt;&lt;/a&gt; page adds documentation of &lt;span style="font-family:courier new;"&gt;/proc/config.gz&lt;/span&gt; (new in kernel 2.6); &lt;span style="font-family:courier new;"&gt;/proc/sys/vm/oom_kill_allocating_task&lt;/span&gt; (new in Linux 2.6.24); &lt;span style="font-family:courier new;"&gt;/proc/sys/vm/oom_dump_tasks&lt;/span&gt; (new in Linux 2.6.25); and &lt;span style="font-family:courier new;"&gt;/proc/sys/vm/panic_on_oom&lt;/span&gt; (new in Linux 2.6.18).&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getopt.3.html"&gt;&lt;em&gt;getopt(3)&lt;/em&gt;&lt;/a&gt; page adds details on the use of &lt;em&gt;optind&lt;/em&gt; for restarting an argument list scan.&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/memchr.3.html"&gt;&lt;em&gt;memchr(3)&lt;/em&gt;&lt;/a&gt; page adds a description of &lt;em&gt;rawmemchr()&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;There were also very many minor content and and minor and major formatting fixes, many of them triggered by the around 70 mailed reports that I received from the Alain Portal, the French translator of &lt;em&gt;man-pages&lt;/em&gt;. (Alain also provided dozens of reports that led to fixes in &lt;em&gt;man-pages-3.03&lt;/em&gt;.) Thanks Alain!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5157744631636724141?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5157744631636724141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5157744631636724141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5157744631636724141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5157744631636724141'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/07/man-pages-304-is-released.html' title='&lt;em&gt;man-pages-3.04&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5069788788026119201</id><published>2008-07-08T08:00:00.000+02:00</published><updated>2008-07-08T08:22:31.917+02:00</updated><title type='text'>man-pages-3.03 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.03&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.03"&gt;changes in &lt;em&gt;man-pages-3.03&lt;/em&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/cpuset.7.html"&gt;cpuset(7)&lt;/a&gt;&lt;/em&gt; page, written by Paul Jackson, describes the cpuset file system, the mechanism introduced in Linux 2.6.12 for confining processes to designated processors and nodes. This enormous page becomes the fourth largest in &lt;em&gt;man-pages&lt;/em&gt;. Thanks for a great contribution Paul!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getcpu.2.html"&gt;getcpu(2)&lt;/a&gt;&lt;/em&gt; page, written by &lt;a href="http://www.halobates.de/"&gt;Andi Kleen&lt;/a&gt;, to document the &lt;em&gt;getcpu(2)&lt;/em&gt; system call, introduced in Linux 2.6.19.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/sched_getcpu.3.html"&gt;sched_getcpu(3)&lt;/a&gt;&lt;/em&gt; page documents a &lt;em&gt;glibc&lt;/em&gt; wrapper for &lt;em&gt;getcpu(2)&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/readdir.3.html"&gt;readdir(3)&lt;/a&gt;&lt;/em&gt; page adds a description of &lt;em&gt;readdir_r(3)&lt;/em&gt;, the reentrant analog of &lt;em&gt;readdir(3)&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/signal.7.html"&gt;signal(7)&lt;/a&gt;&lt;/em&gt; page adds a section on system call restarting (&lt;span style="font-family:courier new;"&gt;SA_RESTART&lt;/span&gt;), and describes the aberrant Linux behavior whereby a stop signal plus &lt;span style="font-family:courier new;font-size:0;"&gt;SIGCONT&lt;/span&gt; can interrupt some system calls, even if no signal handler has been established. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5069788788026119201?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5069788788026119201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5069788788026119201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5069788788026119201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5069788788026119201'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/07/man-pages-303-is-released.html' title='&lt;em&gt;man-pages-3.03&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-7066108325074876911</id><published>2008-07-02T19:57:00.008+02:00</published><updated>2008-07-07T12:34:12.719+02:00</updated><title type='text'>man-pages-3.02 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.02&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.02"&gt;changes in &lt;em&gt;man-pages-3.02&lt;/em&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/clock_nanosleep.2.html"&gt;clock_nanosleep(2)&lt;/a&gt;&lt;/em&gt; page, describing the system call introduced in kernel 2.6.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A rewritten &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getgrouplist.3.html"&gt;getgrouplist(3)&lt;/a&gt;&lt;/em&gt; page, which provides additional information and an example program.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getutmp.3.html"&gt;getutmp(3)&lt;/a&gt;&lt;/em&gt; page documenting the &lt;em&gt;getutmp(3)&lt;/em&gt; and &lt;em&gt;getutmpx(3)&lt;/em&gt; functions.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/gnu_get_libc_version.3.html"&gt;&lt;em&gt;gnu_get_libc_version(3)&lt;/em&gt;&lt;/a&gt; page documenting &lt;em&gt;get_gnu_libc_version(3)&lt;/em&gt; and &lt;em&gt;get_gnu_libc_release(3)&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/sigwait.3.html"&gt;sigwait(3)&lt;/a&gt;&lt;/em&gt; page dopcumenting the &lt;em&gt;sigwait(3)&lt;/em&gt; library function.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/shm_overview.7.html"&gt;shm_overview(7)&lt;/a&gt;&lt;/em&gt; page providing an overview of the POSIX shared memory API.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Additional information in the &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sigreturn.2.html"&gt;sigreturn(2)&lt;/a&gt;&lt;/em&gt; man page.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Additons and updates to various pages describing the login accounting APIs, including: a new &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getutmp.3.html"&gt;&lt;em&gt;getutmp(3)&lt;/em&gt;&lt;/a&gt; page documenting the &lt;em&gt;getutmp(3)&lt;/em&gt; and &lt;em&gt;getutmpx(3)&lt;/em&gt; functions; and various improvements in the &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getutent.3.html"&gt;getutent(3)&lt;/a&gt;&lt;/em&gt; and &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/utmp.5.html"&gt;utmp(5)&lt;/a&gt;&lt;/em&gt; pages.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-7066108325074876911?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/7066108325074876911/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=7066108325074876911' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7066108325074876911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7066108325074876911'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/07/man-pages-302-is-released.html' title='&lt;em&gt;man-pages-3.02&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-1694511636857261478</id><published>2008-06-30T14:30:00.025+02:00</published><updated>2008-07-06T21:37:57.331+02:00</updated><title type='text'>What's wrong with kernel-userland interface development?</title><content type='html'>&lt;p&gt;So I came to write the man pages for &lt;em&gt;utimensat()&lt;/em&gt; and &lt;em&gt;futimens()&lt;/em&gt;, interfaces that are specified in the upcoming &lt;a href="http://www.opengroup.org/austin/"&gt;POSIX.1 revision&lt;/a&gt;, and recently &lt;a href="http://lwn.net/Articles/232115/"&gt;added&lt;/a&gt; to Linux (kernel 2.6.22, glibc 2.6), and it's a familiar story: &lt;a href="http://thread.gmane.org/gmane.linux.man/129"&gt;bugs&lt;/a&gt;, and yet &lt;a href="http://article.gmane.org/gmane.linux.file-systems/24325/"&gt;more bugs&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;This case is a little worse than usual (the gory details are below), but hardly exceptional: it was a similar story with other recent APIs, such as &lt;a href="http://thread.gmane.org/gmane.linux.kernel/424253/"&gt;&lt;em&gt;splice()&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://thread.gmane.org/gmane.linux.kernel/663336/"&gt;&lt;em&gt;signalf()&lt;/em&gt;&lt;/a&gt;, and the &lt;a href="http://thread.gmane.org/gmane.linux.kernel/613442"&gt;&lt;em&gt;timerfd&lt;/em&gt;&lt;/a&gt; API (the last of which was ultimately &lt;a href="http://thread.gmane.org/gmane.linux.kernel/581115/focus=581283"&gt;redesigned&lt;/a&gt; after some pushing by me). In each case, an interface that was already released in a stable kernel turned out to have easy-to-find bugs when I came to document and test it. All that was required was to come up with something like a reasonable written specification (i.e., a man page), and then start testing against that specification.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The following seems (to me) like a reasonable development model for new kernel userland APIs:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Write a more or less complete design specification (preferably something like a man page, which I'm more than happy to edit and review at this stage in the process), and perhaps even code up an initial version of the interface.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get review comments about the design; revise the design if necessary.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implement something like a final version of the interface.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Test the interface. Preferably: test in collaboration with other people who had nothing to do with the implementation (they will think about the interface in different ways from the implementer). If it's sensible to do so (and usually it is), produce a test suite to check the correctness of as many operational cases of the interface as possible (and then send that suite to the &lt;a href="http://ltp.sourceforge.net/"&gt;Linux Test Project&lt;/a&gt;).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Write the interface documentation (i.e., a man page) for userland programmers, and send it to me for editing and review. (If you do this smart, then you can just recycle the work from the first step.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Get the interface accepted into mainline.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;However, as far as I can see, the actual development model for kernel-userland interfaces seems to work something like this:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Code up the new interface.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Post the code to &lt;a href="http://lkml.org/"&gt;LKML&lt;/a&gt;, explaining that "I tested it, and it works", and, maybe, include some brief documentation of the interface.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;em&gt;Often&lt;/em&gt;, someone looks at the code and suggests some fixes. &lt;em&gt;Usually&lt;/em&gt;, no one else does any testing.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Code gets accepted into mainline.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Usually, some few dot releases later: someone (often me) who had nothing to do with the earlier steps writes the man page.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Often, some few dot releases later: find and fix all of the bugs (e.g., in the case of &lt;em&gt;utimensat()&lt;/em&gt;, released for 2.6.22, the fixes will only make it into 2.6.26 at the earliest).&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Occasionally, some few dot releases later: realize that the interface could have been better designed, but it's too late now to change it, because we can't break the &lt;a href="http://en.wikipedia.org/wiki/Application_binary_interface"&gt;ABI&lt;/a&gt;. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Most kernel-userland interfaces are seeing far too little testing before release. This hurts because:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Userland programmers end up dealing with kernel bugs they shouldn't have to deal with. (When this happens often, it can damage the reputation of the Linux kernel-userland interface, and userland programmers may become wary of adopting new interfaces, which can further delay any kind of real-world testing and adoption of the interface.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Code that uses new interfaces may have to special case for &lt;a href="http://en.wikipedia.org/wiki/Application_binary_interface"&gt;ABI&lt;/a&gt; bugs that were present in the first few kernel releases that contained the bug.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Similarly, many kernel-userland interfaces could do with more design review as well. This can hurt even more than interfaces released with bugs, since, once an interface is released, it is at least difficult, but often impossible to modify the design, since doing so would break the kernel-userland ABI. (With &lt;em&gt;&lt;a href="http://thread.gmane.org/gmane.linux.kernel/613442"&gt;timerfd&lt;/a&gt;&lt;/em&gt;, we got lucky: the interface was in any case &lt;a href="http://thread.gmane.org/gmane.linux.kernel/574430/focus=579335"&gt;broken &lt;/a&gt;by a bug, which gave a more or less blank slate for a redesign.) As a result, userland programmers usually just have to live with the bad design.&lt;/p&gt;&lt;p&gt;I'll have more time for testing and review nowadays, and hopefully I'll catch more problems before they are released into stable kernels, but there's certainly more than one person can do. And, as described above, there is a culture problem when it comes to adding kernel-userland interfaces on Linux. The question is whether the culture can be changed. (And here its worth repeating a point that I often make: one could perhaps try and blame individual developers for buggy interfaces, but that doesn't really get to the core issue (everyone is going to write bugs): the real problem is the process by which kernel-userland interface changes are accepted into the kernel.)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The Gory Details&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For those who are interested, here are the problems I found with &lt;em&gt;utimensat()&lt;/em&gt; and &lt;em&gt;futimens()&lt;/em&gt;, explained by annotating the current draft of the man page.&lt;/p&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;SYNOPSIS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    #include &amp;lt;sys/stat.h&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    int utimensat(int dirfd, const char *pathname,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                  const struct timespec times[2], int flags);&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    int futimens(int fd, const struct timespec times[2]);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;DESCRIPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;em&gt;utimensat()&lt;/em&gt; and &lt;em&gt;futimens()&lt;/em&gt; update  the  timestamps  of  a&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    file  with nanosecond precision.  This contrasts with the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    historical &lt;em&gt;utime(2)&lt;/em&gt; and &lt;em&gt;utimes(2)&lt;/em&gt;, which permit only sec-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ond and microsecond precision, respectively, when setting&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    file timestamps.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;This is the first of the advantages of the new interfaces: greater precision for setting timestamps. (The next revision of POSIX.1 specifies nanosecond file timestamps, and extends &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html"&gt;&lt;span style="FONT-STYLE: italic"&gt;stat(2)&lt;/span&gt;&lt;/a&gt; to allow their retrieval. File system support is needed, and can't necessarily be retrofitted to some older file systems. Currently, Linux supports nanosecond timestamps on XFS, JFS, and ext4.)&lt;br /&gt;&lt;pre&gt; &lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;   With &lt;em&gt;utimensat()&lt;/em&gt; the file is specified via  the  pathname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    given in &lt;em&gt;pathname&lt;/em&gt;.  With &lt;em&gt;futimens()&lt;/em&gt; the file whose times-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    tamps are to be updated is specified  via  an  open  file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    descriptor, &lt;em&gt;fd&lt;/em&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    For  both calls, the new file timestamps are specified in&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    the array &lt;em&gt;times&lt;/em&gt;: &lt;em&gt;times&lt;/em&gt;[0] specifies the new "last  access&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:courier new;"&gt;    time" (atime); &lt;em&gt;times&lt;/em&gt;[1] specifies the new "last modifica-&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    tion time" (mtime).  Each of the elements of &lt;em&gt;times&lt;/em&gt; speci-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fies  a  time  in seconds and nanoseconds since the Epoch&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    (00:00:00, 1 Jan 1970, UTC), in a structure of  the  fol-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    lowing form:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        struct timespec {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            time_t tv_sec;        /* seconds */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            long   tv_nsec;       /* nanoseconds */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    If  the  &lt;em&gt;tv_nsec&lt;/em&gt;  field of one of the &lt;em&gt;timespec&lt;/em&gt; structures&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    has the special value UTIME_NOW, then  the  corresponding&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    file  timestamp  is  set  to  the  current  time.  If the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;em&gt;tv_nsec&lt;/em&gt; field of one of the &lt;em&gt;timespec&lt;/em&gt; structures  has  the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    special  value  UTIME_OMIT,  then  the corresponding file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    timestamp is left unchanged.  In both of these cases, the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    value of the corresponding &lt;em&gt;tv_sec&lt;/em&gt; field is ignored.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;These are the other advantages of the new interfaces. &lt;/p&gt;&lt;p&gt;With &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utime.2.html"&gt;&lt;em&gt;utime(2)&lt;/em&gt;&lt;/a&gt; and &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utimes.2.html"&gt;&lt;em&gt;utimes(2)&lt;/em&gt;&lt;/a&gt;, to change just one of the timestamps, we must make a call to &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html"&gt;&lt;em&gt;stat(2)&lt;/em&gt;&lt;/a&gt; to retrieve the current timestamps, use one of the timestamps to initialize the &lt;em&gt;times&lt;/em&gt; element that we don't want to change, and then call &lt;em&gt;utimensat()&lt;/em&gt; with the desired value for the other timestamp. This can be subject to race conditions: if another process updates the file timestamps between the two calls, then that update will be lost. &lt;span style="font-family:courier new;"&gt;UTIME_OMIT&lt;/span&gt; allows us to avoid this problem.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;UTIME_NOW&lt;/span&gt; exists mainly as a convenience: it allows us to avoid fetching the current time (using &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/gettimeofday.2.html"&gt;&lt;em&gt;gettimeofday(2)&lt;/em&gt;&lt;/a&gt; or similar) in order to set a file timestamp to "now".&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;    If  &lt;em&gt;times&lt;/em&gt;  is  NULL,  then both timestamps are set to the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    current time.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Permissions requirements&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    To set both file timestamps to the  current  time  (i.e.,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;em&gt;times&lt;/em&gt; is NULL, or both &lt;em&gt;tv_nsec&lt;/em&gt; fields specify UTIME_NOW),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    either:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    1. the caller must have write access to the file;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    2. the caller's effective user ID must match the owner of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;       the file; or&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    3. the caller must have appropriate privileges.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    To  make any change other than setting both timestamps to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    the current time (i.e.,  &lt;em&gt;times&lt;/em&gt;  is  not  NULL,  and  both&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &lt;em&gt;tv_nsec&lt;/em&gt;  fields are not UTIME_NOW and both &lt;em&gt;tv_nsec&lt;/em&gt; fields&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    are not UTIME_OMIT), either condition 2 or 3  above  must&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    apply.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    If  both &lt;em&gt;tv_nsec&lt;/em&gt; fields are specified as UTIME_OMIT, then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    no file ownership or permission checks are performed, and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    the  file  timestamps  are  not modified, but other error&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    conditions may still be detected.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;em&gt;utimensat()&lt;/em&gt; specifics&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    [Details of &lt;em&gt;dirfd&lt;/em&gt; and &lt;em&gt;flags&lt;/em&gt; arguments omitted.]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;For details of the &lt;em&gt;dirfd&lt;/em&gt; argument, see &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/openat.2.html"&gt;&lt;em&gt;openat(2)&lt;/em&gt;&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;RETURN VALUE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    On success, &lt;em&gt;utimensat()&lt;/em&gt;  and  &lt;em&gt;futimens()&lt;/em&gt;  return  0.   On&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    error,  -1  is  returned and errno is set to indicate the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    error.&lt;/span&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ERRORS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    [Various other errors that are irrelevant  to  this  post&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    have been omitted.]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    EACCES &lt;em&gt;times&lt;/em&gt;   is   NULL,  or  both  &lt;em&gt;tv_nsec&lt;/em&gt;  values  are&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           UTIME_NOW, but the effective effective ID  of  the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           caller  does  not match the owner of the file, the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           caller does not have write access to the file, and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           the caller is not privileged (Linux: does not have&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           either  the  CAP_FOWNER  or  the  CAP_DAC_OVERRIDE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           capability).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    EACCES &lt;em&gt;times&lt;/em&gt;   is   NULL,  or  both  &lt;em&gt;tv_nsec&lt;/em&gt;  values  are&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           UTIME_NOW, and the file is marked immutable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    EPERM  The caller attempted to change one or both  times-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           tamps  to  a value other than the current time, or&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           to change one of the  timestamps  to  the  current&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           time  while leaving the other timestamp unchanged,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           (i.e., &lt;em&gt;times&lt;/em&gt; is not NULL, both &lt;em&gt;tv_nsec&lt;/em&gt; fields  are&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           not  UTIME_NOW,  and  both  &lt;em&gt;tv_nsec&lt;/em&gt; fields are not&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           UTIME_OMIT) but the  caller's  effective  user  ID&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           does  not  match the owner of file, and the caller&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           is  not  privileged  (Linux:  does  not  have  the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           CAP_FOWNER capability).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    EPERM  &lt;em&gt;times&lt;/em&gt;  is not NULL, and the file is marked append-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;           only or immutable.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;NOTES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    On Linux, &lt;em&gt;futimens()&lt;/em&gt; is a library function implemented on&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    top of the &lt;em&gt;utimensat()&lt;/em&gt; system call.  To support this, the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    Linux &lt;em&gt;utimensat()&lt;/em&gt; system call implements  a  non-standard&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    feature:  if &lt;em&gt;pathname&lt;/em&gt; is NULL, then the system call modi-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    fies the timestamps of the open file referred to  by  the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    file  descriptor  &lt;em&gt;dirfd&lt;/em&gt;  (which  may refer to any type of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    file).  Using this feature, the call  &lt;em&gt;futimens(fd, times)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    is implemented as:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &lt;em&gt;utimensat(fd, NULL, times, 0)&lt;/em&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;BUGS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    Several  bugs  afflict &lt;em&gt;utimensat()&lt;/em&gt; and &lt;em&gt;futimens()&lt;/em&gt; on ker-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    nels before 2.6.??.  &lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Really, there should have been a test suite to go along with the initial implementation. There wasn't, unfortunately, so I &lt;a href="http://article.gmane.org/gmane.linux.file-systems/24327"&gt;wrote one&lt;/a&gt; (later revised a little before it went to LTP) whose results can be seen &lt;a href="http://article.gmane.org/gmane.linux.kernel/689411/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I've posted patches to fix all of the bugs, and Andrew Morton has accepted them into -mm, and from there, they seem to have gone upstream to Al Viro. It's just a question of when they will get pushed into mainline. It'd be nice if they make it into 2.6.26, but maybe they won't, since it is already getting very late in the &lt;em&gt;-rc&lt;/em&gt; cycle.  (&lt;em&gt;Update, 6 Jul 08&lt;/em&gt;: the patches have gone into -&lt;em&gt;rc9&lt;/em&gt;.)&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;                         These bugs  are  either  non-confor-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    mances  with the POSIX.1 draft specification or inconsis-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    tencies with historical Linux behavior.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    * POSIX.1 specifies that if one of the &lt;em&gt;tv_nsec&lt;/em&gt; fields has&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      the  value  UTIME_NOW  or UTIME_OMIT, then the value of&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      the  corresponding  &lt;em&gt;tv_sec&lt;/em&gt;  field  should  be  ignored.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      Instead,  the  value of the &lt;em&gt;tv_sec&lt;/em&gt; field is required to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      be 0 (or the error EINVAL results).  &lt;/span&gt; &lt;/span&gt;&lt;/pre&gt;This was a simple and obvious divergence from the specification.&lt;br /&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;    * Various bugs mean that for the purposes  of  permission&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      checking, the case where both &lt;em&gt;tv_nsec&lt;/em&gt; fields are set to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      UTIME_NOW isn't always treated the same  as  specifying&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      &lt;em&gt;times&lt;/em&gt;  as NULL, and the case where one &lt;em&gt;tv_nsec&lt;/em&gt; value is&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      UTIME_NOW and the other is UTIME_OMIT isn't treated the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      same  as  specifying  &lt;em&gt;times&lt;/em&gt; as a pointer to a structure&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      containing arbitrary time values.  As a result, in some&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      cases:  a)  file timestamps can be updated by a process&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      that shouldn't have permission to perform  updates;  b)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      file  timestamps  can't  be  updated  by a process that&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      should have permission to perform updates; and  c)  the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      wrong errno value is returned in case of an error.  &lt;/span&gt; &lt;/span&gt;&lt;/pre&gt;There are multiple error cases here:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If one of the &lt;em&gt;tv_nsec&lt;/em&gt; fields is &lt;span style="font-family:courier new;"&gt;UTIME_OMIT&lt;/span&gt; and the other is &lt;span style="font-family:courier new;"&gt;UTIME_NOW&lt;/span&gt;, then the error &lt;span style="font-family:courier new;"&gt;EPERM&lt;/span&gt; should occur if the process's effective user ID does not match the file owner and the process is not privileged. Instead, the call successfully changes one of the timestamps.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If the file is not writable by the effective user ID of the process and the process's effective user ID does not match the file owner and the process is not privileged, and &lt;em&gt;times&lt;/em&gt; is &lt;span style="font-family:courier new;"&gt;NULL&lt;/span&gt;, then the error &lt;span style="font-family:courier new;"&gt;EACCES&lt;/span&gt; results. This error should also occur if &lt;em&gt;times&lt;/em&gt; points to a structure in which both &lt;em&gt;tv_nsec&lt;/em&gt; fields are &lt;span style="font-family:courier new;"&gt;UTIME_NOW&lt;/span&gt;. Instead the call succeeds.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If a file is marked as append-only (see &lt;a href="http://linux.die.net/man/1/chattr"&gt;&lt;em&gt;chattr(1)&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;/em&gt;), then Linux traditionally (i.e., &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utime.2.html"&gt;&lt;em&gt;utime(2)&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utimes.2.html"&gt;&lt;em&gt;utimes(2)&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&lt;/em&gt;), permits a &lt;span style="font-family:courier new;"&gt;NULL&lt;/span&gt; &lt;em&gt;times&lt;/em&gt; argument to be used in order to update both timestamps to the current time. For consistency, &lt;em&gt;utimensat()&lt;/em&gt; and &lt;em&gt;futimens()&lt;/em&gt; should also produce the same result when given a &lt;em&gt;times&lt;/em&gt; argument that points to a structure in which both &lt;em&gt;tv_nsec&lt;/em&gt; fields are &lt;span style="font-family:courier new;"&gt;UTIME_NOW&lt;/span&gt;. Instead, the call fails with the error &lt;span style="font-family:courier new;"&gt;EPERM&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If a file is marked as immutable (see &lt;a href="http://linux.die.net/man/1/chattr"&gt;&lt;em&gt;chattr(1)&lt;/em&gt;&lt;/a&gt;), then Linux traditionally (i.e., &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utime.2.html"&gt;&lt;em&gt;utime(2)&lt;/em&gt;&lt;/a&gt;, &lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/utimes.2.html"&gt;&lt;em&gt;utimes(2)&lt;/em&gt;&lt;/a&gt;), gives an &lt;span style="font-family:courier new;"&gt;EACCES&lt;/span&gt; error if &lt;em&gt;times&lt;/em&gt; is &lt;span style="font-family:courier new;"&gt;NULL&lt;/span&gt;. For consistency, &lt;em&gt;utimensat()&lt;/em&gt; and &lt;em&gt;futimens()&lt;/em&gt; should also produce the same result when given a &lt;em&gt;times&lt;/em&gt; that points to a structure in which both &lt;em&gt;tv_nsec&lt;/em&gt; fields are &lt;span style="font-family:courier new;"&gt;UTIME_NOW&lt;/span&gt;. Instead, the call fails with the error &lt;span style="font-family:courier new;"&gt;EPERM&lt;/span&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,102,0)"&gt;&lt;span style="font-family:courier new;"&gt;    * POSIX.1  says  that  a process that has write access to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      the file can make a call with &lt;em&gt;times&lt;/em&gt; as  NULL,  or  with&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      &lt;em&gt;times&lt;/em&gt;  pointing  to  a  structure in which both &lt;em&gt;tv_nsec&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      fields are UTIME_NOW,  in  order  to  update  the  both&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      timestamps  to  the  current time.  However, &lt;em&gt;futimens()&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      instead checks whether the  access  mode  of  the  file&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;      descriptor  allows  writing.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;This means that a process with a file descriptor that allows writing could change the timestamps of a file for which it does not have write permission; conversely, a process with a read-only file descriptor won't be able to update the timestamps of a file, even if it has write permission on the file.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-1694511636857261478?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/1694511636857261478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=1694511636857261478' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1694511636857261478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1694511636857261478'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/06/whats-wrong-with-kernel-userland_30.html' title='What&apos;s wrong with kernel-userland interface development?'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-7182619336022125358</id><published>2008-06-25T16:56:00.013+02:00</published><updated>2008-07-02T20:58:46.121+02:00</updated><title type='text'>man-pages-3.01 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-3.01&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.01"&gt;changes in &lt;em&gt;man-pages-3.01&lt;/em&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/hostname.7.html"&gt;hostname(7)&lt;/a&gt;&lt;/em&gt; page (based on the FreeBSD page) describing hostname resolution.&lt;/li&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/symlink.7.html"&gt;symlink(7)&lt;/a&gt;&lt;/em&gt; page (heavily modified from the original FreeBSD page) describing symbolic links.&lt;/li&gt;&lt;li&gt;A rewritten &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/acct.5.html"&gt;acct(5)&lt;/a&gt;&lt;/em&gt; page providing much more detail on the information written to the process accounting file.&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getrlimit.2.html"&gt;getrlimit(2)&lt;/a&gt;&lt;/em&gt; page adds a description of &lt;span style="font-family:courier new;"&gt;RLIMIT_RTTIME&lt;/span&gt; limit, new in Linux 2.6.25.&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/mkstemp.3.html"&gt;mkstemp(3)&lt;/a&gt;&lt;/em&gt; page adds a description of &lt;span style="FONT-STYLE: italic"&gt;mkostemp()&lt;/span&gt;, new in glibc 2.7.&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/core.5.html"&gt;core(5)&lt;/a&gt;&lt;/em&gt; page adds a description (and an example program for) of the &lt;span style="FONT-STYLE: italic"&gt;core_pattern&lt;/span&gt; pipe syntax, which appeared in Linux 2.6.19, and documents &lt;span style="font-family:courier new;"&gt;/proc/PID/coredump_filter&lt;/span&gt;, new in kernel 2.6.23.&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html"&gt;proc(5)&lt;/a&gt;&lt;/em&gt; page adds details for a number of previously undocumented &lt;span style="font-family:courier new;"&gt;/proc&lt;/span&gt; interfaces, including &lt;span style="font-family:courier new;"&gt;/proc/PID/oom_score&lt;/span&gt;,&lt;span style="font-family:courier new;"&gt; /proc/PID/oom_adj&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;/proc/PID/limits&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;/proc/PID/fdinfo/*&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;/proc/PID/mountinfo&lt;/span&gt;, &lt;span style="font-family:courier new;"&gt;/proc/PID/mountstats&lt;/span&gt;, and &lt;span style="font-family:courier new;"&gt;/proc/PID/status&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/time.7.html"&gt;time(7)&lt;/a&gt;&lt;/em&gt; page enhances the discussion of jiffies, and adds a section on high-resolution timers.&lt;/li&gt;&lt;li&gt;The &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/unix.7.html"&gt;unix(7)&lt;/a&gt;&lt;/em&gt; page adds a clear description of the three types of address that can appear in the &lt;span style="FONT-STYLE: italic"&gt;sockaddr_un&lt;/span&gt; structure: pathname, unnamed, and abstract.&lt;/li&gt;&lt;li&gt;Many other pages saw significant changes, including &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/brk.2.html"&gt;brk(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/chmod.2.html"&gt;chmod(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/chown.2.html"&gt;chown(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/nanosleep.2.html"&gt;nanosleep(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/open.2.html"&gt;open(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setscheduler.2.html"&gt;sched_setscheduler(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/syscalls.2.html"&gt;syscalls(2)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/ftime.3.html"&gt;ftime(3)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/getaddrinfo.3.html"&gt;getaddrinfo(3)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/inet.3.html"&gt;inet(3)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/inet_pton.3.html"&gt;inet_pton(3)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/scanf.3.html"&gt;scanf(3)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/strerror.3.html"&gt;strerror(3)&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man4/random.4.html"&gt;random(4)&lt;/a&gt;&lt;/em&gt;, and &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man5/locale.5.html"&gt;locale(5)&lt;/a&gt;&lt;/em&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-7182619336022125358?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/7182619336022125358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=7182619336022125358' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7182619336022125358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/7182619336022125358'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/06/man-pages-301-is-released.html' title='&lt;em&gt;man-pages-3.01&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6268847784235577540</id><published>2008-06-17T12:36:00.008+02:00</published><updated>2008-07-07T12:34:59.923+02:00</updated><title type='text'>man-pages-3.00 is released</title><content type='html'>&lt;p&gt;I've uploaded &lt;em&gt;man-pages-3.00&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;). Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_3.00"&gt;changes in &lt;em&gt;man-pages-3.00&lt;/em&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The POSIX man pages (man pages sections 0p, 1p, 3p) are now split out into a separate package, which can be downloaded &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/man-pages-posix"&gt;here&lt;/a&gt;. This makes sense because the POSIX pages are logically separate: they are copies of specifications from the &lt;a href="http://www.opengroup.org/austin/papers/posix_faq.html"&gt;POSIX.1 standard&lt;/a&gt; (to be precise, we are currently redistributing pages from the 2003 &lt;a href="http://www.opengroup.org/pubs/catalog/u057.htm"&gt;Technical Corrigendum 1&lt;/a&gt;), that we have kindly been given &lt;a href="http://www.opengroup.org/press/21jan04.htm"&gt;permission &lt;/a&gt;to publish by the &lt;a href="http://www.ieee.org/"&gt;IEEE&lt;/a&gt; and &lt;a href="http://www.opengroup.org/"&gt;The Open Group&lt;/a&gt;. Furthermore, the POSIX pages are only updated rarely (e.g., occasional formatting fixes, and periodic updates when a new version of the standard is released, such as the &lt;a href="http://www.opengroup.org/austin/docs/austin_319.html"&gt;revision &lt;/a&gt;due to appear later this year), so there is no need to redistribute them with each release of &lt;em&gt;man-pages&lt;/em&gt;.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;After Stuart Brady noted that the quotes around single-quoted characters were not formatted well in UTF-8 output, I've globally replaced the characters used in the source files for quoting in &lt;em&gt;man-pages&lt;/em&gt; in order to try and produce better formatted output for both ASCII and UTF-8 xterms, and also to bring greater consistency in general to the use of single and double quotes in the pages. This may not be the final word on the subject, but at least things should be somewhat improved.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6268847784235577540?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6268847784235577540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6268847784235577540' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6268847784235577540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6268847784235577540'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/06/man-pages-300-is-released.html' title='&lt;em&gt;man-pages-3.00&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2173377189828456045</id><published>2008-06-09T10:35:00.009+02:00</published><updated>2008-06-17T12:21:45.456+02:00</updated><title type='text'>man-pages is now supported</title><content type='html'>Last month I started on what is, for the moment, my dream job: &lt;a href="http://www.kernel.org/doc/man-pages/"&gt;&lt;em&gt;man-pages&lt;/em&gt;&lt;/a&gt; finally has a paid, full-time maintainer, thanks to a fellowship from the &lt;a href="http://www.linuxfoundation.org/"&gt;Linux Foundation&lt;/a&gt;.  For the foreseeable future, that means I'll be working on:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Documenting every new Linux kernel-userland (and &lt;em&gt;glibc&lt;/em&gt;) API, and every API change, that is released into the mainline kernel, ideally before actual release. (That's the ideal, but there's a quite a backlog, so I'm not going to achieve the ideal immediately.)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Testing new APIs, again ideally before they are released into the mainline kernel, and probably doing some light bug fixing while I'm at it.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Design review of new kernel-userland APIs.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;And of course accepting &lt;a href="http://www.kernel.org/doc/man-pages/patches.html"&gt;patches&lt;/a&gt; and dealing with &lt;a href="http://www.kernel.org/doc/man-pages/reporting_bugs.html"&gt;bug reports&lt;/a&gt; for existing man pages.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Other than that, I'll be helping out with in-kernel documentation (the &lt;span style="font-family:courier new;"&gt;/Documentation&lt;/span&gt; directory) by providing editorial, review, and possibly other assistance.&lt;/p&gt;&lt;p&gt;When I find time, I'll try to post a longer job description (but have a look &lt;a href="http://www.kernel.org/doc/man-pages/maintaining.html"&gt;here&lt;/a&gt; in the meantime). In the meantime, I'm looking forward to going to the &lt;a href="http://linuxplumbersconf.org/"&gt;Linux Plumbers Conference&lt;/a&gt;, September 17-19, in Portland, OR, USA, where there is currently a planned track on kernel-userland APIs.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2173377189828456045?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2173377189828456045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2173377189828456045' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2173377189828456045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2173377189828456045'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/06/man-pages-is-now-supported.html' title='&lt;em&gt;man-pages&lt;/em&gt; is now supported'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5726606831134559091</id><published>2008-06-06T15:18:00.019+02:00</published><updated>2008-06-10T16:49:30.683+02:00</updated><title type='text'>man-pages-2.80 and man-pages-fr-2.80.0 are released</title><content type='html'>The Linux &lt;em&gt;man-pages&lt;/em&gt; maintainer, Michael Kerrisk, and the maintainer of the French translation of &lt;em&gt;man-pages&lt;/em&gt;, Alain Portal, proudly announce the simultaneous release of &lt;em&gt;man-pages-2.80&lt;/em&gt; in English original and French translation.&lt;br /&gt;&lt;br /&gt;The English version can be downloaded from the usual &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;viewed online&lt;/a&gt; at the usual location).&lt;br /&gt;&lt;br /&gt;The French translation can be downloaded from &lt;a class="moz-txt-link-freetext" href="http://manpagesfr.free.fr/download.html"&gt;http://manpagesfr.free.fr/download.html&lt;/a&gt;, or viewed online at &lt;a class="moz-txt-link-freetext" href="http://manpagesfr.free.fr/consulter.html"&gt;http://manpagesfr.free.fr/consulter.html&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There is &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.808"&gt;long list of changes in man-pages-2.80&lt;/a&gt;. Among the more notable changes are the following:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A new &lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/random_r.3.html"&gt;random_r(3)&lt;/a&gt;&lt;/em&gt; page describes &lt;em&gt;random_r(3)&lt;/em&gt;, &lt;em&gt;srandom_r(3)&lt;/em&gt;, &lt;em&gt;initstate_r(3)&lt;/em&gt;, and &lt;em&gt;setstate_r(3)&lt;/em&gt;, the reentrant equivalents of &lt;em&gt;random(3), srandom(3), initstate(3)&lt;/em&gt;, and&lt;em&gt; setstate(3).&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/getpriority.2.html"&gt;getpriority(2)&lt;/a&gt;&lt;/em&gt; adds text describing the punchier effect of nice values since kernel 2.6.23.&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/mmap.2.html"&gt;mmap(2)&lt;/a&gt;&lt;/em&gt; describes improvements for the support of &lt;span style="font-family:courier new;"&gt;MAP_POPULATE&lt;/span&gt; in kernel 2.6.23.&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man2/sched_setscheduler.2.html"&gt;sched_setscheduler(2)&lt;/a&gt;&lt;/em&gt; adds a description of the &lt;span style="font-family:courier new;"&gt;SCHED_IDLE&lt;/span&gt; policy, new in 2.6.23.&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man3/futimes.3.html"&gt;futimes(3)&lt;/a&gt;&lt;/em&gt; adds a description of &lt;em&gt;lutimes(3)&lt;/em&gt;, which was added in &lt;em&gt;glibc&lt;/em&gt; 2.6&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/credentials.7.html"&gt;credentials(7)&lt;/a&gt;&lt;/em&gt; adds some text describing how NPTL maintains the same UIDs and GIDs for all threads in a process, even though the Linux kernel allows each thread to have distinct credentials.&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/inotify.7.html"&gt;inotify(7)&lt;/a&gt;&lt;/em&gt; documents the SIGIO support that was added for &lt;em&gt;inotify&lt;/em&gt; in kernel 2.6.25.&lt;/li&gt;&lt;li&gt;&lt;em&gt;&lt;a href="http://www.kernel.org/doc/man-pages/online/pages/man7/standards.7.html"&gt;standards(7)&lt;/a&gt;&lt;/em&gt; adds a description of the upcoming POSIX.1 revision.&lt;/li&gt;&lt;li&gt;A large number of consistency and formatting fix-ups were made to many pages.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5726606831134559091?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5726606831134559091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5726606831134559091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5726606831134559091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5726606831134559091'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/06/man-pages-280-and-man-pages-fr-2800-are.html' title='&lt;em&gt;man-pages-2.80&lt;/em&gt; and &lt;em&gt;man-pages-fr-2.80.0&lt;/em&gt; are released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3276150031797397229</id><published>2008-03-03T14:33:00.003+01:00</published><updated>2008-03-10T08:00:09.294+01:00</updated><title type='text'>man-pages-2.79 is released</title><content type='html'>I've uploaded &lt;em&gt;man-pages-2.79&lt;/em&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.79"&gt;changes in &lt;em&gt;man-pages-2.79&lt;/em&gt;&lt;/a&gt; are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a new page describing the &lt;span style="font-style: italic;"&gt;timerfd&lt;/span&gt; API (&lt;span style="font-style: italic;"&gt;timerfd_create(2)&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;timerfd_settime(2), &lt;/span&gt;&lt;span style="font-style: italic;"&gt;timerfd_gettime(2)&lt;/span&gt;), which is new in kernel 2.6.25&lt;br /&gt;&lt;/li&gt;&lt;li&gt;various additions and improvements to the &lt;span style="font-style: italic;"&gt;syslog(2)&lt;/span&gt; page (thanks in part to Jeremy Kerr)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;many clarifications and additions to the &lt;span style="font-style: italic;"&gt;epoll.7&lt;/span&gt; page (with help from Davide Libenzi and Chris Heath)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3276150031797397229?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3276150031797397229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3276150031797397229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3276150031797397229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3276150031797397229'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/03/man-pages-279-is-released.html' title='&lt;em&gt;man-pages-2.79&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6317687355987548134</id><published>2008-02-12T16:00:00.001+01:00</published><updated>2008-02-14T20:05:38.518+01:00</updated><title type='text'>man-pages-2.78 is released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.78&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.78"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-2.78&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; are new pages describing the &lt;span style="font-style: italic;"&gt;eventfd(2)&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;signalfd(2)&lt;/span&gt; system calls, and a substantial addition to &lt;span style="font-style: italic;"&gt;open(2)&lt;/span&gt; by Greg Banks describing the semantics and use of &lt;span style="font-family: courier new;"&gt;O_DIRECT&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6317687355987548134?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6317687355987548134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6317687355987548134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6317687355987548134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6317687355987548134'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/02/man-pages-278-is-released.html' title='&lt;em&gt;man-pages-2.78&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5295453441303644966</id><published>2008-01-31T14:44:00.000+01:00</published><updated>2008-01-31T14:49:16.189+01:00</updated><title type='text'>man-pages-2.77 is released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.77&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online version&lt;/a&gt;, which now includes facilities for searching the pages).&lt;br /&gt;&lt;br /&gt;Look &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.77"&gt;here&lt;/a&gt; for a list of changes in this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5295453441303644966?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5295453441303644966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5295453441303644966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5295453441303644966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5295453441303644966'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/01/man-pages-277-is-released.html' title='&lt;em&gt;man-pages-2.77&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-8561453590054555880</id><published>2008-01-14T13:42:00.000+01:00</published><updated>2008-01-14T13:48:10.072+01:00</updated><title type='text'>man-pages-2.76 is released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.76&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.76"&gt;Changes&lt;/a&gt; include rewrites of (parts of) the &lt;em&gt;gettid(2)&lt;/em&gt;, &lt;em&gt;pipe(2)&lt;/em&gt;, and &lt;em&gt;umask(2)&lt;/em&gt; pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-8561453590054555880?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/8561453590054555880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=8561453590054555880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8561453590054555880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8561453590054555880'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/01/man-pages-276-is-released.html' title='&lt;em&gt;man-pages-2.76&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-1638163952514181434</id><published>2008-01-08T17:18:00.000+01:00</published><updated>2008-01-08T17:38:42.730+01:00</updated><title type='text'>man-pages-2.75 and man-pages-fr-2.75.0 are released</title><content type='html'>The Linux &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; maintainer, Michael Kerrisk, and the maintainer of the French translation of &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;, Alain Portal, proudly announce the simultaneous release of &lt;span style="font-style: italic;"&gt;man-pages-2.75&lt;/span&gt; in English original and French translation.&lt;br /&gt;&lt;br /&gt;The English version can be downloaded from the usual &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The French translation can be downloaded from &lt;a class="moz-txt-link-freetext" href="http://manpagesfr.free.fr/download.html"&gt;http://manpagesfr.free.fr/download.html&lt;/a&gt;. The translated French pages are viewable online, along with some translated man pages from other projects, at &lt;a class="moz-txt-link-freetext" href="http://manpagesfr.free.fr/consulter.html"&gt;http://manpagesfr.free.fr/consulter.html&lt;/a&gt;.  Comments and suggestions for the French translation can be sent to &lt;span style="font-style: italic;"&gt;manpagesfr AT free DOT fr&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A huge thanks to Alain, who has over the last two and a half years made a terrific effort to bring the French translation fully up to date with the English original.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-1638163952514181434?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/1638163952514181434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=1638163952514181434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1638163952514181434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/1638163952514181434'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2008/01/man-pages-275-and-man-pages-fr-2750-are.html' title='&lt;em&gt;man-pages-2.75&lt;/em&gt; and &lt;em&gt;man-pages-fr-2.75.0&lt;/em&gt; are released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-848935506371398870</id><published>2007-12-29T16:09:00.000+01:00</published><updated>2007-12-30T12:34:55.286+01:00</updated><title type='text'>man-pages-fr-2.74.0 est sorti</title><content type='html'>Back in June 2005, a few months after I became the &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; maintainer, Alain Portal took over the French translation, which had long been maintained by &lt;a href="http://www.blaess.fr/christophe/index.html"&gt;Christophe Blaess&lt;/a&gt; (author of &lt;a style="font-style: italic;" href="http://www.blaess.fr/christophe/publications/proglinux/index.html"&gt;Programmation Système en C sous Linux&lt;/a&gt;, a nice book on Linux system programming).  At that time, the current French translation (1.58) was trailing the English original (2.03) by about 16 releases, and Alain was determined to catch up by creating one-to-one releases for each of the original English release tarballs.  I tried to dissuade him from that course, arguing that it might be less work to simply jump forward to translating the current English version.  Luckily, he did not listen to me.  He proceeded with his plan, creating French translations that corresponded exactly with the original English releases.  Along the way he reported countless formatting and wording errors, and many confused pieces of text in the original English pages, which I then corrected upstream.&lt;br /&gt;&lt;br /&gt;87 releases later, Alain has caught up with the current English release: yesterday &lt;span style="font-style: italic;"&gt;man-pages-fr-2.74.0&lt;/span&gt; was released, and can be &lt;a href="http://manpagesfr.free.fr/download.html"&gt;downloaded from the usual location&lt;/a&gt;.  It's a wonderful achievement, and incredibly valuable for francophones all over the world -- thanks Alain!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-848935506371398870?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/848935506371398870/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=848935506371398870' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/848935506371398870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/848935506371398870'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/12/man-pages-fr-2740-est-sorti.html' title='&lt;em&gt;man-pages-fr-2.74.0&lt;/em&gt; est sorti'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-8364477326459521921</id><published>2007-12-20T13:43:00.000+01:00</published><updated>2007-12-20T13:49:51.746+01:00</updated><title type='text'>man-pages-2.74 is released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.74&lt;/span&gt;, almost certainly the last release this year, into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.74"&gt;Changes&lt;/a&gt; include many formatting fixes, and a description of an ugly bug in &lt;em&gt;times(2)&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-8364477326459521921?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/8364477326459521921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=8364477326459521921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8364477326459521921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/8364477326459521921'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/12/man-pages-274-is-released.html' title='&lt;em&gt;man-pages-2.74&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2038473748353612291</id><published>2007-12-14T17:20:00.000+01:00</published><updated>2007-12-18T07:54:53.115+01:00</updated><title type='text'>man-pages-2.73 is released</title><content type='html'>Pádraig Brady prompted me to try to make the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt; look a bit better.&lt;br /&gt;As a result I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.73&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt;, and uploaded a new version of the HTML pages.  (The actual &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.73"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-2.73&lt;/span&gt;&lt;/a&gt; are quite small, and consist mainly of formatting fixes.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2038473748353612291?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2038473748353612291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2038473748353612291' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2038473748353612291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2038473748353612291'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/12/man-pages-273-is-released.html' title='&lt;em&gt;man-pages-2.73&lt;/em&gt; is released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5000605152711450021</id><published>2007-12-14T10:28:00.000+01:00</published><updated>2007-12-14T10:51:32.037+01:00</updated><title type='text'>man-pages-2.71 and man-pages-2.72 are released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.71&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;man-pages-2.72&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The most notable of the &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.71"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-2.71&lt;/span&gt;&lt;/a&gt; is the replacement of &lt;span style="font-style: italic;"&gt;mdoc&lt;/span&gt; macros by &lt;span style="font-style: italic;"&gt;man&lt;/span&gt; macros in 9 pages that used the former macros.  This means that the only pages that still use &lt;span style="font-style: italic;"&gt;mdoc&lt;/span&gt; macros are &lt;span style="font-style: italic;"&gt;mdoc(7)&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;mdoc.samples(7)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Notable &lt;a href="http://www.kernel.org/doc/man-pages/changelog.html#release_2.72"&gt;changes in &lt;span style="font-style: italic;"&gt;man-pages-2.72&lt;/span&gt;&lt;/a&gt; are a rewrite of the &lt;span style="font-style: italic;"&gt;abort(3)&lt;/span&gt;  man page and very many formatting fixes suggested by Alain Portal, maintainer of the &lt;a href="http://manpagesfr.free.fr/"&gt;French translation&lt;/a&gt; of &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Meanwhile, the &lt;span style="font-style: italic;"&gt;timerfd&lt;/span&gt; saga &lt;a href="http://thread.gmane.org/gmane.linux.kernel/613442"&gt;goes on&lt;/a&gt;, after I tried using the draft &lt;span style="font-style: italic;"&gt;timerfd_create(2)&lt;/span&gt; man page as a test spec.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5000605152711450021?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5000605152711450021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5000605152711450021' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5000605152711450021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5000605152711450021'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/12/ive-uploaded-man-pages-2.html' title='&lt;em&gt;man-pages-2.71&lt;/em&gt; and &lt;em&gt;man-pages-2.72&lt;/em&gt; are released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-3075933575565414794</id><published>2007-12-06T11:02:00.001+01:00</published><updated>2007-12-06T11:07:39.746+01:00</updated><title type='text'>man-pages-2.70 released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.70&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;release directory&lt;/a&gt; (or view the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt;).  The changes in this release consist mainly of formatting and consistency fixes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-3075933575565414794?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/3075933575565414794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=3075933575565414794' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3075933575565414794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/3075933575565414794'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/12/man-pages-270-released.html' title='&lt;em&gt;man-pages-2.70&lt;/em&gt; released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-5864041048429967516</id><published>2007-12-03T17:17:00.001+01:00</published><updated>2007-12-03T17:33:48.582+01:00</updated><title type='text'>man-pages-2.69 released</title><content type='html'>I've uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.69&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages"&gt;release directory&lt;/a&gt;. Among the changes are various fixes by J. Bruce Fields in the&lt;span style="font-style: italic;"&gt; fcntl(2)&lt;/span&gt; page, many improvements and updates by Jeremy Kerr for &lt;span style="font-style: italic;"&gt;spu_run(2)&lt;/span&gt;, &lt;span style="font-style: italic;"&gt;spu_create(2)&lt;/span&gt;, and &lt;span style="font-style: italic;"&gt;spufs(7)&lt;/span&gt;, and many  small fixes to various pages suggested by Alain Portal and Maxime Vaudequin, and whitespace fix-ups to improve the appearance of a large number of the POSIX (*.[013]p) pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-5864041048429967516?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/5864041048429967516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=5864041048429967516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5864041048429967516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/5864041048429967516'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/12/man-pages-269-released.html' title='&lt;em&gt;man-pages-2.69&lt;/em&gt; released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-9123179583714484176</id><published>2007-11-24T09:45:00.000+01:00</published><updated>2007-11-24T10:06:44.200+01:00</updated><title type='text'>man-pages website and mailing list</title><content type='html'>&lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt; now has a &lt;a href="http://www.kernel.org/doc/man-pages/"&gt;website&lt;/a&gt;.  The website includes information about reporting bugs and otherwise contributing to &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;, and also contains the &lt;a href="http://www.kernel.org/doc/man-pages/online_pages.html"&gt;online pages&lt;/a&gt; from the latest release.&lt;br /&gt;&lt;br /&gt;There is also a mailing list for discussions related to &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;.  The posting address is &lt;span style="font-family:courier new;"&gt;linux-man@vger.kernel.org&lt;/span&gt;.   (You do not need to be subscribed to the list to post to it.)  To subscribe to the list, send a message to &lt;span style="font-family:courier new;"&gt;majordomo@vger.kernel.org&lt;/span&gt;, with the &lt;span style="font-style: italic;"&gt;body&lt;/span&gt;:&lt;br /&gt;&lt;blockquote&gt;subscribe linux-man&lt;br /&gt;&lt;/blockquote&gt;An archive of the messages to this list is available on &lt;a href="http://dir.gmane.org/gmane.linux.man"&gt;gmane&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-9123179583714484176?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/9123179583714484176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=9123179583714484176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9123179583714484176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9123179583714484176'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/11/man-pages-website-and-mailing-list.html' title='&lt;em&gt;man-pages&lt;/em&gt; website and mailing list'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-9187513639182225002</id><published>2007-11-23T11:38:00.001+01:00</published><updated>2007-12-03T17:18:17.597+01:00</updated><title type='text'>man-pages-2.68 released</title><content type='html'>Earlier this week I uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.68&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages"&gt;release directory&lt;/a&gt;. Among the changes are a new &lt;span style="font-style: italic;"&gt;_syscall(2)&lt;/span&gt; page, and substantially written &lt;span style="font-style: italic;"&gt;intro(2)&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;intro(3)&lt;/span&gt; pages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-9187513639182225002?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/9187513639182225002/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=9187513639182225002' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9187513639182225002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/9187513639182225002'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/11/man-pages-268-released.html' title='&lt;em&gt;man-pages-2.68&lt;/em&gt; released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-6696081871240250386</id><published>2007-10-23T09:53:00.000+02:00</published><updated>2007-12-15T10:04:03.044+01:00</updated><title type='text'>man-pages-2.67 released</title><content type='html'>Yesterday I uploaded &lt;span style="font-style: italic;"&gt;man-pages-2.67&lt;/span&gt; into the &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages"&gt;release directory&lt;/a&gt;.   The changes in this release are primarily formatting fixes, and the addition of a PROLOG section to the 1p and 3p (POSIX) pages giving a clear indication that these are POSIX man pages (so as to prevent readers wrongly understanding that they are looking at a description of Linux behavior).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-6696081871240250386?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/6696081871240250386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=6696081871240250386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6696081871240250386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/6696081871240250386'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/10/man-pages-267-released_23.html' title='&lt;em&gt;man-pages-2.67&lt;/em&gt; released'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-2837193090233910857</id><published>2007-10-14T14:52:00.001+02:00</published><updated>2007-12-15T10:03:33.674+01:00</updated><title type='text'>Work in progress</title><content type='html'>A few days ago, I &lt;span&gt;released &lt;/span&gt;&lt;span style="font-style: italic;"&gt;man-pages-2.66&lt;/span&gt;&lt;span&gt;, which included the page that David Chinner wrote for &lt;span style="font-style: italic;"&gt;fallocate(2)&lt;/span&gt;, a new system call in &lt;a href="http://kernelnewbies.org/Linux_2_6_23"&gt;Linux 2.6.23&lt;/a&gt;.  W&lt;/span&gt;ork on &lt;span style="font-style: italic;"&gt;man-pages-2.67&lt;/span&gt; is done, and I'll &lt;a href="http://www.kernel.org/pub/linux/docs/man-pages/"&gt;upload &lt;/a&gt;it soon; meanwhile, I'm working on &lt;span style="font-style: italic;"&gt;man-pages-2.68&lt;/span&gt;, and also working on a website for &lt;span style="font-style: italic;"&gt;man-pages&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-2837193090233910857?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/2837193090233910857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=2837193090233910857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2837193090233910857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/2837193090233910857'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/10/work-in-progress.html' title='Work in progress'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3174631896317411826.post-848788965426646750</id><published>2007-10-14T14:13:00.000+02:00</published><updated>2007-10-15T06:48:05.016+02:00</updated><title type='text'>Getting started</title><content type='html'>So this is the first of a series of irregular posts about my work on the Linux &lt;span style="FONT-STYLE: italic"&gt;man-pages&lt;/span&gt; project, and related topics, like kernel-userland API testing and API design review. (I did a talk on the latter topics at &lt;a href="http://www.linuxconf.eu/2007/index.shtml"&gt;LinuxConf Europe 2007&lt;/a&gt;, and Jon Corbet was kind enough to do a sympathetic &lt;a href="http://lwn.net/Articles/247788/"&gt;write-up on lwn.net&lt;/a&gt;. I also &lt;a href="http://lwn.net/Articles/248376/"&gt;covered some of the same ground&lt;/a&gt; at the &lt;a href="http://lwn.net/Articles/KernelSummit2007/"&gt;2007 Linux kernel summit&lt;/a&gt;.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3174631896317411826-848788965426646750?l=linux-man-pages.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linux-man-pages.blogspot.com/feeds/848788965426646750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3174631896317411826&amp;postID=848788965426646750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/848788965426646750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3174631896317411826/posts/default/848788965426646750'/><link rel='alternate' type='text/html' href='http://linux-man-pages.blogspot.com/2007/10/getting-started.html' title='Getting started'/><author><name>Michael Kerrisk</name><uri>http://www.blogger.com/profile/15114340316819733116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/_WgybbNCbhU0/SmhbY_4jh0I/AAAAAAAAAC4/FLdG2nCsfyQ/S220/Michael5+6by8-xa.jpg'/></author><thr:total>0</thr:total></entry></feed>
