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/
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/
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 Source Driver"
624       URL: http://lsd.linux.cz
625       Keywords: Browsing source code.
626       Description: "Linux Source Driver (LSD) is an application, which
627       can make browsing source codes of Linux kernel easier than you can
628       imagine. You can select between multiple versions of kernel (e.g.
629       0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
630       you can search Linux kernel (fulltext, macros, types, functions
631       and variables) and LSD can generate patches for you on the fly
632       (files, directories or kernel)".
633
634     * Name: "Linux Kernel Source Reference"
635       Author: Thomas Graichen.
636       URL: http://marc.info/?l=linux-kernel&m=96446640102205&w=4
637       Keywords: CVS, web, cvsweb, browsing source code.
638       Description: Web interface to a CVS server with the kernel
639       sources. "Here you can have a look at any file of the Linux kernel
640       sources of any version starting from 1.0 up to the (daily updated)
641       current version available. Also you can check the differences
642       between two versions of a file".
643
644     * Name: "Cross-Referencing Linux"
645       URL: http://lxr.linux.no/source/
646       Keywords: Browsing source code.
647       Description: Another web-based Linux kernel source code browser.
648       Lots of cross references to variables and functions. You can see
649       where they are defined and where they are used.
650
651     * Name: "Linux Weekly News"
652       URL: http://lwn.net
653       Keywords: latest kernel news.
654       Description: The title says it all. There's a fixed kernel section
655       summarizing developers' work, bug fixes, new features and versions
656       produced during the week. Published every Thursday.
657
658     * Name: "Kernel Traffic"
659       URL: http://kt.earth.li/kernel-traffic/index.html
660       Keywords: linux-kernel mailing list, weekly kernel news.
661       Description: Weekly newsletter covering the most relevant
662       discussions of the linux-kernel mailing list.
663
664     * Name: "CuTTiNG.eDGe.LiNuX"
665       URL: http://edge.kernelnotes.org
666       Keywords: changelist.
667       Description: Site which provides the changelist for every kernel
668       release. What's new, what's better, what's changed. Myrdraal reads
669       the patches and describes them. Pointers to the patches are there,
670       too.
671
672     * Name: "New linux-kernel Mailing List FAQ"
673       URL: http://www.tux.org/lkml/
674       Keywords: linux-kernel mailing list FAQ.
675       Description: linux-kernel is a mailing list for developers to
676       communicate. This FAQ builds on the previous linux-kernel mailing
677       list FAQ maintained by Frohwalt Egerer, who no longer maintains
678       it. Read it to see how to join the mailing list. Dozens of
679       interesting questions regarding the list, Linux, developers (who
680       is ...?), terms (what is...?) are answered here too. Just read it.
681
682     * Name: "Linux Virtual File System"
683       Author: Peter J. Braam.
684       URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
685       Keywords: slides, VFS, inode, superblock, dentry, dcache.
686       Description: Set of slides, presumably from a presentation on the
687       Linux VFS layer. Covers version 2.1.x, with dentries and the
688       dcache.
689
690     * Name: "Gary's Encyclopedia - The Linux Kernel"
691       Author: Gary (I suppose...).
692       URL: http://slencyclopedia.berlios.de/index.html
693       Keywords: linux, community, everything!
694       Description: Gary's Encyclopedia exists to allow the rapid finding
695       of documentation and other information of interest to GNU/Linux
696       users. It has about 4000 links to external pages in 150 major
697       categories. This link is for kernel-specific links, documents,
698       sites...  This list is now hosted by developer.Berlios.de,
699       but seems not to have been updated since sometime in 1999.
700
701     * Name: "The home page of Linux-MM"
702       Author: The Linux-MM team.
703       URL: http://linux-mm.org/
704       Keywords: memory management, Linux-MM, mm patches, TODO, docs,
705       mailing list.
706       Description: Site devoted to Linux Memory Management development.
707       Memory related patches, HOWTOs, links, mm developers... Don't miss
708       it if you are interested in memory management development!
709
710     * Name: "Kernel Newbies IRC Channel"
711       URL: http://www.kernelnewbies.org
712       Keywords: IRC, newbies, channel, asking doubts.
713       Description: #kernelnewbies on irc.openprojects.net. From the web
714       page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
715       kernel hacker. The audience mostly consists of people who are
716       learning about the kernel, working on kernel projects or
717       professional kernel hackers that want to help less seasoned kernel
718       people. [...] #kernelnewbies is on the Open Projects IRC Network,
719       try irc.openprojects.net or irc.<country>.openprojects.net as your
720       server and then /join #kernelnewbies". It also hosts articles,
721       documents, FAQs...
722
723     * Name: "linux-kernel mailing list archives and search engines"
724       URL: http://vger.kernel.org/vger-lists.html
725       URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
726       URL: http://marc.theaimsgroup.com/?l=linux-kernel
727       URL: http://groups.google.com/group/mlist.linux.kernel
728       URL: http://www.cs.helsinki.fi/linux/linux-kernel/
729       URL: http://www.lib.uaa.alaska.edu/linux-kernel/
730       Keywords: linux-kernel, archives, search.
731       Description: Some of the linux-kernel mailing list archivers. If
732       you have a better/another one, please let me know.
733     _________________________________________________________________
734
735   Document last updated on Sat 2005-NOV-19
736