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