Understanding the Linux Kernel By Daniel P. Bovet and Marco Cesati Following are the changes made in the 9/01 reprint. 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 (1) 3rd paragraph: "GNU Public License" Has been changed to: "GNU General Public License" {2} 7th paragraph: "described in Bach's book (i.e., SVR4)." Has been changed to: "described in Bach's book (i.e., System V)." {26} 7th paragraph: "the interrupt signal SIGTERM" Has been changed to: "the interrupt signal SIGINT" (51) 4th paragraph: "N-way associative" Has been changed to: "N-way set associative" also: "a two-way set of associative cache" Has been changed to: "a two-way set associative cache" (105) 3rd paragraph: "any maskable interrupt issued by the PIC is simply ignored by the CPU." Has been changed to: "any maskable interrupt issued by the PIC is temporarily ignored by the CPU." (158) At the end of the second paragraph: possfsible Has been changed to: possible {163} 7th paragraph: "Set if the kernel is allowed to discard the contents of page frames in order to free memory before satisfying the request." Is now followed by the sentence below: "Up to version 2.2.14, the process may be blocked until free memory is available." {212} 1st bulleted item: "The process already includes in its address space a memory region that overlaps the linear address interval ranging from addr to addr+len; this check is performed by the do_munmap() function, which returns the value 0 if the overlap exists." Has been replaced: "The process already includes in its address space a memory region that overlaps the linear address interval ranging from addr to addr+len, and moreover the do_munmap() function fails in releasing the overlapping region." {254} 5th paragraph: "are the standard ones listed in Table 9-1." Is now followed by the sentence below: Signal 1 is mapped to bit 0, signal 2 to bit 1, and so on." {359} item number 3: "Clears the LOOKUP_CONTINUE, LOOKUP_DIRECTORY, and LOOKUP_SLASHOK flags in lookup_flags." Has been replaced by: "Clears the LOOKUP_FOLLOW flag in lookup_flags." {360} fifth paragraph: "Reexecutes cached_lookup()," Has been replaced by: "Checks again whether the dentry object is in the cache," {371} last paragraph: The whole sentence starting with: "Additional access types..." has been deleted. {430} 2nd paragraph: "Invokes sync_supers(), which takes care of superblocks used by filesystems thatdo not store all the superblock data in a single disk block (an example is Apple Macintosh's HFS). The function accesses" Has been replaced with: "Invokes sync_supers(), which accesses" also: The following sentence has been deleted: "The write_super method is not defined for any Unix filesystem." (467) item number 2: "if the descriptor exists but its SWP_WRITE flag is cleared while its SWP_USED flag is set" Has been replaced with: "if the descriptor exists but the most significant bit of its SWP_WRITEOK field is cleared while its SWP_USED flag is set" {487} 2nd paragraph: "and the memory region is shared" Has been changed to: "and the memory region is not shared" r: Finished loading (507) 3rd paragraph: "block_group block group" Has been changed to: "i_block_group block group" (515) 3rd paragraph: "i_no" Now reads: "i_ino" {518} 2nd paragraph: "since dentry, buffer, and page caches" Now reads: "since inode, buffer, and page caches"