• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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é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.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