
    Index of Documentation for People Interested in Writing and/or

                   Understanding the Linux Kernel.

          Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>

/*
 * The latest version of this document may be found at:
 *   http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
 */

   The need for a document like this one became apparent in the
   linux-kernel mailing list as the same questions, asking for pointers
   to information, appeared again and again.
   
   Fortunately, as more and more people get to GNU/Linux, more and more
   get interested in the Kernel. But reading the sources is not always
   enough. It is easy to understand the code, but miss the concepts, the
   philosophy and design decisions behind this code.
   
   Unfortunately, not many documents are available for beginners to
   start. And, even if they exist, there was no "well-known" place which
   kept track of them. These lines try to cover this lack. All documents
   available on line known by the author are listed, while some reference
   books are also mentioned.
   
   PLEASE, if you know any paper not listed here or write a new document,
   send me an e-mail, and I'll include a reference to it here. Any
   corrections, ideas or comments are also welcomed.
   
   The papers that follow are listed in no particular order. All are
   cataloged with the following fields: the document's "Title", the
   "Author"/s, the "URL" where they can be found, some "Keywords" helpful
   when searching for specific topics, and a brief "Description" of the
   Document.
   
   Enjoy!
   
     ON-LINE DOCS:
       
     * Title: "Linux Device Drivers, Third Edition"
       Author: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
       URL: http://lwn.net/Kernel/LDD3/
       Description: A 600-page book covering the (2.6.10) driver
       programming API and kernel hacking in general.  Available under the
       Creative Commons Attribution-ShareAlike 2.0 license.

     * Title: "The Linux Kernel"
       Author: David A. Rusling.
       URL: http://www.tldp.org/LDP/tlk/tlk.html
       Keywords: everything!, book.
       Description: On line, 200 pages book describing most aspects of
       the Linux Kernel. Probably, the first reference for beginners.
       Lots of illustrations explaining data structures use and
       relationships in the purest Richard W. Stevens' style. Contents:
       "1.-Hardware Basics, 2.-Software Basics, 3.-Memory Management,
       4.-Processes, 5.-Interprocess Communication Mechanisms, 6.-PCI,
       7.-Interrupts and Interrupt Handling, 8.-Device Drivers, 9.-The
       File system, 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules,
       13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
       Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
       General Public License, Glossary". In short: a must have.

     * Title: "Linux Device Drivers, 2nd Edition"
       Author: Alessandro Rubini and Jonathan Corbet.
       URL: http://www.xml.com/ldd/chapter/book/index.html
       Keywords: device drivers, modules, debugging, memory, hardware,
       interrupt handling, char drivers, block drivers, kmod, mmap, DMA,
       buses.
       Description: O'Reilly's popular book, now also on-line under the
       GNU Free Documentation License.
       Notes: You can also buy it in paper-form from O'Reilly. See below
       under BOOKS (Not on-line).

     * Title: "Conceptual Architecture of the Linux Kernel"
       Author: Ivan T. Bowman.
       URL: http://plg.uwaterloo.ca/
       Keywords: conceptual software architecture, extracted design,
       reverse engineering, system structure.
       Description: Conceptual software architecture of the Linux kernel,
       automatically extracted from the source code. Very detailed. Good
       figures. Gives good overall kernel understanding.

     * Title: "Concrete Architecture of the Linux Kernel"
       Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
       URL: http://plg.uwaterloo.ca/
       Keywords: concrete architecture, extracted design, reverse
       engineering, system structure, dependencies.
       Description: Concrete architecture of the Linux kernel,
       automatically extracted from the source code. Very detailed. Good
       figures. Gives good overall kernel understanding. This papers
       focus on lower details than its predecessor (files, variables...).

     * Title: "Linux as a Case Study: Its Extracted Software
       Architecture"
       Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
       URL: http://plg.uwaterloo.ca/
       Keywords: software architecture, architecture recovery,
       redocumentation.
       Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
       1999. A mixture of the previous two documents from the same
       author.

     * Title: "Overview of the Virtual File System"
       Author: Richard Gooch.
       URL: http://www.mjmwired.net/kernel/Documentation/filesystems/vfs.txt
       Keywords: VFS, File System, mounting filesystems, opening files,
       dentries, dcache.
       Description: Brief introduction to the Linux Virtual File System.
       What is it, how it works, operations taken when opening a file or
       mounting a file system and description of important data
       structures explaining the purpose of each of their entries.

     * Title: "The Linux RAID-1, 4, 5 Code"
       Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
       URL: http://www.linuxjournal.com/article.php?sid=2391
       Keywords: RAID, MD driver.
       Description: Linux Journal Kernel Korner article. Here is its
       abstract: "A description of the implementation of the RAID-1,
       RAID-4 and RAID-5 personalities of the MD device driver in the
       Linux kernel, providing users with high performance and reliable,
       secondary-storage capability using software".

     * Title: "Dynamic Kernels: Modularized Device Drivers"
       Author: Alessandro Rubini.
       URL: http://www.linuxjournal.com/article.php?sid=1219
       Keywords: device driver, module, loading/unloading modules,
       allocating resources.
       Description: Linux Journal Kernel Korner article. Here is its
       abstract: "This is the first of a series of four articles
       co-authored by Alessandro Rubini and Georg Zezchwitz which present
       a practical approach to writing Linux device drivers as kernel
       loadable modules. This installment presents an introduction to the
       topic, preparing the reader to understand next month's
       installment".

     * Title: "Dynamic Kernels: Discovery"
       Author: Alessandro Rubini.
       URL: http://www.linuxjournal.com/article.php?sid=1220
       Keywords: character driver, init_module, clean_up module,
       autodetection, mayor number, minor number, file operations,
       open(), close().
       Description: Linux Journal Kernel Korner article. Here is its
       abstract: "This article, the second of four, introduces part of
       the actual code to create custom module implementing a character
       device driver. It describes the code for module initialization and
       cleanup, as well as the open() and close() system calls".

     * Title: "The Devil's in the Details"
       Author: Georg v. Zezschwitz and Alessandro Rubini.
       URL: http://www.linuxjournal.com/article.php?sid=1221
       Keywords: read(), write(), select(), ioctl(), blocking/non
       blocking mode, interrupt handler.
       Description: Linux Journal Kernel Korner article. Here is its
       abstract: "This article, the third of four on writing character
       device drivers, introduces concepts of reading, writing, and using
       ioctl-calls".

     * Title: "Dissecting Interrupts and Browsing DMA"
       Author: Alessandro Rubini and Georg v. Zezschwitz.
       URL: http://www.linuxjournal.com/article.php?sid=1222
       Keywords: interrupts, irqs, DMA, bottom halves, task queues.
       Description: Linux Journal Kernel Korner article. Here is its
       abstract: "This is the fourth in a series of articles about
       writing character device drivers as loadable kernel modules. This
       month, we further investigate the field of interrupt handling.
       Though it is conceptually simple, practical limitations and
       constraints make this an ``interesting'' part of device driver
       writing, and several different facilities have been provided for
       different situations. We also investigate the complex topic of
       DMA".

     * Title: "Device Drivers Concluded"
       Author: Georg v. Zezschwitz.
       URL: http://www.linuxjournal.com/article.php?sid=1287
       Keywords: address spaces, pages, pagination, page management,
       demand loading, swapping, memory protection, memory mapping, mmap,
       virtual memory areas (VMAs), vremap, PCI.
       Description: Finally, the above turned out into a five articles
       series. This latest one's introduction reads: "This is the last of
       five articles about character device drivers. In this final
       section, Georg deals with memory mapping devices, beginning with
       an overall description of the Linux memory management concepts".

     * Title: "Network Buffers And Memory Management"
       Author: Alan Cox.
       URL: http://www.linuxjournal.com/article.php?sid=1312
       Keywords: sk_buffs, network devices, protocol/link layer
       variables, network devices flags, transmit, receive,
       configuration, multicast.
       Description: Linux Journal Kernel Korner. Here is the abstract:
       "Writing a network device driver for Linux is fundamentally
       simple---most of the complexity (other than talking to the
       hardware) involves managing network packets in memory".
       
     * Title: "Writing Linux Device Drivers"
       Author: Michael K. Johnson.
       URL: http://users.evitech.fi/~tk/rtos/writing_linux_device_d.html
       Keywords: files, VFS, file operations, kernel interface, character
       vs block devices, I/O access, hardware interrupts, DMA, access to
       user memory, memory allocation, timers.
       Description: Introductory 50-minutes (sic) tutorial on writing
       device drivers. 12 pages written by the same author of the "Kernel
       Hackers' Guide" which give a very good overview of the topic.
       
     * Title: "The Venus kernel interface"
       Author: Peter J. Braam.
       URL:
       http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
       Keywords: coda, filesystem, venus, cache manager.
       Description: "This document describes the communication between
       Venus and kernel level file system code needed for the operation
       of the Coda filesystem. This version document is meant to describe
       the current interface (version 1.0) as well as improvements we
       envisage".

     * Title: "Programming PCI-Devices under Linux"
       Author: Claus Schroeter.
       URL:
       ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps.gz
       Keywords: PCI, device, busmastering.
       Description: 6 pages tutorial on PCI programming under Linux.
       Gives the basic concepts on the architecture of the PCI subsystem,
       as long as basic functions and macros to read/write the devices
       and perform busmastering.

     * Title: "Writing Character Device Driver for Linux"
       Author: R. Baruch and C. Schroeter.
       URL:
       ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers.ps.gz
       Keywords: character device drivers, I/O, signals, DMA, accessing
       ports in user space, kernel environment.
       Description: 68 pages paper on writing character drivers. A little
       bit old (1.993, 1.994) although still useful.

     * Title: "Design and Implementation of the Second Extended
       Filesystem"
       Author: Rémy Card, Theodore Ts'o, Stephen Tweedie.
       URL: http://web.mit.edu/tytso/www/linux/ext2intro.html
       Keywords: ext2, linux fs history, inode, directory, link, devices,
       VFS, physical structure, performance, benchmarks, ext2fs library,
       ext2fs tools, e2fsck.
       Description: Paper written by three of the top ext2 hackers.
       Covers Linux filesystems history, ext2 motivation, ext2 features,
       design, physical structure on disk, performance, benchmarks,
       e2fsck's passes description... A must read!
       Notes: This paper was first published in the Proceedings of the
       First Dutch International Symposium on Linux, ISBN 90-367-0385-9.

     * Title: "Analysis of the Ext2fs structure"
       Author: Louis-Dominique Dubeau.
       URL: http://www.nondot.org/sabre/os/files/FileSystems/ext2fs/
       Keywords: ext2, filesystem, ext2fs.
       Description: Description of ext2's blocks, directories, inodes,
       bitmaps, invariants...

     * Title: "Journaling the Linux ext2fs Filesystem"
       Author: Stephen C. Tweedie.
       URL:
       ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz
       Keywords: ext3, journaling.
       Description: Excellent 8-pages paper explaining the journaling
       capabilities added to ext2 by the author, showing different
       problems faced and the alternatives chosen.

     * Title: "Kernel API changes from 2.0 to 2.2"
       Author: Richard Gooch.
       URL:
       http://www.linuxhq.com/guides/LKMPG/node28.html 
       Keywords: 2.2, changes.
       Description: Kernel functions/structures/variables which changed
       from 2.0.x to 2.2.x.

     * Title: "Kernel API changes from 2.2 to 2.4"
       Author: Richard Gooch.
       Keywords: 2.4, changes.
       Description: Kernel functions/structures/variables which changed
       from 2.2.x to 2.4.x.
       
     * Title: "Linux Kernel Module Programming Guide"
       Author: Ori Pomerantz.
       URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
       Keywords: modules, GPL book, /proc, ioctls, system calls,
       interrupt handlers .
       Description: Very nice 92 pages GPL book on the topic of modules
       programming. Lots of examples.
       
     * Title: "I/O Event Handling Under Linux"
       Author: Richard Gooch.
       Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
       event queues.
       Description: From the Introduction: "I/O Event handling is about
       how your Operating System allows you to manage a large number of
       open files (file descriptors in UNIX/POSIX, or FDs) in your
       application. You want the OS to notify you when FDs become active
       (have data ready to be read or are ready for writing). Ideally you
       want a mechanism that is scalable. This means a large number of
       inactive FDs cost very little in memory and CPU time to manage".
       
     * Title: "The Kernel Hacking HOWTO"
       Author: Various Talented People, and Rusty.
       Location: in kernel tree, Documentation/DocBook/kernel-hacking/
       (must be built as "make {htmldocs | psdocs | pdfdocs})
       Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
       symbols, return conventions.
       Description: From the Introduction: "Please understand that I
       never wanted to write this document, being grossly underqualified,
       but I always wanted to read it, and this was the only way. I
       simply explain some best practices, and give reading entry-points
       into the kernel sources. I avoid implementation details: that's
       what the code is for, and I ignore whole tracts of useful
       routines. This document assumes familiarity with C, and an
       understanding of what the kernel is, and how it is used. It was
       originally written for the 2.3 kernels, but nearly all of it
       applies to 2.2 too; 2.0 is slightly different".
       
     * Title: "Writing an ALSA Driver"
       Author: Takashi Iwai <tiwai@suse.de>
       URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html
       Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
       Description: Advanced Linux Sound Architecture for developers,
       both at kernel and user-level sides. ALSA is the Linux kernel
       sound architecture in the 2.6 kernel version.
       
     * Title: "Programming Guide for Linux USB Device Drivers"
       Author: Detlef Fliegl.
       URL: http://usb.in.tum.de/usbdoc/
       Keywords: USB, universal serial bus.
       Description: A must-read. From the Preface: "This document should
       give detailed information about the current state of the USB
       subsystem and its API for USB device drivers. The first section
       will deal with the basics of USB devices. You will learn about
       different types of devices and their properties. Going into detail
       you will see how USB devices communicate on the bus. The second
       section gives an overview of the Linux USB subsystem [2] and the
       device driver framework. Then the API and its data structures will
       be explained step by step. The last section of this document
       contains a reference of all API calls and their return codes".
       Notes: Beware: the main page states: "This document may not be
       published, printed or used in excerpts without explicit permission
       of the author". Fortunately, it may still be read...

     * Title: "Linux Kernel Mailing List Glossary"
       Author: various
       URL: http://kernelnewbies.org/glossary/
       Keywords: glossary, terms, linux-kernel.
       Description: From the introduction: "This glossary is intended as
       a brief description of some of the acronyms and terms you may hear
       during discussion of the Linux kernel".
       
     * Title: "Linux Kernel Locking HOWTO"
       Author: Various Talented People, and Rusty.
       Location: in kernel tree, Documentation/DocBook/kernel-locking/
       (must be built as "make {htmldocs | psdocs | pdfdocs})
       Keywords: locks, locking, spinlock, semaphore, atomic, race
       condition, bottom halves, tasklets, softirqs.
       Description: The title says it all: document describing the
       locking system in the Linux Kernel either in uniprocessor or SMP
       systems.
       Notes: "It was originally written for the later (>2.3.47) 2.3
       kernels, but most of it applies to 2.2 too; 2.0 is slightly
       different". Freely redistributable under the conditions of the GNU
       General Public License.

     * Title: "Global spinlock list and usage"
       Author: Rick Lindsley.
       URL: http://lse.sourceforge.net/lockhier/global-spin-lock
       Keywords: spinlock.
       Description: This is an attempt to document both the existence and
       usage of the spinlocks in the Linux 2.4.5 kernel. Comprehensive
       list of spinlocks showing when they are used, which functions
       access them, how each lock is acquired, under what conditions it
       is held, whether interrupts can occur or not while it is held...

     * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
       Features "
       Author: Alan Cox.
       URL: http://www.linux-mag.com/1999-05/gear_01.html
       Keywords: ports, porting.
       Description: Article from Linux Magazine on porting from 2.0 to
       2.2 kernels.

     * Title: "Porting Device Drivers To Linux 2.2: part II"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/238 
       Keywords: ports, porting.
       Description: Second part on porting from 2.0 to 2.2 kernels.

     * Title: "How To Make Sure Your Driver Will Work On The Power
       Macintosh"
       Author: Paul Mackerras.
       URL: http://www.linux-mag.com/id/261
       Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
       Description: The title says it all.

     * Title: "An Introduction to SCSI Drivers"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/284
       Keywords: SCSI, device, driver.
       Description: The title says it all.

     * Title: "Advanced SCSI Drivers And Other Tales"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/307
       Keywords: SCSI, device, driver, advanced.
       Description: The title says it all.

     * Title: "Writing Linux Mouse Drivers"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/330
       Keywords: mouse, driver, gpm.
       Description: The title says it all.

     * Title: "More on Mouse Drivers"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/356
       Keywords: mouse, driver, gpm, races, asynchronous I/O.
       Description: The title still says it all.

     * Title: "Writing Video4linux Radio Driver"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/381
       Keywords: video4linux, driver, radio, radio devices.
       Description: The title says it all.

     * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/406
       Keywords: video4linux, driver, video capture, capture devices,
       camera driver.
       Description: The title says it all.

     * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/429
       Keywords: video4linux, driver, video capture, capture devices,
       camera driver, control, query capabilities, capability, facility.
       Description: The title says it all.

     * Title: "PCI Management in Linux 2.2"
       Author: Alan Cox.
       URL: http://www.linux-mag.com/id/452
       Keywords: PCI, bus, bus-mastering.
       Description: The title says it all.

     * Title: "Linux 2.4 Kernel Internals"
       Author: Tigran Aivazian and Christoph Hellwig.
       URL: http://www.moses.uklinux.net/patches/lki.html
       Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
       Description: A little book used for a short training course.
       Covers building the kernel image, booting (including SMP bootup),
       process management, VFS and more.

     * Title: "Linux IP Networking. A Guide to the Implementation and
       Modification of the Linux Protocol Stack."
       Author: Glenn Herrin.
       URL: http://www.cs.unh.edu/cnrg/gherrin
       Keywords: network, networking, protocol, IP, UDP, TCP, connection,
       socket, receiving, transmitting, forwarding, routing, packets,
       modules, /proc, sk_buff, FIB, tags.
       Description: Excellent paper devoted to the Linux IP Networking,
       explaining anything from the kernel's to the user space
       configuration tools' code. Very good to get a general overview of
       the kernel networking implementation and understand all steps
       packets follow from the time they are received at the network
       device till they are delivered to applications. The studied kernel
       code is from 2.2.14 version. Provides code for a working packet
       dropper example.
       
     * Title: "Get those boards talking under Linux."
       Author: Alex Ivchenko.
       URL: http://www.edn.com/article/CA46968.html
       Keywords: data-acquisition boards, drivers, modules, interrupts,
       memory allocation.
       Description: Article written for people wishing to make their data
       acquisition boards work on their GNU/Linux machines. Gives a basic
       overview on writing drivers, from the naming of functions to
       interrupt handling.
       Notes: Two-parts article. Part II is at
       URL: http://www.edn.com/article/CA46998.html
       
     * Title: "Linux PCMCIA Programmer's Guide"
       Author: David Hinds.
       URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
       Keywords: PCMCIA.
       Description: "This document describes how to write kernel device
       drivers for the Linux PCMCIA Card Services interface. It also
       describes how to write user-mode utilities for communicating with
       Card Services.

     * Title: "The Linux Kernel NFSD Implementation"
       Author: Neil Brown.
       URL:
       http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
       Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
       Description: The title says it all.
       Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
       
     * Title: "A Linux vm README"
       Author: Kanoj Sarcar.
       URL: http://kos.enix.org/pub/linux-vmm.html
       Keywords: virtual memory, mm, pgd, vma, page, page flags, page
       cache, swap cache, kswapd.
       Description: Telegraphic, short descriptions and definitions
       relating the Linux virtual memory implementation.
       
     * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
       definitive guide for hackers, virus coders and system
       administrators."
       Author: pragmatic/THC.
       URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
       Keywords: syscalls, intercept, hide, abuse, symbol table.
       Description: Interesting paper on how to abuse the Linux kernel in
       order to intercept and modify syscalls, make
       files/directories/processes invisible, become root, hijack ttys,
       write kernel modules based virus... and solutions for admins to
       avoid all those abuses.
       Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
       kernels.
       
     BOOKS: (Not on-line)
   
     * Title: "Linux Device Drivers"
       Author: Alessandro Rubini.
       Publisher: O'Reilly & Associates.
       Date: 1998.
       Pages: 439.
       ISBN: 1-56592-292-1
       
     * Title: "Linux Device Drivers, 2nd Edition"
       Author: Alessandro Rubini and Jonathan Corbet.
       Publisher: O'Reilly & Associates.
       Date: 2001.
       Pages: 586.
       ISBN: 0-59600-008-1
       Notes: Further information in
       http://www.oreilly.com/catalog/linuxdrive2/

     * Title: "Linux Device Drivers, 3nd Edition"
       Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
       Publisher: O'Reilly & Associates.
       Date: 2005.
       Pages: 636.
       ISBN: 0-596-00590-3
       Notes: Further information in
       http://www.oreilly.com/catalog/linuxdrive3/
       PDF format, URL: http://lwn.net/Kernel/LDD3/

     * Title: "Linux Kernel Internals"
       Author: Michael Beck.
       Publisher: Addison-Wesley.
       Date: 1997.
       ISBN: 0-201-33143-8 (second edition)
       
     * Title: "The Design of the UNIX Operating System"
       Author: Maurice J. Bach.
       Publisher: Prentice Hall.
       Date: 1986.
       Pages: 471.
       ISBN: 0-13-201757-1
       
     * Title: "The Design and Implementation of the 4.3 BSD UNIX
       Operating System"
       Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
       Karels, John S. Quarterman.
       Publisher: Addison-Wesley.
       Date: 1989 (reprinted with corrections on October, 1990).
       ISBN: 0-201-06196-1
       
     * Title: "The Design and Implementation of the 4.4 BSD UNIX
       Operating System"
       Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
       John S. Quarterman.
       Publisher: Addison-Wesley.
       Date: 1996.
       ISBN: 0-201-54979-4
       
     * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
       noyau"
       Author: Remy Card, Eric Dumas, Franck Mevel.
       Publisher: Eyrolles.
       Date: 1997.
       Pages: 520.
       ISBN: 2-212-08932-5
       Notes: French.

     * Title: "Unix internals -- the new frontiers"
       Author: Uresh Vahalia.
       Publisher: Prentice Hall.
       Date: 1996.
       Pages: 600.
       ISBN: 0-13-101908-2

     * Title:  "The  Design  and Implementation of the 4.4 BSD UNIX
       Operating System"
       Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
       John S. Quarterman.
       Publisher: Addison-Wesley.
       Date: 1996.
       ISBN: 0-201-54979-4

     * Title: "Programming for the real world - POSIX.4"
       Author: Bill O. Gallmeister.
       Publisher: O'Reilly & Associates, Inc..
       Date: 1995.
       Pages: ???.
       ISBN: I-56592-074-0
       Notes: Though not being directly about Linux, Linux aims to be
       POSIX. Good reference.

     * Title:  "UNIX  Systems  for  Modern Architectures: Symmetric
       Multiprocesssing and Caching for Kernel Programmers"
       Author: Curt Schimmel.
       Publisher: Addison Wesley.
       Date: June, 1994.
       Pages: 432.
       ISBN: 0-201-63338-8

     * Title:  "The  Design  and Implementation of the 4.3 BSD UNIX
       Operating System"
       Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
       Karels, John S. Quarterman.
       Publisher: Addison-Wesley.
       Date: 1989 (reprinted with corrections on October, 1990).
       ISBN: 0-201-06196-1

     * Title: "The Design of the UNIX Operating System"
       Author: Maurice J. Bach.
       Publisher: Prentice Hall.
       Date: 1986.
       Pages: 471.
       ISBN: 0-13-201757-1

     MISCELLANEOUS:

     * Name: linux/Documentation
       Author: Many.
       URL: Just look inside your kernel sources.
       Keywords: anything, DocBook.
       Description: Documentation that comes with the kernel sources,
       inside the Documentation directory. Some pages from this document
       (including this document itself) have been moved there, and might
       be more up to date than the web version.

     * Name: "Linux Source Driver"
       URL: http://lsd.linux.cz
       Keywords: Browsing source code.
       Description: "Linux Source Driver (LSD) is an application, which
       can make browsing source codes of Linux kernel easier than you can
       imagine. You can select between multiple versions of kernel (e.g.
       0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
       you can search Linux kernel (fulltext, macros, types, functions
       and variables) and LSD can generate patches for you on the fly
       (files, directories or kernel)".

     * Name: "Linux Kernel Source Reference"
       Author: Thomas Graichen.
       URL: http://marc.info/?l=linux-kernel&m=96446640102205&w=4
       Keywords: CVS, web, cvsweb, browsing source code.
       Description: Web interface to a CVS server with the kernel
       sources. "Here you can have a look at any file of the Linux kernel
       sources of any version starting from 1.0 up to the (daily updated)
       current version available. Also you can check the differences
       between two versions of a file".

     * Name: "Cross-Referencing Linux"
       URL: http://lxr.linux.no/source/
       Keywords: Browsing source code.
       Description: Another web-based Linux kernel source code browser.
       Lots of cross references to variables and functions. You can see
       where they are defined and where they are used.

     * Name: "Linux Weekly News"
       URL: http://lwn.net
       Keywords: latest kernel news.
       Description: The title says it all. There's a fixed kernel section
       summarizing developers' work, bug fixes, new features and versions
       produced during the week. Published every Thursday.

     * Name: "Kernel Traffic"
       URL: http://kt.earth.li/kernel-traffic/index.html
       Keywords: linux-kernel mailing list, weekly kernel news.
       Description: Weekly newsletter covering the most relevant
       discussions of the linux-kernel mailing list.

     * Name: "CuTTiNG.eDGe.LiNuX"
       URL: http://edge.kernelnotes.org
       Keywords: changelist.
       Description: Site which provides the changelist for every kernel
       release. What's new, what's better, what's changed. Myrdraal reads
       the patches and describes them. Pointers to the patches are there,
       too.

     * Name: "New linux-kernel Mailing List FAQ"
       URL: http://www.tux.org/lkml/
       Keywords: linux-kernel mailing list FAQ.
       Description: linux-kernel is a mailing list for developers to
       communicate. This FAQ builds on the previous linux-kernel mailing
       list FAQ maintained by Frohwalt Egerer, who no longer maintains
       it. Read it to see how to join the mailing list. Dozens of
       interesting questions regarding the list, Linux, developers (who
       is ...?), terms (what is...?) are answered here too. Just read it.

     * Name: "Linux Virtual File System"
       Author: Peter J. Braam.
       URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
       Keywords: slides, VFS, inode, superblock, dentry, dcache.
       Description: Set of slides, presumably from a presentation on the
       Linux VFS layer. Covers version 2.1.x, with dentries and the
       dcache.

     * Name: "Gary's Encyclopedia - The Linux Kernel"
       Author: Gary (I suppose...).
       URL: http://slencyclopedia.berlios.de/index.html
       Keywords: linux, community, everything!
       Description: Gary's Encyclopedia exists to allow the rapid finding
       of documentation and other information of interest to GNU/Linux
       users. It has about 4000 links to external pages in 150 major
       categories. This link is for kernel-specific links, documents,
       sites...  This list is now hosted by developer.Berlios.de,
       but seems not to have been updated since sometime in 1999.

     * Name: "The home page of Linux-MM"
       Author: The Linux-MM team.
       URL: http://linux-mm.org/
       Keywords: memory management, Linux-MM, mm patches, TODO, docs,
       mailing list.
       Description: Site devoted to Linux Memory Management development.
       Memory related patches, HOWTOs, links, mm developers... Don't miss
       it if you are interested in memory management development!

     * Name: "Kernel Newbies IRC Channel"
       URL: http://www.kernelnewbies.org
       Keywords: IRC, newbies, channel, asking doubts.
       Description: #kernelnewbies on irc.openprojects.net. From the web
       page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
       kernel hacker. The audience mostly consists of people who are
       learning about the kernel, working on kernel projects or
       professional kernel hackers that want to help less seasoned kernel
       people. [...] #kernelnewbies is on the Open Projects IRC Network,
       try irc.openprojects.net or irc.<country>.openprojects.net as your
       server and then /join #kernelnewbies". It also hosts articles,
       documents, FAQs...
       
     * Name: "linux-kernel mailing list archives and search engines"
       URL: http://vger.kernel.org/vger-lists.html
       URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
       URL: http://marc.theaimsgroup.com/?l=linux-kernel
       URL: http://groups.google.com/group/mlist.linux.kernel
       URL: http://www.cs.helsinki.fi/linux/linux-kernel/
       URL: http://www.lib.uaa.alaska.edu/linux-kernel/
       Keywords: linux-kernel, archives, search.
       Description: Some of the linux-kernel mailing list archivers. If
       you have a better/another one, please let me know.
     _________________________________________________________________
   
   Document last updated on Sat 2005-NOV-19
