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