Linux System Programming by Robert Love The unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification This page was updated April 17, 2008. UNCONFIRMED errors and comments from readers: (20) Table 1-2; The preprocessor define for "File already exists" should be EEXIST, not EEXIT. (37) bottom paragraphy; In the case of write caches on hard disk -> In the case of writing caches on hard drive. (76) Erros and End-of-file; The "#" was missed for includes of ferror() and feof(). include Should be: #include {86} bottom of the page; iov[i].iov_len = strlen(buf[i]); should be iov[i].iov_len = strlen(buf[i]) + 1; {115} 2nd paragraph (end); The text says: "Although nothing guarantees it, the block-to-CHS mapping tends to be sequential: physical block n tends to be physically adjacent on disk to logical block n + 1." shouldn't it be "physically adjacent on disk to _physical_ block n + 1."? (130) 3rd paragraph; The 3rd paragraph starts "A successful exec1() call". Shouldn't that be an el and not a 1 after "exec", i.e. "A successful execl() call" (130) 3rd paragraph); "A successful exec1() call..." should be "A successful execl() call...". This font is not showing that the text uses the number one (exec-one) instead of (exec-el). [151] bottom of 2nd paragraph from the top; The book reads, ... and the saved user ID is the effective user ID before a suid binary caused a change during exec. but I think it should read: ... and the saved user ID is the effective user ID AFTER a suid binary caused a change during exec. {189} the code snippet at the bottom of the page; Below the sentence "Next, modify your real-time process to run only on CPU #1", the line CPU_CLR (1, &set); /* forbid CPU #1 */ should be CPU_SET (1, &set); /* allow CPU #1 */ [203] 1st paragraph; The first example in 203 page is about chown(), not about chmod(). The line: chmod("manifest.txt", -1, gr->gr_gid); should be replaced by: chown("manifest.txt", -1, gr->gr_gid); {238} Code example at the bottom of the page; char buf[BUF_LEN]_attribute_((aligned(4)))); should read: char buf[BUF_LEN] __attribute__((aligned(4))); (301) top; The 11th line from the top ... The book reads, The sigaction_t structure opens ..., where problaby, The siginfo_t structure opens ..., is meant. {316} 1st paragraph; There is a parameter mistake to printf() function to show seconds and useconds, as showed bellow: printf ("seconds=%ld useconds=%ld\n", (long) tv.sec, (long) tv.usec); should be: printf ("seconds=%ld useconds=%ld\n", (long) tv.tv_sec, (long) tv.tv_usec);