Documentation/kernel-docs.txt: convert it to ReST markup
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 19 Sep 2016 11:07:55 +0000 (08:07 -0300)
committerJonathan Corbet <corbet@lwn.net>
Wed, 21 Sep 2016 00:40:26 +0000 (18:40 -0600)
This one required lots of manual work, for it to be properly
displayed.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Documentation/kernel-docs.txt

index 1dafc52167b001131da263f1755ff5cda8a89d45..7ca806184426c06bc0c80317e7f61a46152d40ef 100644 (file)
-
-    Index of Documentation for People Interested in Writing and/or
-
-                   Understanding the Linux Kernel.
+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: "Linux Kernel Hackers' Guide"
-       Author: Michael K. Johnson.
-       URL: http://www.tldp.org/LDP/khg/HyperNews/get/khg.html
-       Keywords: device drivers, files, VFS, kernel interface, character vs
-       block devices, hardware interrupts, scsi, DMA, access to user memory,
-       memory allocation, timers.
-       Description: A guide designed to help you get up to speed on the
-       concepts that are not intuitevly obvious, and to document the internal
-       structures of Linux.
-       
-     * 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://teaching.csse.uwa.edu.au/units/CITS2002/fs-ext2/
-       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.safe-mbox.com/~rgooch/linux/docs/porting-to-2.2.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.
-       URL: http://www.safe-mbox.com/~rgooch/linux/docs/porting-to-2.4.html
-       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.tmpl
-       (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.tmpl
-       (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, 3rd 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: "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
-       Multiprocessing and Caching for Kernel Programmers"
-       Author: Curt Schimmel.
-       Publisher: Addison Wesley.
-       Date: June, 1994.
-       Pages: 432.
-       ISBN: 0-201-63338-8
-
-     * Title: "Linux Kernel Development, 3rd Edition"
-       Author: Robert Love
-       Publisher: Addison-Wesley.
-       Date: July, 2010
-       Pages: 440
-       ISBN: 978-0672329463
-
-     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 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.free-electrons.com/
-       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 and Website"
-       URL: http://www.kernelnewbies.org
-       Keywords: IRC, newbies, channel, asking doubts.
-       Description: #kernelnewbies on irc.oftc.net.
-       #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 OFTC IRC Network.
-       Try irc.oftc.net as your server and then /join #kernelnewbies.
-       The kernelnewbies website 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
+.. note::
+ 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.
+       :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: **Linux Kernel Hackers' Guide**
+
+       :Author: Michael K. Johnson.
+       :URL: http://www.tldp.org/LDP/khg/HyperNews/get/khg.html
+       :Keywords: device drivers, files, VFS, kernel interface, character vs
+         block devices, hardware interrupts, scsi, DMA, access to user memory,
+         memory allocation, timers.
+       :Description: A guide designed to help you get up to speed on the
+         concepts that are not intuitevly obvious, and to document the internal
+         structures of Linux.
+
+     * 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://teaching.csse.uwa.edu.au/units/CITS2002/fs-ext2/
+       :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.safe-mbox.com/~rgooch/linux/docs/porting-to-2.2.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.
+       :URL: http://www.safe-mbox.com/~rgooch/linux/docs/porting-to-2.4.html
+       :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.tmpl
+         (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.tmpl
+         (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, 3rd 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: **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 Multiprocessing and Caching for Kernel Programmers**
+
+       :Author: Curt Schimmel.
+       :Publisher: Addison Wesley.
+       :Date: June, 1994.
+       :Pages: 432.
+       :ISBN: 0-201-63338-8
+
+     * Title: **Linux Kernel Development, 3rd Edition**
+
+       :Author: Robert Love
+       :Publisher: Addison-Wesley.
+       :Date: July, 2010
+       :Pages: 440
+       :ISBN: 978-0672329463
+
+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 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.free-electrons.com/
+       :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 and Website**
+
+       :URL: http://www.kernelnewbies.org
+       :Keywords: IRC, newbies, channel, asking doubts.
+       :Description: #kernelnewbies on irc.oftc.net.
+         #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 OFTC IRC Network.
+         Try irc.oftc.net as your server and then /join #kernelnewbies.
+         The kernelnewbies website 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