linux/Documentation/kernel-docs.txt
<<
>>
Prefs
   1
   2    Index of Documentation for People Interested in Writing and/or
   3
   4                   Understanding the Linux Kernel.
   5
   6          Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
   7
   8/*
   9 * The latest version of this document may be found at:
  10 *   http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
  11 */
  12
  13   The need for a document like this one became apparent in the
  14   linux-kernel mailing list as the same questions, asking for pointers
  15   to information, appeared again and again.
  16   
  17   Fortunately, as more and more people get to GNU/Linux, more and more
  18   get interested in the Kernel. But reading the sources is not always
  19   enough. It is easy to understand the code, but miss the concepts, the
  20   philosophy and design decisions behind this code.
  21   
  22   Unfortunately, not many documents are available for beginners to
  23   start. And, even if they exist, there was no "well-known" place which
  24   kept track of them. These lines try to cover this lack. All documents
  25   available on line known by the author are listed, while some reference
  26   books are also mentioned.
  27   
  28   PLEASE, if you know any paper not listed here or write a new document,
  29   send me an e-mail, and I'll include a reference to it here. Any
  30   corrections, ideas or comments are also welcomed.
  31   
  32   The papers that follow are listed in no particular order. All are
  33   cataloged with the following fields: the document's "Title", the
  34   "Author"/s, the "URL" where they can be found, some "Keywords" helpful
  35   when searching for specific topics, and a brief "Description" of the
  36   Document.
  37   
  38   Enjoy!
  39   
  40     ON-LINE DOCS:
  41       
  42     * Title: "Linux Device Drivers, Third Edition"
  43       Author: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
  44       URL: http://lwn.net/Kernel/LDD3/
  45       Description: A 600-page book covering the (2.6.10) driver
  46       programming API and kernel hacking in general.  Available under the
  47       Creative Commons Attribution-ShareAlike 2.0 license.
  48
  49     * Title: "The Linux Kernel"
  50       Author: David A. Rusling.
  51       URL: http://www.tldp.org/LDP/tlk/tlk.html
  52       Keywords: everything!, book.
  53       Description: On line, 200 pages book describing most aspects of
  54       the Linux Kernel. Probably, the first reference for beginners.
  55       Lots of illustrations explaining data structures use and
  56       relationships in the purest Richard W. Stevens' style. Contents:
  57       "1.-Hardware Basics, 2.-Software Basics, 3.-Memory Management,
  58       4.-Processes, 5.-Interprocess Communication Mechanisms, 6.-PCI,
  59       7.-Interrupts and Interrupt Handling, 8.-Device Drivers, 9.-The
  60       File system, 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules,
  61       13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
  62       Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
  63       General Public License, Glossary". In short: a must have.
  64
  65     * Title: "Linux Device Drivers, 2nd Edition"
  66       Author: Alessandro Rubini and Jonathan Corbet.
  67       URL: http://www.xml.com/ldd/chapter/book/index.html
  68       Keywords: device drivers, modules, debugging, memory, hardware,
  69       interrupt handling, char drivers, block drivers, kmod, mmap, DMA,
  70       buses.
  71       Description: O'Reilly's popular book, now also on-line under the
  72       GNU Free Documentation License.
  73       Notes: You can also buy it in paper-form from O'Reilly. See below
  74       under BOOKS (Not on-line).
  75
  76     * Title: "Conceptual Architecture of the Linux Kernel"
  77       Author: Ivan T. Bowman.
  78       URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html
  79       Keywords: conceptual software architecture, extracted design,
  80       reverse engineering, system structure.
  81       Description: Conceptual software architecture of the Linux kernel,
  82       automatically extracted from the source code. Very detailed. Good
  83       figures. Gives good overall kernel understanding.
  84
  85     * Title: "Concrete Architecture of the Linux Kernel"
  86       Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
  87       URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a2.html
  88       Keywords: concrete architecture, extracted design, reverse
  89       engineering, system structure, dependencies.
  90       Description: Concrete architecture of the Linux kernel,
  91       automatically extracted from the source code. Very detailed. Good
  92       figures. Gives good overall kernel understanding. This papers
  93       focus on lower details than its predecessor (files, variables...).
  94
  95     * Title: "Linux as a Case Study: Its Extracted Software
  96       Architecture"
  97       Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
  98       URL: http://plg.uwaterloo.ca/~itbowman/papers/linuxcase.html
  99       Keywords: software architecture, architecture recovery,
 100       redocumentation.
 101       Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
 102       1999. A mixture of the previous two documents from the same
 103       author.
 104
 105     * Title: "Overview of the Virtual File System"
 106       Author: Richard Gooch.
 107       URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
 108       Keywords: VFS, File System, mounting filesystems, opening files,
 109       dentries, dcache.
 110       Description: Brief introduction to the Linux Virtual File System.
 111       What is it, how it works, operations taken when opening a file or
 112       mounting a file system and description of important data
 113       structures explaining the purpose of each of their entries.
 114
 115     * Title: "The Linux RAID-1, 4, 5 Code"
 116       Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
 117       URL: http://www.linuxjournal.com/article.php?sid=2391
 118       Keywords: RAID, MD driver.
 119       Description: Linux Journal Kernel Korner article. Here is it's
 120       abstract: "A description of the implementation of the RAID-1,
 121       RAID-4 and RAID-5 personalities of the MD device driver in the
 122       Linux kernel, providing users with high performance and reliable,
 123       secondary-storage capability using software".
 124
 125     * Title: "Dynamic Kernels: Modularized Device Drivers"
 126       Author: Alessandro Rubini.
 127       URL: http://www.linuxjournal.com/article.php?sid=1219
 128       Keywords: device driver, module, loading/unloading modules,
 129       allocating resources.
 130       Description: Linux Journal Kernel Korner article. Here is it's
 131       abstract: "This is the first of a series of four articles
 132       co-authored by Alessandro Rubini and Georg Zezchwitz which present
 133       a practical approach to writing Linux device drivers as kernel
 134       loadable modules. This installment presents an introduction to the
 135       topic, preparing the reader to understand next month's
 136       installment".
 137
 138     * Title: "Dynamic Kernels: Discovery"
 139       Author: Alessandro Rubini.
 140       URL: http://www.linuxjournal.com/article.php?sid=1220
 141       Keywords: character driver, init_module, clean_up module,
 142       autodetection, mayor number, minor number, file operations,
 143       open(), close().
 144       Description: Linux Journal Kernel Korner article. Here is it's
 145       abstract: "This article, the second of four, introduces part of
 146       the actual code to create custom module implementing a character
 147       device driver. It describes the code for module initialization and
 148       cleanup, as well as the open() and close() system calls".
 149
 150     * Title: "The Devil's in the Details"
 151       Author: Georg v. Zezschwitz and Alessandro Rubini.
 152       URL: http://www.linuxjournal.com/article.php?sid=1221
 153       Keywords: read(), write(), select(), ioctl(), blocking/non
 154       blocking mode, interrupt handler.
 155       Description: Linux Journal Kernel Korner article. Here is it's
 156       abstract: "This article, the third of four on writing character
 157       device drivers, introduces concepts of reading, writing, and using
 158       ioctl-calls".
 159
 160     * Title: "Dissecting Interrupts and Browsing DMA"
 161       Author: Alessandro Rubini and Georg v. Zezschwitz.
 162       URL: http://www.linuxjournal.com/article.php?sid=1222
 163       Keywords: interrupts, irqs, DMA, bottom halves, task queues.
 164       Description: Linux Journal Kernel Korner article. Here is it's
 165       abstract: "This is the fourth in a series of articles about
 166       writing character device drivers as loadable kernel modules. This
 167       month, we further investigate the field of interrupt handling.
 168       Though it is conceptually simple, practical limitations and
 169       constraints make this an ``interesting'' part of device driver
 170       writing, and several different facilities have been provided for
 171       different situations. We also investigate the complex topic of
 172       DMA".
 173
 174     * Title: "Device Drivers Concluded"
 175       Author: Georg v. Zezschwitz.
 176       URL: http://www.linuxjournal.com/article.php?sid=1287
 177       Keywords: address spaces, pages, pagination, page management,
 178       demand loading, swapping, memory protection, memory mapping, mmap,
 179       virtual memory areas (VMAs), vremap, PCI.
 180       Description: Finally, the above turned out into a five articles
 181       series. This latest one's introduction reads: "This is the last of
 182       five articles about character device drivers. In this final
 183       section, Georg deals with memory mapping devices, beginning with
 184       an overall description of the Linux memory management concepts".
 185
 186     * Title: "Network Buffers And Memory Management"
 187       Author: Alan Cox.
 188       URL: http://www.linuxjournal.com/article.php?sid=1312
 189       Keywords: sk_buffs, network devices, protocol/link layer
 190       variables, network devices flags, transmit, receive,
 191       configuration, multicast.
 192       Description: Linux Journal Kernel Korner. Here is the abstract:
 193       "Writing a network device driver for Linux is fundamentally
 194       simple---most of the complexity (other than talking to the
 195       hardware) involves managing network packets in memory".
 196       
 197     * Title: "Writing Linux Device Drivers"
 198       Author: Michael K. Johnson.
 199       URL: http://users.evitech.fi/~tk/rtos/writing_linux_device_d.html
 200       Keywords: files, VFS, file operations, kernel interface, character
 201       vs block devices, I/O access, hardware interrupts, DMA, access to
 202       user memory, memory allocation, timers.
 203       Description: Introductory 50-minutes (sic) tutorial on writing
 204       device drivers. 12 pages written by the same author of the "Kernel
 205       Hackers' Guide" which give a very good overview of the topic.
 206       
 207     * Title: "The Venus kernel interface"
 208       Author: Peter J. Braam.
 209       URL:
 210       http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
 211       Keywords: coda, filesystem, venus, cache manager.
 212       Description: "This document describes the communication between
 213       Venus and kernel level file system code needed for the operation
 214       of the Coda filesystem. This version document is meant to describe
 215       the current interface (version 1.0) as well as improvements we
 216       envisage".
 217
 218     * Title: "Programming PCI-Devices under Linux"
 219       Author: Claus Schroeter.
 220       URL:
 221       ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps.gz
 222       Keywords: PCI, device, busmastering.
 223       Description: 6 pages tutorial on PCI programming under Linux.
 224       Gives the basic concepts on the architecture of the PCI subsystem,
 225       as long as basic functions and macros to read/write the devices
 226       and perform busmastering.
 227
 228     * Title: "Writing Character Device Driver for Linux"
 229       Author: R. Baruch and C. Schroeter.
 230       URL:
 231       ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers.ps.gz
 232       Keywords: character device drivers, I/O, signals, DMA, accessing
 233       ports in user space, kernel environment.
 234       Description: 68 pages paper on writing character drivers. A little
 235       bit old (1.993, 1.994) although still useful.
 236
 237     * Title: "Design and Implementation of the Second Extended
 238       Filesystem"
 239       Author: R\xC3\xA9my Card, Theodore Ts'o, Stephen Tweedie.
 240       URL: http://web.mit.edu/tytso/www/linux/ext2intro.html
 241       Keywords: ext2, linux fs history, inode, directory, link, devices,
 242       VFS, physical structure, performance, benchmarks, ext2fs library,
 243       ext2fs tools, e2fsck.
 244       Description: Paper written by three of the top ext2 hackers.
 245       Covers Linux filesystems history, ext2 motivation, ext2 features,
 246       design, physical structure on disk, performance, benchmarks,
 247       e2fsck's passes description... A must read!
 248       Notes: This paper was first published in the Proceedings of the
 249       First Dutch International Symposium on Linux, ISBN 90-367-0385-9.
 250
 251     * Title: "Analysis of the Ext2fs structure"
 252       Author: Louis-Dominique Dubeau.
 253       URL: http://www.nondot.org/sabre/os/files/FileSystems/ext2fs/
 254       Keywords: ext2, filesystem, ext2fs.
 255       Description: Description of ext2's blocks, directories, inodes,
 256       bitmaps, invariants...
 257
 258     * Title: "Journaling the Linux ext2fs Filesystem"
 259       Author: Stephen C. Tweedie.
 260       URL:
 261       ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz
 262       Keywords: ext3, journaling.
 263       Description: Excellent 8-pages paper explaining the journaling
 264       capabilities added to ext2 by the author, showing different
 265       problems faced and the alternatives chosen.
 266
 267     * Title: "Kernel API changes from 2.0 to 2.2"
 268       Author: Richard Gooch.
 269       URL:
 270       http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.2.html
 271       Keywords: 2.2, changes.
 272       Description: Kernel functions/structures/variables which changed
 273       from 2.0.x to 2.2.x.
 274
 275     * Title: "Kernel API changes from 2.2 to 2.4"
 276       Author: Richard Gooch.
 277       URL:
 278       http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.4.html
 279       Keywords: 2.4, changes.
 280       Description: Kernel functions/structures/variables which changed
 281       from 2.2.x to 2.4.x.
 282       
 283     * Title: "Linux Kernel Module Programming Guide"
 284       Author: Ori Pomerantz.
 285       URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
 286       Keywords: modules, GPL book, /proc, ioctls, system calls,
 287       interrupt handlers .
 288       Description: Very nice 92 pages GPL book on the topic of modules
 289       programming. Lots of examples.
 290       
 291     * Title: "I/O Event Handling Under Linux"
 292       Author: Richard Gooch.
 293       URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html
 294       Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
 295       event queues.
 296       Description: From the Introduction: "I/O Event handling is about
 297       how your Operating System allows you to manage a large number of
 298       open files (file descriptors in UNIX/POSIX, or FDs) in your
 299       application. You want the OS to notify you when FDs become active
 300       (have data ready to be read or are ready for writing). Ideally you
 301       want a mechanism that is scalable. This means a large number of
 302       inactive FDs cost very little in memory and CPU time to manage".
 303       
 304     * Title: "The Kernel Hacking HOWTO"
 305       Author: Various Talented People, and Rusty.
 306       Location: in kernel tree, Documentation/DocBook/kernel-hacking/
 307       (must be built as "make {htmldocs | psdocs | pdfdocs})
 308       Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
 309       symbols, return conventions.
 310       Description: From the Introduction: "Please understand that I
 311       never wanted to write this document, being grossly underqualified,
 312       but I always wanted to read it, and this was the only way. I
 313       simply explain some best practices, and give reading entry-points
 314       into the kernel sources. I avoid implementation details: that's
 315       what the code is for, and I ignore whole tracts of useful
 316       routines. This document assumes familiarity with C, and an
 317       understanding of what the kernel is, and how it is used. It was
 318       originally written for the 2.3 kernels, but nearly all of it
 319       applies to 2.2 too; 2.0 is slightly different".
 320       
 321     * Title: "Writing an ALSA Driver"
 322       Author: Takashi Iwai <tiwai@suse.de>
 323       URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html
 324       Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
 325       Description: Advanced Linux Sound Architecture for developers,
 326       both at kernel and user-level sides. ALSA is the Linux kernel
 327       sound architecture in the 2.6 kernel version.
 328       
 329     * Title: "Programming Guide for Linux USB Device Drivers"
 330       Author: Detlef Fliegl.
 331       URL: http://usb.in.tum.de/usbdoc/
 332       Keywords: USB, universal serial bus.
 333       Description: A must-read. From the Preface: "This document should
 334       give detailed information about the current state of the USB
 335       subsystem and its API for USB device drivers. The first section
 336       will deal with the basics of USB devices. You will learn about
 337       different types of devices and their properties. Going into detail
 338       you will see how USB devices communicate on the bus. The second
 339       section gives an overview of the Linux USB subsystem [2] and the
 340       device driver framework. Then the API and its data structures will
 341       be explained step by step. The last section of this document
 342       contains a reference of all API calls and their return codes".
 343       Notes: Beware: the main page states: "This document may not be
 344       published, printed or used in excerpts without explicit permission
 345       of the author". Fortunately, it may still be read...
 346
 347     * Title: "Linux Kernel Mailing List Glossary"
 348       Author: various
 349       URL: http://kernelnewbies.org/glossary/
 350       Keywords: glossary, terms, linux-kernel.
 351       Description: From the introduction: "This glossary is intended as
 352       a brief description of some of the acronyms and terms you may hear
 353       during discussion of the Linux kernel".
 354       
 355     * Title: "Linux Kernel Locking HOWTO"
 356       Author: Various Talented People, and Rusty.
 357       Location: in kernel tree, Documentation/DocBook/kernel-locking/
 358       (must be built as "make {htmldocs | psdocs | pdfdocs})
 359       Keywords: locks, locking, spinlock, semaphore, atomic, race
 360       condition, bottom halves, tasklets, softirqs.
 361       Description: The title says it all: document describing the
 362       locking system in the Linux Kernel either in uniprocessor or SMP
 363       systems.
 364       Notes: "It was originally written for the later (>2.3.47) 2.3
 365       kernels, but most of it applies to 2.2 too; 2.0 is slightly
 366       different". Freely redistributable under the conditions of the GNU
 367       General Public License.
 368
 369     * Title: "Global spinlock list and usage"
 370       Author: Rick Lindsley.
 371       URL: http://lse.sourceforge.net/lockhier/global-spin-lock
 372       Keywords: spinlock.
 373       Description: This is an attempt to document both the existence and
 374       usage of the spinlocks in the Linux 2.4.5 kernel. Comprehensive
 375       list of spinlocks showing when they are used, which functions
 376       access them, how each lock is acquired, under what conditions it
 377       is held, whether interrupts can occur or not while it is held...
 378
 379     * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
 380       Features "
 381       Author: Alan Cox.
 382       URL: http://www.linux-mag.com/1999-05/gear_01.html
 383       Keywords: ports, porting.
 384       Description: Article from Linux Magazine on porting from 2.0 to
 385       2.2 kernels.
 386
 387     * Title: "Porting Device Drivers To Linux 2.2: part II"
 388       Author: Alan Cox.
 389       URL: http://www.linux-mag.com/1999-06/gear_01.html
 390       Keywords: ports, porting.
 391       Description: Second part on porting from 2.0 to 2.2 kernels.
 392
 393     * Title: "How To Make Sure Your Driver Will Work On The Power
 394       Macintosh"
 395       Author: Paul Mackerras.
 396       URL: http://www.linux-mag.com/1999-07/gear_01.html
 397       Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
 398       Description: The title says it all.
 399
 400     * Title: "An Introduction to SCSI Drivers"
 401       Author: Alan Cox.
 402       URL: http://www.linux-mag.com/1999-08/gear_01.html
 403       Keywords: SCSI, device, driver.
 404       Description: The title says it all.
 405
 406     * Title: "Advanced SCSI Drivers And Other Tales"
 407       Author: Alan Cox.
 408       URL: http://www.linux-mag.com/1999-09/gear_01.html
 409       Keywords: SCSI, device, driver, advanced.
 410       Description: The title says it all.
 411
 412     * Title: "Writing Linux Mouse Drivers"
 413       Author: Alan Cox.
 414       URL: http://www.linux-mag.com/1999-10/gear_01.html
 415       Keywords: mouse, driver, gpm.
 416       Description: The title says it all.
 417
 418     * Title: "More on Mouse Drivers"
 419       Author: Alan Cox.
 420       URL: http://www.linux-mag.com/1999-11/gear_01.html
 421       Keywords: mouse, driver, gpm, races, asynchronous I/O.
 422       Description: The title still says it all.
 423
 424     * Title: "Writing Video4linux Radio Driver"
 425       Author: Alan Cox.
 426       URL: http://www.linux-mag.com/1999-12/gear_01.html
 427       Keywords: video4linux, driver, radio, radio devices.
 428       Description: The title says it all.
 429
 430     * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
 431       Author: Alan Cox.
 432       URL: http://www.linux-mag.com/2000-01/gear_01.html
 433       Keywords: video4linux, driver, video capture, capture devices,
 434       camera driver.
 435       Description: The title says it all.
 436
 437     * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
 438       Author: Alan Cox.
 439       URL: http://www.linux-mag.com/2000-02/gear_01.html
 440       Keywords: video4linux, driver, video capture, capture devices,
 441       camera driver, control, query capabilities, capability, facility.
 442       Description: The title says it all.
 443
 444     * Title: "PCI Management in Linux 2.2"
 445       Author: Alan Cox.
 446       URL: http://www.linux-mag.com/2000-03/gear_01.html
 447       Keywords: PCI, bus, bus-mastering.
 448       Description: The title says it all.
 449
 450     * Title: "Linux 2.4 Kernel Internals"
 451       Author: Tigran Aivazian and Christoph Hellwig.
 452       URL: http://www.moses.uklinux.net/patches/lki.html
 453       Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
 454       Description: A little book used for a short training course.
 455       Covers building the kernel image, booting (including SMP bootup),
 456       process management, VFS and more.
 457
 458     * Title: "Linux IP Networking. A Guide to the Implementation and
 459       Modification of the Linux Protocol Stack."
 460       Author: Glenn Herrin.
 461       URL: http://www.cs.unh.edu/cnrg/gherrin
 462       Keywords: network, networking, protocol, IP, UDP, TCP, connection,
 463       socket, receiving, transmitting, forwarding, routing, packets,
 464       modules, /proc, sk_buff, FIB, tags.
 465       Description: Excellent paper devoted to the Linux IP Networking,
 466       explaining anything from the kernel's to the user space
 467       configuration tools' code. Very good to get a general overview of
 468       the kernel networking implementation and understand all steps
 469       packets follow from the time they are received at the network
 470       device till they are delivered to applications. The studied kernel
 471       code is from 2.2.14 version. Provides code for a working packet
 472       dropper example.
 473       
 474     * Title: "Get those boards talking under Linux."
 475       Author: Alex Ivchenko.
 476       URL: http://www.edn.com/article/CA46968.html
 477       Keywords: data-acquisition boards, drivers, modules, interrupts,
 478       memory allocation.
 479       Description: Article written for people wishing to make their data
 480       acquisition boards work on their GNU/Linux machines. Gives a basic
 481       overview on writing drivers, from the naming of functions to
 482       interrupt handling.
 483       Notes: Two-parts article. Part II is at
 484       URL: http://www.edn.com/article/CA46998.html
 485       
 486     * Title: "Linux PCMCIA Programmer's Guide"
 487       Author: David Hinds.
 488       URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
 489       Keywords: PCMCIA.
 490       Description: "This document describes how to write kernel device
 491       drivers for the Linux PCMCIA Card Services interface. It also
 492       describes how to write user-mode utilities for communicating with
 493       Card Services.
 494
 495     * Title: "The Linux Kernel NFSD Implementation"
 496       Author: Neil Brown.
 497       URL:
 498       http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
 499       Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
 500       Description: The title says it all.
 501       Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
 502       
 503     * Title: "A Linux vm README"
 504       Author: Kanoj Sarcar.
 505       URL: http://reality.sgi.com/kanoj_engr/vm229.html
 506       Keywords: virtual memory, mm, pgd, vma, page, page flags, page
 507       cache, swap cache, kswapd.
 508       Description: Telegraphic, short descriptions and definitions
 509       relating the Linux virtual memory implementation.
 510       
 511     * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
 512       definitive guide for hackers, virus coders and system
 513       administrators."
 514       Author: pragmatic/THC.
 515       URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
 516       Keywords: syscalls, intercept, hide, abuse, symbol table.
 517       Description: Interesting paper on how to abuse the Linux kernel in
 518       order to intercept and modify syscalls, make
 519       files/directories/processes invisible, become root, hijack ttys,
 520       write kernel modules based virus... and solutions for admins to
 521       avoid all those abuses.
 522       Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
 523       kernels.
 524       
 525     BOOKS: (Not on-line)
 526   
 527     * Title: "Linux Device Drivers"
 528       Author: Alessandro Rubini.
 529       Publisher: O'Reilly & Associates.
 530       Date: 1998.
 531       Pages: 439.
 532       ISBN: 1-56592-292-1
 533       
 534     * Title: "Linux Device Drivers, 2nd Edition"
 535       Author: Alessandro Rubini and Jonathan Corbet.
 536       Publisher: O'Reilly & Associates.
 537       Date: 2001.
 538       Pages: 586.
 539       ISBN: 0-59600-008-1
 540       Notes: Further information in
 541       http://www.oreilly.com/catalog/linuxdrive2/
 542
 543     * Title: "Linux Device Drivers, 3nd Edition"
 544       Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
 545       Publisher: O'Reilly & Associates.
 546       Date: 2005.
 547       Pages: 636.
 548       ISBN: 0-596-00590-3
 549       Notes: Further information in
 550       http://www.oreilly.com/catalog/linuxdrive3/
 551       PDF format, URL: http://lwn.net/Kernel/LDD3/
 552
 553     * Title: "Linux Kernel Internals"
 554       Author: Michael Beck.
 555       Publisher: Addison-Wesley.
 556       Date: 1997.
 557       ISBN: 0-201-33143-8 (second edition)
 558       
 559     * Title: "The Design of the UNIX Operating System"
 560       Author: Maurice J. Bach.
 561       Publisher: Prentice Hall.
 562       Date: 1986.
 563       Pages: 471.
 564       ISBN: 0-13-201757-1
 565       
 566     * Title: "The Design and Implementation of the 4.3 BSD UNIX
 567       Operating System"
 568       Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
 569       Karels, John S. Quarterman.
 570       Publisher: Addison-Wesley.
 571       Date: 1989 (reprinted with corrections on October, 1990).
 572       ISBN: 0-201-06196-1
 573       
 574     * Title: "The Design and Implementation of the 4.4 BSD UNIX
 575       Operating System"
 576       Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
 577       John S. Quarterman.
 578       Publisher: Addison-Wesley.
 579       Date: 1996.
 580       ISBN: 0-201-54979-4
 581       
 582     * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
 583       noyau"
 584       Author: Remy Card, Eric Dumas, Franck Mevel.
 585       Publisher: Eyrolles.
 586       Date: 1997.
 587       Pages: 520.
 588       ISBN: 2-212-08932-5
 589       Notes: French.
 590
 591     * Title: "Unix internals -- the new frontiers"
 592       Author: Uresh Vahalia.
 593       Publisher: Prentice Hall.
 594       Date: 1996.
 595       Pages: 600.
 596       ISBN: 0-13-101908-2
 597
 598     * Title:  "The  Design  and Implementation of the 4.4 BSD UNIX
 599       Operating System"
 600       Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
 601       John S. Quarterman.
 602       Publisher: Addison-Wesley.
 603       Date: 1996.
 604       ISBN: 0-201-54979-4
 605
 606     * Title: "Programming for the real world - POSIX.4"
 607       Author: Bill O. Gallmeister.
 608       Publisher: O'Reilly & Associates, Inc..
 609       Date: 1995.
 610       Pages: ???.
 611       ISBN: I-56592-074-0
 612       Notes: Though not being directly about Linux, Linux aims to be
 613       POSIX. Good reference.
 614
 615     * Title:  "UNIX  Systems  for  Modern Architectures: Symmetric
 616       Multiprocesssing and Caching for Kernel Programmers"
 617       Author: Curt Schimmel.
 618       Publisher: Addison Wesley.
 619       Date: June, 1994.
 620       Pages: 432.
 621       ISBN: 0-201-63338-8
 622
 623     * Title:  "The  Design  and Implementation of the 4.3 BSD UNIX
 624       Operating System"
 625       Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
 626       Karels, John S. Quarterman.
 627       Publisher: Addison-Wesley.
 628       Date: 1989 (reprinted with corrections on October, 1990).
 629       ISBN: 0-201-06196-1
 630
 631     * Title: "The Design of the UNIX Operating System"
 632       Author: Maurice J. Bach.
 633       Publisher: Prentice Hall.
 634       Date: 1986.
 635       Pages: 471.
 636       ISBN: 0-13-201757-1
 637
 638     MISCELLANEOUS:
 639
 640     * Name: linux/Documentation
 641       Author: Many.
 642       URL: Just look inside your kernel sources.
 643       Keywords: anything, DocBook.
 644       Description: Documentation that comes with the kernel sources,
 645       inside the Documentation directory. Some pages from this document
 646       (including this document itself) have been moved there, and might
 647       be more up to date than the web version.
 648
 649     * Name: "Linux Source Driver"
 650       URL: http://lsd.linux.cz
 651       Keywords: Browsing source code.
 652       Description: "Linux Source Driver (LSD) is an application, which
 653       can make browsing source codes of Linux kernel easier than you can
 654       imagine. You can select between multiple versions of kernel (e.g.
 655       0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
 656       you can search Linux kernel (fulltext, macros, types, functions
 657       and variables) and LSD can generate patches for you on the fly
 658       (files, directories or kernel)".
 659
 660     * Name: "Linux Kernel Source Reference"
 661       Author: Thomas Graichen.
 662       URL: http://innominate.org/~graichen/projects/lksr/
 663       Keywords: CVS, web, cvsweb, browsing source code.
 664       Description: Web interface to a CVS server with the kernel
 665       sources. "Here you can have a look at any file of the Linux kernel
 666       sources of any version starting from 1.0 up to the (daily updated)
 667       current version available. Also you can check the differences
 668       between two versions of a file".
 669
 670     * Name: "Cross-Referencing Linux"
 671       URL: http://lxr.linux.no/source/
 672       Keywords: Browsing source code.
 673       Description: Another web-based Linux kernel source code browser.
 674       Lots of cross references to variables and functions. You can see
 675       where they are defined and where they are used.
 676
 677     * Name: "Linux Weekly News"
 678       URL: http://lwn.net
 679       Keywords: latest kernel news.
 680       Description: The title says it all. There's a fixed kernel section
 681       summarizing developers' work, bug fixes, new features and versions
 682       produced during the week. Published every Thursday.
 683
 684     * Name: "Kernel Traffic"
 685       URL: http://kt.zork.net/kernel-traffic/
 686       Keywords: linux-kernel mailing list, weekly kernel news.
 687       Description: Weekly newsletter covering the most relevant
 688       discussions of the linux-kernel mailing list.
 689
 690     * Name: "CuTTiNG.eDGe.LiNuX"
 691       URL: http://edge.kernelnotes.org
 692       Keywords: changelist.
 693       Description: Site which provides the changelist for every kernel
 694       release. What's new, what's better, what's changed. Myrdraal reads
 695       the patches and describes them. Pointers to the patches are there,
 696       too.
 697
 698     * Name: "New linux-kernel Mailing List FAQ"
 699       URL: http://www.tux.org/lkml/
 700       Keywords: linux-kernel mailing list FAQ.
 701       Description: linux-kernel is a mailing list for developers to
 702       communicate. This FAQ builds on the previous linux-kernel mailing
 703       list FAQ maintained by Frohwalt Egerer, who no longer maintains
 704       it. Read it to see how to join the mailing list. Dozens of
 705       interesting questions regarding the list, Linux, developers (who
 706       is ...?), terms (what is...?) are answered here too. Just read it.
 707
 708     * Name: "Linux Virtual File System"
 709       Author: Peter J. Braam.
 710       URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
 711       Keywords: slides, VFS, inode, superblock, dentry, dcache.
 712       Description: Set of slides, presumably from a presentation on the
 713       Linux VFS layer. Covers version 2.1.x, with dentries and the
 714       dcache.
 715
 716     * Name: "Gary's Encyclopedia - The Linux Kernel"
 717       Author: Gary (I suppose...).
 718       URL: http://slencyclopedia.berlios.de/index.html
 719       Keywords: linux, community, everything!
 720       Description: Gary's Encyclopedia exists to allow the rapid finding
 721       of documentation and other information of interest to GNU/Linux
 722       users. It has about 4000 links to external pages in 150 major
 723       categories. This link is for kernel-specific links, documents,
 724       sites...  This list is now hosted by developer.Berlios.de,
 725       but seems not to have been updated since sometime in 1999.
 726
 727     * Name: "The home page of Linux-MM"
 728       Author: The Linux-MM team.
 729       URL: http://linux-mm.org/
 730       Keywords: memory management, Linux-MM, mm patches, TODO, docs,
 731       mailing list.
 732       Description: Site devoted to Linux Memory Management development.
 733       Memory related patches, HOWTOs, links, mm developers... Don't miss
 734       it if you are interested in memory management development!
 735
 736     * Name: "Kernel Newbies IRC Channel"
 737       URL: http://www.kernelnewbies.org
 738       Keywords: IRC, newbies, channel, asking doubts.
 739       Description: #kernelnewbies on irc.openprojects.net. From the web
 740       page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
 741       kernel hacker. The audience mostly consists of people who are
 742       learning about the kernel, working on kernel projects or
 743       professional kernel hackers that want to help less seasoned kernel
 744       people. [...] #kernelnewbies is on the Open Projects IRC Network,
 745       try irc.openprojects.net or irc.<country>.openprojects.net as your
 746       server and then /join #kernelnewbies". It also hosts articles,
 747       documents, FAQs...
 748       
 749     * Name: "linux-kernel mailing list archives and search engines"
 750       URL: http://vger.kernel.org/vger-lists.html
 751       URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
 752       URL: http://marc.theaimsgroup.com/?l=linux-kernel
 753       URL: http://groups.google.com/group/mlist.linux.kernel
 754       URL: http://www.cs.helsinki.fi/linux/linux-kernel/
 755       URL: http://www.lib.uaa.alaska.edu/linux-kernel/
 756       Keywords: linux-kernel, archives, search.
 757       Description: Some of the linux-kernel mailing list archivers. If
 758       you have a better/another one, please let me know.
 759     _________________________________________________________________
 760   
 761   Document last updated on Sat 2005-NOV-19
 762