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/
  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/
  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/
  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.mjmwired.net/kernel/Documentation/filesystems/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 its
 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 its
 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 its
 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 its
 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 its
 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émy 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.linuxhq.com/guides/LKMPG/node28.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       Keywords: 2.4, changes.
 278       Description: Kernel functions/structures/variables which changed
 279       from 2.2.x to 2.4.x.
 280       
 281     * Title: "Linux Kernel Module Programming Guide"
 282       Author: Ori Pomerantz.
 283       URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
 284       Keywords: modules, GPL book, /proc, ioctls, system calls,
 285       interrupt handlers .
 286       Description: Very nice 92 pages GPL book on the topic of modules
 287       programming. Lots of examples.
 288       
 289     * Title: "I/O Event Handling Under Linux"
 290       Author: Richard Gooch.
 291       Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
 292       event queues.
 293       Description: From the Introduction: "I/O Event handling is about
 294       how your Operating System allows you to manage a large number of
 295       open files (file descriptors in UNIX/POSIX, or FDs) in your
 296       application. You want the OS to notify you when FDs become active
 297       (have data ready to be read or are ready for writing). Ideally you
 298       want a mechanism that is scalable. This means a large number of
 299       inactive FDs cost very little in memory and CPU time to manage".
 300       
 301     * Title: "The Kernel Hacking HOWTO"
 302       Author: Various Talented People, and Rusty.
 303       Location: in kernel tree, Documentation/DocBook/kernel-hacking.tmpl
 304       (must be built as "make {htmldocs | psdocs | pdfdocs})
 305       Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
 306       symbols, return conventions.
 307       Description: From the Introduction: "Please understand that I
 308       never wanted to write this document, being grossly underqualified,
 309       but I always wanted to read it, and this was the only way. I
 310       simply explain some best practices, and give reading entry-points
 311       into the kernel sources. I avoid implementation details: that's
 312       what the code is for, and I ignore whole tracts of useful
 313       routines. This document assumes familiarity with C, and an
 314       understanding of what the kernel is, and how it is used. It was
 315       originally written for the 2.3 kernels, but nearly all of it
 316       applies to 2.2 too; 2.0 is slightly different".
 317       
 318     * Title: "Writing an ALSA Driver"
 319       Author: Takashi Iwai <tiwai@suse.de>
 320       URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html
 321       Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
 322       Description: Advanced Linux Sound Architecture for developers,
 323       both at kernel and user-level sides. ALSA is the Linux kernel
 324       sound architecture in the 2.6 kernel version.
 325       
 326     * Title: "Programming Guide for Linux USB Device Drivers"
 327       Author: Detlef Fliegl.
 328       URL: http://usb.in.tum.de/usbdoc/
 329       Keywords: USB, universal serial bus.
 330       Description: A must-read. From the Preface: "This document should
 331       give detailed information about the current state of the USB
 332       subsystem and its API for USB device drivers. The first section
 333       will deal with the basics of USB devices. You will learn about
 334       different types of devices and their properties. Going into detail
 335       you will see how USB devices communicate on the bus. The second
 336       section gives an overview of the Linux USB subsystem [2] and the
 337       device driver framework. Then the API and its data structures will
 338       be explained step by step. The last section of this document
 339       contains a reference of all API calls and their return codes".
 340       Notes: Beware: the main page states: "This document may not be
 341       published, printed or used in excerpts without explicit permission
 342       of the author". Fortunately, it may still be read...
 343
 344     * Title: "Linux Kernel Mailing List Glossary"
 345       Author: various
 346       URL: http://kernelnewbies.org/glossary/
 347       Keywords: glossary, terms, linux-kernel.
 348       Description: From the introduction: "This glossary is intended as
 349       a brief description of some of the acronyms and terms you may hear
 350       during discussion of the Linux kernel".
 351       
 352     * Title: "Linux Kernel Locking HOWTO"
 353       Author: Various Talented People, and Rusty.
 354       Location: in kernel tree, Documentation/DocBook/kernel-locking.tmpl
 355       (must be built as "make {htmldocs | psdocs | pdfdocs})
 356       Keywords: locks, locking, spinlock, semaphore, atomic, race
 357       condition, bottom halves, tasklets, softirqs.
 358       Description: The title says it all: document describing the
 359       locking system in the Linux Kernel either in uniprocessor or SMP
 360       systems.
 361       Notes: "It was originally written for the later (>2.3.47) 2.3
 362       kernels, but most of it applies to 2.2 too; 2.0 is slightly
 363       different". Freely redistributable under the conditions of the GNU
 364       General Public License.
 365
 366     * Title: "Global spinlock list and usage"
 367       Author: Rick Lindsley.
 368       URL: http://lse.sourceforge.net/lockhier/global-spin-lock
 369       Keywords: spinlock.
 370       Description: This is an attempt to document both the existence and
 371       usage of the spinlocks in the Linux 2.4.5 kernel. Comprehensive
 372       list of spinlocks showing when they are used, which functions
 373       access them, how each lock is acquired, under what conditions it
 374       is held, whether interrupts can occur or not while it is held...
 375
 376     * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
 377       Features "
 378       Author: Alan Cox.
 379       URL: http://www.linux-mag.com/1999-05/gear_01.html
 380       Keywords: ports, porting.
 381       Description: Article from Linux Magazine on porting from 2.0 to
 382       2.2 kernels.
 383
 384     * Title: "Porting Device Drivers To Linux 2.2: part II"
 385       Author: Alan Cox.
 386       URL: http://www.linux-mag.com/id/238 
 387       Keywords: ports, porting.
 388       Description: Second part on porting from 2.0 to 2.2 kernels.
 389
 390     * Title: "How To Make Sure Your Driver Will Work On The Power
 391       Macintosh"
 392       Author: Paul Mackerras.
 393       URL: http://www.linux-mag.com/id/261
 394       Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
 395       Description: The title says it all.
 396
 397     * Title: "An Introduction to SCSI Drivers"
 398       Author: Alan Cox.
 399       URL: http://www.linux-mag.com/id/284
 400       Keywords: SCSI, device, driver.
 401       Description: The title says it all.
 402
 403     * Title: "Advanced SCSI Drivers And Other Tales"
 404       Author: Alan Cox.
 405       URL: http://www.linux-mag.com/id/307
 406       Keywords: SCSI, device, driver, advanced.
 407       Description: The title says it all.
 408
 409     * Title: "Writing Linux Mouse Drivers"
 410       Author: Alan Cox.
 411       URL: http://www.linux-mag.com/id/330
 412       Keywords: mouse, driver, gpm.
 413       Description: The title says it all.
 414
 415     * Title: "More on Mouse Drivers"
 416       Author: Alan Cox.
 417       URL: http://www.linux-mag.com/id/356
 418       Keywords: mouse, driver, gpm, races, asynchronous I/O.
 419       Description: The title still says it all.
 420
 421     * Title: "Writing Video4linux Radio Driver"
 422       Author: Alan Cox.
 423       URL: http://www.linux-mag.com/id/381
 424       Keywords: video4linux, driver, radio, radio devices.
 425       Description: The title says it all.
 426
 427     * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
 428       Author: Alan Cox.
 429       URL: http://www.linux-mag.com/id/406
 430       Keywords: video4linux, driver, video capture, capture devices,
 431       camera driver.
 432       Description: The title says it all.
 433
 434     * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
 435       Author: Alan Cox.
 436       URL: http://www.linux-mag.com/id/429
 437       Keywords: video4linux, driver, video capture, capture devices,
 438       camera driver, control, query capabilities, capability, facility.
 439       Description: The title says it all.
 440
 441     * Title: "PCI Management in Linux 2.2"
 442       Author: Alan Cox.
 443       URL: http://www.linux-mag.com/id/452
 444       Keywords: PCI, bus, bus-mastering.
 445       Description: The title says it all.
 446
 447     * Title: "Linux 2.4 Kernel Internals"
 448       Author: Tigran Aivazian and Christoph Hellwig.
 449       URL: http://www.moses.uklinux.net/patches/lki.html
 450       Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
 451       Description: A little book used for a short training course.
 452       Covers building the kernel image, booting (including SMP bootup),
 453       process management, VFS and more.
 454
 455     * Title: "Linux IP Networking. A Guide to the Implementation and
 456       Modification of the Linux Protocol Stack."
 457       Author: Glenn Herrin.
 458       URL: http://www.cs.unh.edu/cnrg/gherrin
 459       Keywords: network, networking, protocol, IP, UDP, TCP, connection,
 460       socket, receiving, transmitting, forwarding, routing, packets,
 461       modules, /proc, sk_buff, FIB, tags.
 462       Description: Excellent paper devoted to the Linux IP Networking,
 463       explaining anything from the kernel's to the user space
 464       configuration tools' code. Very good to get a general overview of
 465       the kernel networking implementation and understand all steps
 466       packets follow from the time they are received at the network
 467       device till they are delivered to applications. The studied kernel
 468       code is from 2.2.14 version. Provides code for a working packet
 469       dropper example.
 470       
 471     * Title: "Get those boards talking under Linux."
 472       Author: Alex Ivchenko.
 473       URL: http://www.edn.com/article/CA46968.html
 474       Keywords: data-acquisition boards, drivers, modules, interrupts,
 475       memory allocation.
 476       Description: Article written for people wishing to make their data
 477       acquisition boards work on their GNU/Linux machines. Gives a basic
 478       overview on writing drivers, from the naming of functions to
 479       interrupt handling.
 480       Notes: Two-parts article. Part II is at
 481       URL: http://www.edn.com/article/CA46998.html
 482       
 483     * Title: "Linux PCMCIA Programmer's Guide"
 484       Author: David Hinds.
 485       URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
 486       Keywords: PCMCIA.
 487       Description: "This document describes how to write kernel device
 488       drivers for the Linux PCMCIA Card Services interface. It also
 489       describes how to write user-mode utilities for communicating with
 490       Card Services.
 491
 492     * Title: "The Linux Kernel NFSD Implementation"
 493       Author: Neil Brown.
 494       URL:
 495       http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
 496       Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
 497       Description: The title says it all.
 498       Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
 499       
 500     * Title: "A Linux vm README"
 501       Author: Kanoj Sarcar.
 502       URL: http://kos.enix.org/pub/linux-vmm.html
 503       Keywords: virtual memory, mm, pgd, vma, page, page flags, page
 504       cache, swap cache, kswapd.
 505       Description: Telegraphic, short descriptions and definitions
 506       relating the Linux virtual memory implementation.
 507       
 508     * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
 509       definitive guide for hackers, virus coders and system
 510       administrators."
 511       Author: pragmatic/THC.
 512       URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
 513       Keywords: syscalls, intercept, hide, abuse, symbol table.
 514       Description: Interesting paper on how to abuse the Linux kernel in
 515       order to intercept and modify syscalls, make
 516       files/directories/processes invisible, become root, hijack ttys,
 517       write kernel modules based virus... and solutions for admins to
 518       avoid all those abuses.
 519       Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
 520       kernels.
 521       
 522     BOOKS: (Not on-line)
 523   
 524     * Title: "Linux Device Drivers"
 525       Author: Alessandro Rubini.
 526       Publisher: O'Reilly & Associates.
 527       Date: 1998.
 528       Pages: 439.
 529       ISBN: 1-56592-292-1
 530       
 531     * Title: "Linux Device Drivers, 2nd Edition"
 532       Author: Alessandro Rubini and Jonathan Corbet.
 533       Publisher: O'Reilly & Associates.
 534       Date: 2001.
 535       Pages: 586.
 536       ISBN: 0-59600-008-1
 537       Notes: Further information in
 538       http://www.oreilly.com/catalog/linuxdrive2/
 539
 540     * Title: "Linux Device Drivers, 3rd Edition"
 541       Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
 542       Publisher: O'Reilly & Associates.
 543       Date: 2005.
 544       Pages: 636.
 545       ISBN: 0-596-00590-3
 546       Notes: Further information in
 547       http://www.oreilly.com/catalog/linuxdrive3/
 548       PDF format, URL: http://lwn.net/Kernel/LDD3/
 549
 550     * Title: "Linux Kernel Internals"
 551       Author: Michael Beck.
 552       Publisher: Addison-Wesley.
 553       Date: 1997.
 554       ISBN: 0-201-33143-8 (second edition)
 555       
 556     * Title: "The Design of the UNIX Operating System"
 557       Author: Maurice J. Bach.
 558       Publisher: Prentice Hall.
 559       Date: 1986.
 560       Pages: 471.
 561       ISBN: 0-13-201757-1
 562       
 563     * Title: "The Design and Implementation of the 4.3 BSD UNIX
 564       Operating System"
 565       Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
 566       Karels, John S. Quarterman.
 567       Publisher: Addison-Wesley.
 568       Date: 1989 (reprinted with corrections on October, 1990).
 569       ISBN: 0-201-06196-1
 570       
 571     * Title: "The Design and Implementation of the 4.4 BSD UNIX
 572       Operating System"
 573       Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
 574       John S. Quarterman.
 575       Publisher: Addison-Wesley.
 576       Date: 1996.
 577       ISBN: 0-201-54979-4
 578       
 579     * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
 580       noyau"
 581       Author: Remy Card, Eric Dumas, Franck Mevel.
 582       Publisher: Eyrolles.
 583       Date: 1997.
 584       Pages: 520.
 585       ISBN: 2-212-08932-5
 586       Notes: French.
 587
 588     * Title: "Unix internals -- the new frontiers"
 589       Author: Uresh Vahalia.
 590       Publisher: Prentice Hall.
 591       Date: 1996.
 592       Pages: 600.
 593       ISBN: 0-13-101908-2
 594
 595     * Title: "Programming for the real world - POSIX.4"
 596       Author: Bill O. Gallmeister.
 597       Publisher: O'Reilly & Associates, Inc..
 598       Date: 1995.
 599       Pages: ???.
 600       ISBN: I-56592-074-0
 601       Notes: Though not being directly about Linux, Linux aims to be
 602       POSIX. Good reference.
 603
 604     * Title:  "UNIX  Systems  for  Modern Architectures: Symmetric
 605       Multiprocessing and Caching for Kernel Programmers"
 606       Author: Curt Schimmel.
 607       Publisher: Addison Wesley.
 608       Date: June, 1994.
 609       Pages: 432.
 610       ISBN: 0-201-63338-8
 611
 612     MISCELLANEOUS:
 613
 614     * Name: linux/Documentation
 615       Author: Many.
 616       URL: Just look inside your kernel sources.
 617       Keywords: anything, DocBook.
 618       Description: Documentation that comes with the kernel sources,
 619       inside the Documentation directory. Some pages from this document
 620       (including this document itself) have been moved there, and might
 621       be more up to date than the web version.
 622
 623     * Name: "Linux Kernel Source Reference"
 624       Author: Thomas Graichen.
 625       URL: http://marc.info/?l=linux-kernel&m=96446640102205&w=4
 626       Keywords: CVS, web, cvsweb, browsing source code.
 627       Description: Web interface to a CVS server with the kernel
 628       sources. "Here you can have a look at any file of the Linux kernel
 629       sources of any version starting from 1.0 up to the (daily updated)
 630       current version available. Also you can check the differences
 631       between two versions of a file".
 632
 633     * Name: "Cross-Referencing Linux"
 634       URL: http://lxr.linux.no/source/
 635       Keywords: Browsing source code.
 636       Description: Another web-based Linux kernel source code browser.
 637       Lots of cross references to variables and functions. You can see
 638       where they are defined and where they are used.
 639
 640     * Name: "Linux Weekly News"
 641       URL: http://lwn.net
 642       Keywords: latest kernel news.
 643       Description: The title says it all. There's a fixed kernel section
 644       summarizing developers' work, bug fixes, new features and versions
 645       produced during the week. Published every Thursday.
 646
 647     * Name: "Kernel Traffic"
 648       URL: http://kt.earth.li/kernel-traffic/index.html
 649       Keywords: linux-kernel mailing list, weekly kernel news.
 650       Description: Weekly newsletter covering the most relevant
 651       discussions of the linux-kernel mailing list.
 652
 653     * Name: "CuTTiNG.eDGe.LiNuX"
 654       URL: http://edge.kernelnotes.org
 655       Keywords: changelist.
 656       Description: Site which provides the changelist for every kernel
 657       release. What's new, what's better, what's changed. Myrdraal reads
 658       the patches and describes them. Pointers to the patches are there,
 659       too.
 660
 661     * Name: "New linux-kernel Mailing List FAQ"
 662       URL: http://www.tux.org/lkml/
 663       Keywords: linux-kernel mailing list FAQ.
 664       Description: linux-kernel is a mailing list for developers to
 665       communicate. This FAQ builds on the previous linux-kernel mailing
 666       list FAQ maintained by Frohwalt Egerer, who no longer maintains
 667       it. Read it to see how to join the mailing list. Dozens of
 668       interesting questions regarding the list, Linux, developers (who
 669       is ...?), terms (what is...?) are answered here too. Just read it.
 670
 671     * Name: "Linux Virtual File System"
 672       Author: Peter J. Braam.
 673       URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
 674       Keywords: slides, VFS, inode, superblock, dentry, dcache.
 675       Description: Set of slides, presumably from a presentation on the
 676       Linux VFS layer. Covers version 2.1.x, with dentries and the
 677       dcache.
 678
 679     * Name: "Gary's Encyclopedia - The Linux Kernel"
 680       Author: Gary (I suppose...).
 681       URL: http://slencyclopedia.berlios.de/index.html
 682       Keywords: linux, community, everything!
 683       Description: Gary's Encyclopedia exists to allow the rapid finding
 684       of documentation and other information of interest to GNU/Linux
 685       users. It has about 4000 links to external pages in 150 major
 686       categories. This link is for kernel-specific links, documents,
 687       sites...  This list is now hosted by developer.Berlios.de,
 688       but seems not to have been updated since sometime in 1999.
 689
 690     * Name: "The home page of Linux-MM"
 691       Author: The Linux-MM team.
 692       URL: http://linux-mm.org/
 693       Keywords: memory management, Linux-MM, mm patches, TODO, docs,
 694       mailing list.
 695       Description: Site devoted to Linux Memory Management development.
 696       Memory related patches, HOWTOs, links, mm developers... Don't miss
 697       it if you are interested in memory management development!
 698
 699     * Name: "Kernel Newbies IRC Channel"
 700       URL: http://www.kernelnewbies.org
 701       Keywords: IRC, newbies, channel, asking doubts.
 702       Description: #kernelnewbies on irc.openprojects.net. From the web
 703       page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
 704       kernel hacker. The audience mostly consists of people who are
 705       learning about the kernel, working on kernel projects or
 706       professional kernel hackers that want to help less seasoned kernel
 707       people. [...] #kernelnewbies is on the Open Projects IRC Network,
 708       try irc.openprojects.net or irc.<country>.openprojects.net as your
 709       server and then /join #kernelnewbies". It also hosts articles,
 710       documents, FAQs...
 711       
 712     * Name: "linux-kernel mailing list archives and search engines"
 713       URL: http://vger.kernel.org/vger-lists.html
 714       URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
 715       URL: http://marc.theaimsgroup.com/?l=linux-kernel
 716       URL: http://groups.google.com/group/mlist.linux.kernel
 717       URL: http://www.cs.helsinki.fi/linux/linux-kernel/
 718       URL: http://www.lib.uaa.alaska.edu/linux-kernel/
 719       Keywords: linux-kernel, archives, search.
 720       Description: Some of the linux-kernel mailing list archivers. If
 721       you have a better/another one, please let me know.
 722     _________________________________________________________________
 723   
 724   Document last updated on Sat 2005-NOV-19
 725