Blame view

Documentation/kernel-docs.txt 33.1 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1

86aae08fa   James Nelson   Documentation/ker...
2
3
4
5
6
      Index of Documentation for People Interested in Writing and/or
  
                     Understanding the Linux Kernel.
  
            Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  /*
   * The latest version of this document may be found at:
   *   http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
   */
  
     The need for a document like this one became apparent in the
     linux-kernel mailing list as the same questions, asking for pointers
     to information, appeared again and again.
     
     Fortunately, as more and more people get to GNU/Linux, more and more
     get interested in the Kernel. But reading the sources is not always
     enough. It is easy to understand the code, but miss the concepts, the
     philosophy and design decisions behind this code.
     
     Unfortunately, not many documents are available for beginners to
     start. And, even if they exist, there was no "well-known" place which
     kept track of them. These lines try to cover this lack. All documents
     available on line known by the author are listed, while some reference
     books are also mentioned.
     
     PLEASE, if you know any paper not listed here or write a new document,
     send me an e-mail, and I'll include a reference to it here. Any
     corrections, ideas or comments are also welcomed.
     
     The papers that follow are listed in no particular order. All are
     cataloged with the following fields: the document's "Title", the
     "Author"/s, the "URL" where they can be found, some "Keywords" helpful
     when searching for specific topics, and a brief "Description" of the
     Document.
     
     Enjoy!
     
       ON-LINE DOCS:
         
       * Title: "Linux Device Drivers, Third Edition"
         Author: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
         URL: http://lwn.net/Kernel/LDD3/
         Description: A 600-page book covering the (2.6.10) driver
         programming API and kernel hacking in general.  Available under the
         Creative Commons Attribution-ShareAlike 2.0 license.
  
       * Title: "The Linux Kernel"
         Author: David A. Rusling.
         URL: http://www.tldp.org/LDP/tlk/tlk.html
         Keywords: everything!, book.
         Description: On line, 200 pages book describing most aspects of
         the Linux Kernel. Probably, the first reference for beginners.
         Lots of illustrations explaining data structures use and
         relationships in the purest Richard W. Stevens' style. Contents:
         "1.-Hardware Basics, 2.-Software Basics, 3.-Memory Management,
         4.-Processes, 5.-Interprocess Communication Mechanisms, 6.-PCI,
         7.-Interrupts and Interrupt Handling, 8.-Device Drivers, 9.-The
         File system, 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules,
         13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
         Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
         General Public License, Glossary". In short: a must have.
86aae08fa   James Nelson   Documentation/ker...
63
64
65
66
67
68
69
70
71
72
73
  
       * Title: "Linux Device Drivers, 2nd Edition"
         Author: Alessandro Rubini and Jonathan Corbet.
         URL: http://www.xml.com/ldd/chapter/book/index.html
         Keywords: device drivers, modules, debugging, memory, hardware,
         interrupt handling, char drivers, block drivers, kmod, mmap, DMA,
         buses.
         Description: O'Reilly's popular book, now also on-line under the
         GNU Free Documentation License.
         Notes: You can also buy it in paper-form from O'Reilly. See below
         under BOOKS (Not on-line).
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
74
75
       * Title: "Conceptual Architecture of the Linux Kernel"
         Author: Ivan T. Bowman.
0ea6e6112   Justin P. Mattock   Documentation: up...
76
         URL: http://plg.uwaterloo.ca/
01dd2fbf0   Matt LaPlante   typo fixes
77
         Keywords: conceptual software architecture, extracted design,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
78
         reverse engineering, system structure.
01dd2fbf0   Matt LaPlante   typo fixes
79
         Description: Conceptual software architecture of the Linux kernel,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
80
81
         automatically extracted from the source code. Very detailed. Good
         figures. Gives good overall kernel understanding.
86aae08fa   James Nelson   Documentation/ker...
82

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
84
       * Title: "Concrete Architecture of the Linux Kernel"
         Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
0ea6e6112   Justin P. Mattock   Documentation: up...
85
         URL: http://plg.uwaterloo.ca/
86aae08fa   James Nelson   Documentation/ker...
86
         Keywords: concrete architecture, extracted design, reverse
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
87
         engineering, system structure, dependencies.
86aae08fa   James Nelson   Documentation/ker...
88
         Description: Concrete architecture of the Linux kernel,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
89
90
91
         automatically extracted from the source code. Very detailed. Good
         figures. Gives good overall kernel understanding. This papers
         focus on lower details than its predecessor (files, variables...).
86aae08fa   James Nelson   Documentation/ker...
92

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
93
94
95
       * Title: "Linux as a Case Study: Its Extracted Software
         Architecture"
         Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
0ea6e6112   Justin P. Mattock   Documentation: up...
96
         URL: http://plg.uwaterloo.ca/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
97
98
99
100
101
         Keywords: software architecture, architecture recovery,
         redocumentation.
         Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
         1999. A mixture of the previous two documents from the same
         author.
86aae08fa   James Nelson   Documentation/ker...
102

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
103
104
       * Title: "Overview of the Virtual File System"
         Author: Richard Gooch.
0ea6e6112   Justin P. Mattock   Documentation: up...
105
         URL: http://www.mjmwired.net/kernel/Documentation/filesystems/vfs.txt
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
106
107
108
109
110
111
         Keywords: VFS, File System, mounting filesystems, opening files,
         dentries, dcache.
         Description: Brief introduction to the Linux Virtual File System.
         What is it, how it works, operations taken when opening a file or
         mounting a file system and description of important data
         structures explaining the purpose of each of their entries.
86aae08fa   James Nelson   Documentation/ker...
112

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
113
114
       * Title: "The Linux RAID-1, 4, 5 Code"
         Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
86aae08fa   James Nelson   Documentation/ker...
115
         URL: http://www.linuxjournal.com/article.php?sid=2391
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
116
         Keywords: RAID, MD driver.
a33f32244   Francis Galiegue   Documentation/: i...
117
         Description: Linux Journal Kernel Korner article. Here is its
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
118
119
120
121
         abstract: "A description of the implementation of the RAID-1,
         RAID-4 and RAID-5 personalities of the MD device driver in the
         Linux kernel, providing users with high performance and reliable,
         secondary-storage capability using software".
86aae08fa   James Nelson   Documentation/ker...
122

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
123
124
       * Title: "Dynamic Kernels: Modularized Device Drivers"
         Author: Alessandro Rubini.
86aae08fa   James Nelson   Documentation/ker...
125
         URL: http://www.linuxjournal.com/article.php?sid=1219
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
126
127
         Keywords: device driver, module, loading/unloading modules,
         allocating resources.
a33f32244   Francis Galiegue   Documentation/: i...
128
         Description: Linux Journal Kernel Korner article. Here is its
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
129
130
131
132
133
134
         abstract: "This is the first of a series of four articles
         co-authored by Alessandro Rubini and Georg Zezchwitz which present
         a practical approach to writing Linux device drivers as kernel
         loadable modules. This installment presents an introduction to the
         topic, preparing the reader to understand next month's
         installment".
86aae08fa   James Nelson   Documentation/ker...
135

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
136
137
       * Title: "Dynamic Kernels: Discovery"
         Author: Alessandro Rubini.
86aae08fa   James Nelson   Documentation/ker...
138
         URL: http://www.linuxjournal.com/article.php?sid=1220
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
139
140
141
         Keywords: character driver, init_module, clean_up module,
         autodetection, mayor number, minor number, file operations,
         open(), close().
a33f32244   Francis Galiegue   Documentation/: i...
142
         Description: Linux Journal Kernel Korner article. Here is its
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
143
144
145
146
         abstract: "This article, the second of four, introduces part of
         the actual code to create custom module implementing a character
         device driver. It describes the code for module initialization and
         cleanup, as well as the open() and close() system calls".
86aae08fa   James Nelson   Documentation/ker...
147

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
148
149
       * Title: "The Devil's in the Details"
         Author: Georg v. Zezschwitz and Alessandro Rubini.
86aae08fa   James Nelson   Documentation/ker...
150
         URL: http://www.linuxjournal.com/article.php?sid=1221
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
151
152
         Keywords: read(), write(), select(), ioctl(), blocking/non
         blocking mode, interrupt handler.
a33f32244   Francis Galiegue   Documentation/: i...
153
         Description: Linux Journal Kernel Korner article. Here is its
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
154
155
156
         abstract: "This article, the third of four on writing character
         device drivers, introduces concepts of reading, writing, and using
         ioctl-calls".
86aae08fa   James Nelson   Documentation/ker...
157

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
158
159
       * Title: "Dissecting Interrupts and Browsing DMA"
         Author: Alessandro Rubini and Georg v. Zezschwitz.
86aae08fa   James Nelson   Documentation/ker...
160
         URL: http://www.linuxjournal.com/article.php?sid=1222
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
161
         Keywords: interrupts, irqs, DMA, bottom halves, task queues.
a33f32244   Francis Galiegue   Documentation/: i...
162
         Description: Linux Journal Kernel Korner article. Here is its
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
163
164
165
166
167
168
169
170
         abstract: "This is the fourth in a series of articles about
         writing character device drivers as loadable kernel modules. This
         month, we further investigate the field of interrupt handling.
         Though it is conceptually simple, practical limitations and
         constraints make this an ``interesting'' part of device driver
         writing, and several different facilities have been provided for
         different situations. We also investigate the complex topic of
         DMA".
86aae08fa   James Nelson   Documentation/ker...
171

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
172
173
       * Title: "Device Drivers Concluded"
         Author: Georg v. Zezschwitz.
86aae08fa   James Nelson   Documentation/ker...
174
         URL: http://www.linuxjournal.com/article.php?sid=1287
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
175
176
177
178
179
180
181
182
         Keywords: address spaces, pages, pagination, page management,
         demand loading, swapping, memory protection, memory mapping, mmap,
         virtual memory areas (VMAs), vremap, PCI.
         Description: Finally, the above turned out into a five articles
         series. This latest one's introduction reads: "This is the last of
         five articles about character device drivers. In this final
         section, Georg deals with memory mapping devices, beginning with
         an overall description of the Linux memory management concepts".
86aae08fa   James Nelson   Documentation/ker...
183

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
184
185
       * Title: "Network Buffers And Memory Management"
         Author: Alan Cox.
86aae08fa   James Nelson   Documentation/ker...
186
         URL: http://www.linuxjournal.com/article.php?sid=1312
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
187
188
189
190
191
192
193
194
195
196
         Keywords: sk_buffs, network devices, protocol/link layer
         variables, network devices flags, transmit, receive,
         configuration, multicast.
         Description: Linux Journal Kernel Korner. Here is the abstract:
         "Writing a network device driver for Linux is fundamentally
         simple---most of the complexity (other than talking to the
         hardware) involves managing network packets in memory".
         
       * Title: "Writing Linux Device Drivers"
         Author: Michael K. Johnson.
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
197
         URL: http://users.evitech.fi/~tk/rtos/writing_linux_device_d.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
         Keywords: files, VFS, file operations, kernel interface, character
         vs block devices, I/O access, hardware interrupts, DMA, access to
         user memory, memory allocation, timers.
         Description: Introductory 50-minutes (sic) tutorial on writing
         device drivers. 12 pages written by the same author of the "Kernel
         Hackers' Guide" which give a very good overview of the topic.
         
       * Title: "The Venus kernel interface"
         Author: Peter J. Braam.
         URL:
         http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
         Keywords: coda, filesystem, venus, cache manager.
         Description: "This document describes the communication between
         Venus and kernel level file system code needed for the operation
         of the Coda filesystem. This version document is meant to describe
         the current interface (version 1.0) as well as improvements we
         envisage".
86aae08fa   James Nelson   Documentation/ker...
215

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
216
217
218
       * Title: "Programming PCI-Devices under Linux"
         Author: Claus Schroeter.
         URL:
86aae08fa   James Nelson   Documentation/ker...
219
         ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps.gz
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
220
221
222
223
224
         Keywords: PCI, device, busmastering.
         Description: 6 pages tutorial on PCI programming under Linux.
         Gives the basic concepts on the architecture of the PCI subsystem,
         as long as basic functions and macros to read/write the devices
         and perform busmastering.
86aae08fa   James Nelson   Documentation/ker...
225

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
226
227
228
       * Title: "Writing Character Device Driver for Linux"
         Author: R. Baruch and C. Schroeter.
         URL:
86aae08fa   James Nelson   Documentation/ker...
229
         ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers.ps.gz
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
230
231
232
233
         Keywords: character device drivers, I/O, signals, DMA, accessing
         ports in user space, kernel environment.
         Description: 68 pages paper on writing character drivers. A little
         bit old (1.993, 1.994) although still useful.
86aae08fa   James Nelson   Documentation/ker...
234

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
235
236
       * Title: "Design and Implementation of the Second Extended
         Filesystem"
be2a608bd   John Anthony Kazos Jr   documentation: co...
237
         Author: Rémy Card, Theodore Ts'o, Stephen Tweedie.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
238
239
240
241
242
243
244
245
246
247
         URL: http://web.mit.edu/tytso/www/linux/ext2intro.html
         Keywords: ext2, linux fs history, inode, directory, link, devices,
         VFS, physical structure, performance, benchmarks, ext2fs library,
         ext2fs tools, e2fsck.
         Description: Paper written by three of the top ext2 hackers.
         Covers Linux filesystems history, ext2 motivation, ext2 features,
         design, physical structure on disk, performance, benchmarks,
         e2fsck's passes description... A must read!
         Notes: This paper was first published in the Proceedings of the
         First Dutch International Symposium on Linux, ISBN 90-367-0385-9.
86aae08fa   James Nelson   Documentation/ker...
248

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
249
250
       * Title: "Analysis of the Ext2fs structure"
         Author: Louis-Dominique Dubeau.
86aae08fa   James Nelson   Documentation/ker...
251
         URL: http://www.nondot.org/sabre/os/files/FileSystems/ext2fs/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
252
253
254
         Keywords: ext2, filesystem, ext2fs.
         Description: Description of ext2's blocks, directories, inodes,
         bitmaps, invariants...
86aae08fa   James Nelson   Documentation/ker...
255

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
256
257
258
259
260
261
262
263
       * Title: "Journaling the Linux ext2fs Filesystem"
         Author: Stephen C. Tweedie.
         URL:
         ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz
         Keywords: ext3, journaling.
         Description: Excellent 8-pages paper explaining the journaling
         capabilities added to ext2 by the author, showing different
         problems faced and the alternatives chosen.
86aae08fa   James Nelson   Documentation/ker...
264

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
265
266
267
       * Title: "Kernel API changes from 2.0 to 2.2"
         Author: Richard Gooch.
         URL:
0ea6e6112   Justin P. Mattock   Documentation: up...
268
         http://www.linuxhq.com/guides/LKMPG/node28.html 
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
269
270
271
         Keywords: 2.2, changes.
         Description: Kernel functions/structures/variables which changed
         from 2.0.x to 2.2.x.
86aae08fa   James Nelson   Documentation/ker...
272

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
273
274
       * Title: "Kernel API changes from 2.2 to 2.4"
         Author: Richard Gooch.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
275
276
277
278
279
280
         Keywords: 2.4, changes.
         Description: Kernel functions/structures/variables which changed
         from 2.2.x to 2.4.x.
         
       * Title: "Linux Kernel Module Programming Guide"
         Author: Ori Pomerantz.
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
281
         URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
282
283
284
285
286
         Keywords: modules, GPL book, /proc, ioctls, system calls,
         interrupt handlers .
         Description: Very nice 92 pages GPL book on the topic of modules
         programming. Lots of examples.
         
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
287
288
       * Title: "I/O Event Handling Under Linux"
         Author: Richard Gooch.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
289
290
291
292
293
294
295
296
297
298
299
300
         Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
         event queues.
         Description: From the Introduction: "I/O Event handling is about
         how your Operating System allows you to manage a large number of
         open files (file descriptors in UNIX/POSIX, or FDs) in your
         application. You want the OS to notify you when FDs become active
         (have data ready to be read or are ready for writing). Ideally you
         want a mechanism that is scalable. This means a large number of
         inactive FDs cost very little in memory and CPU time to manage".
         
       * Title: "The Kernel Hacking HOWTO"
         Author: Various Talented People, and Rusty.
395cf9691   Paul Bolle   doc: fix broken r...
301
         Location: in kernel tree, Documentation/DocBook/kernel-hacking.tmpl
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
302
         (must be built as "make {htmldocs | psdocs | pdfdocs})
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
303
304
305
306
307
308
309
310
311
312
313
314
315
         Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
         symbols, return conventions.
         Description: From the Introduction: "Please understand that I
         never wanted to write this document, being grossly underqualified,
         but I always wanted to read it, and this was the only way. I
         simply explain some best practices, and give reading entry-points
         into the kernel sources. I avoid implementation details: that's
         what the code is for, and I ignore whole tracts of useful
         routines. This document assumes familiarity with C, and an
         understanding of what the kernel is, and how it is used. It was
         originally written for the 2.3 kernels, but nearly all of it
         applies to 2.2 too; 2.0 is slightly different".
         
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
316
317
318
       * Title: "Writing an ALSA Driver"
         Author: Takashi Iwai <tiwai@suse.de>
         URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
319
320
         Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
         Description: Advanced Linux Sound Architecture for developers,
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
321
322
         both at kernel and user-level sides. ALSA is the Linux kernel
         sound architecture in the 2.6 kernel version.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
         
       * Title: "Programming Guide for Linux USB Device Drivers"
         Author: Detlef Fliegl.
         URL: http://usb.in.tum.de/usbdoc/
         Keywords: USB, universal serial bus.
         Description: A must-read. From the Preface: "This document should
         give detailed information about the current state of the USB
         subsystem and its API for USB device drivers. The first section
         will deal with the basics of USB devices. You will learn about
         different types of devices and their properties. Going into detail
         you will see how USB devices communicate on the bus. The second
         section gives an overview of the Linux USB subsystem [2] and the
         device driver framework. Then the API and its data structures will
         be explained step by step. The last section of this document
         contains a reference of all API calls and their return codes".
         Notes: Beware: the main page states: "This document may not be
         published, printed or used in excerpts without explicit permission
         of the author". Fortunately, it may still be read...
86aae08fa   James Nelson   Documentation/ker...
341

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
342
       * Title: "Linux Kernel Mailing List Glossary"
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
343
344
         Author: various
         URL: http://kernelnewbies.org/glossary/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
345
346
347
348
349
350
351
         Keywords: glossary, terms, linux-kernel.
         Description: From the introduction: "This glossary is intended as
         a brief description of some of the acronyms and terms you may hear
         during discussion of the Linux kernel".
         
       * Title: "Linux Kernel Locking HOWTO"
         Author: Various Talented People, and Rusty.
395cf9691   Paul Bolle   doc: fix broken r...
352
         Location: in kernel tree, Documentation/DocBook/kernel-locking.tmpl
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
353
         (must be built as "make {htmldocs | psdocs | pdfdocs})
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
354
355
356
357
358
359
360
361
362
         Keywords: locks, locking, spinlock, semaphore, atomic, race
         condition, bottom halves, tasklets, softirqs.
         Description: The title says it all: document describing the
         locking system in the Linux Kernel either in uniprocessor or SMP
         systems.
         Notes: "It was originally written for the later (>2.3.47) 2.3
         kernels, but most of it applies to 2.2 too; 2.0 is slightly
         different". Freely redistributable under the conditions of the GNU
         General Public License.
86aae08fa   James Nelson   Documentation/ker...
363
364
365
366
367
368
369
370
371
372
  
       * Title: "Global spinlock list and usage"
         Author: Rick Lindsley.
         URL: http://lse.sourceforge.net/lockhier/global-spin-lock
         Keywords: spinlock.
         Description: This is an attempt to document both the existence and
         usage of the spinlocks in the Linux 2.4.5 kernel. Comprehensive
         list of spinlocks showing when they are used, which functions
         access them, how each lock is acquired, under what conditions it
         is held, whether interrupts can occur or not while it is held...
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
373
374
375
376
377
378
379
       * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
         Features "
         Author: Alan Cox.
         URL: http://www.linux-mag.com/1999-05/gear_01.html
         Keywords: ports, porting.
         Description: Article from Linux Magazine on porting from 2.0 to
         2.2 kernels.
86aae08fa   James Nelson   Documentation/ker...
380

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
381
382
       * Title: "Porting Device Drivers To Linux 2.2: part II"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
383
         URL: http://www.linux-mag.com/id/238 
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
384
385
         Keywords: ports, porting.
         Description: Second part on porting from 2.0 to 2.2 kernels.
86aae08fa   James Nelson   Documentation/ker...
386

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
387
388
389
       * Title: "How To Make Sure Your Driver Will Work On The Power
         Macintosh"
         Author: Paul Mackerras.
0ea6e6112   Justin P. Mattock   Documentation: up...
390
         URL: http://www.linux-mag.com/id/261
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
391
392
         Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
393

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
394
395
       * Title: "An Introduction to SCSI Drivers"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
396
         URL: http://www.linux-mag.com/id/284
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
397
398
         Keywords: SCSI, device, driver.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
399

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
400
401
       * Title: "Advanced SCSI Drivers And Other Tales"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
402
         URL: http://www.linux-mag.com/id/307
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
403
404
         Keywords: SCSI, device, driver, advanced.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
405

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
406
407
       * Title: "Writing Linux Mouse Drivers"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
408
         URL: http://www.linux-mag.com/id/330
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
409
410
         Keywords: mouse, driver, gpm.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
411

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
412
413
       * Title: "More on Mouse Drivers"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
414
         URL: http://www.linux-mag.com/id/356
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
415
416
         Keywords: mouse, driver, gpm, races, asynchronous I/O.
         Description: The title still says it all.
86aae08fa   James Nelson   Documentation/ker...
417

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
418
419
       * Title: "Writing Video4linux Radio Driver"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
420
         URL: http://www.linux-mag.com/id/381
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
421
422
         Keywords: video4linux, driver, radio, radio devices.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
423

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
424
425
       * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
426
         URL: http://www.linux-mag.com/id/406
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
427
428
429
         Keywords: video4linux, driver, video capture, capture devices,
         camera driver.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
430

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
431
432
       * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
433
         URL: http://www.linux-mag.com/id/429
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
434
435
436
         Keywords: video4linux, driver, video capture, capture devices,
         camera driver, control, query capabilities, capability, facility.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
437

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
438
439
       * Title: "PCI Management in Linux 2.2"
         Author: Alan Cox.
0ea6e6112   Justin P. Mattock   Documentation: up...
440
         URL: http://www.linux-mag.com/id/452
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
441
442
         Keywords: PCI, bus, bus-mastering.
         Description: The title says it all.
86aae08fa   James Nelson   Documentation/ker...
443

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
444
445
446
447
448
449
450
       * Title: "Linux 2.4 Kernel Internals"
         Author: Tigran Aivazian and Christoph Hellwig.
         URL: http://www.moses.uklinux.net/patches/lki.html
         Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
         Description: A little book used for a short training course.
         Covers building the kernel image, booting (including SMP bootup),
         process management, VFS and more.
86aae08fa   James Nelson   Documentation/ker...
451

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
452
453
454
       * Title: "Linux IP Networking. A Guide to the Implementation and
         Modification of the Linux Protocol Stack."
         Author: Glenn Herrin.
86aae08fa   James Nelson   Documentation/ker...
455
         URL: http://www.cs.unh.edu/cnrg/gherrin
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
456
457
458
459
460
461
462
463
464
465
466
467
468
469
         Keywords: network, networking, protocol, IP, UDP, TCP, connection,
         socket, receiving, transmitting, forwarding, routing, packets,
         modules, /proc, sk_buff, FIB, tags.
         Description: Excellent paper devoted to the Linux IP Networking,
         explaining anything from the kernel's to the user space
         configuration tools' code. Very good to get a general overview of
         the kernel networking implementation and understand all steps
         packets follow from the time they are received at the network
         device till they are delivered to applications. The studied kernel
         code is from 2.2.14 version. Provides code for a working packet
         dropper example.
         
       * Title: "Get those boards talking under Linux."
         Author: Alex Ivchenko.
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
470
         URL: http://www.edn.com/article/CA46968.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
471
472
473
474
475
476
477
         Keywords: data-acquisition boards, drivers, modules, interrupts,
         memory allocation.
         Description: Article written for people wishing to make their data
         acquisition boards work on their GNU/Linux machines. Gives a basic
         overview on writing drivers, from the naming of functions to
         interrupt handling.
         Notes: Two-parts article. Part II is at
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
478
         URL: http://www.edn.com/article/CA46998.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
479
480
481
482
483
484
485
486
487
         
       * Title: "Linux PCMCIA Programmer's Guide"
         Author: David Hinds.
         URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
         Keywords: PCMCIA.
         Description: "This document describes how to write kernel device
         drivers for the Linux PCMCIA Card Services interface. It also
         describes how to write user-mode utilities for communicating with
         Card Services.
86aae08fa   James Nelson   Documentation/ker...
488

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
489
490
491
492
493
494
495
496
497
498
       * Title: "The Linux Kernel NFSD Implementation"
         Author: Neil Brown.
         URL:
         http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
         Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
         Description: The title says it all.
         Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
         
       * Title: "A Linux vm README"
         Author: Kanoj Sarcar.
0ea6e6112   Justin P. Mattock   Documentation: up...
499
         URL: http://kos.enix.org/pub/linux-vmm.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
500
501
502
503
504
505
506
507
508
         Keywords: virtual memory, mm, pgd, vma, page, page flags, page
         cache, swap cache, kswapd.
         Description: Telegraphic, short descriptions and definitions
         relating the Linux virtual memory implementation.
         
       * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
         definitive guide for hackers, virus coders and system
         administrators."
         Author: pragmatic/THC.
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
509
         URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
510
511
512
513
514
515
516
         Keywords: syscalls, intercept, hide, abuse, symbol table.
         Description: Interesting paper on how to abuse the Linux kernel in
         order to intercept and modify syscalls, make
         files/directories/processes invisible, become root, hijack ttys,
         write kernel modules based virus... and solutions for admins to
         avoid all those abuses.
         Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
517
         kernels.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
         
       BOOKS: (Not on-line)
     
       * Title: "Linux Device Drivers"
         Author: Alessandro Rubini.
         Publisher: O'Reilly & Associates.
         Date: 1998.
         Pages: 439.
         ISBN: 1-56592-292-1
         
       * Title: "Linux Device Drivers, 2nd Edition"
         Author: Alessandro Rubini and Jonathan Corbet.
         Publisher: O'Reilly & Associates.
         Date: 2001.
         Pages: 586.
         ISBN: 0-59600-008-1
         Notes: Further information in
         http://www.oreilly.com/catalog/linuxdrive2/
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
536

d5ba92b79   Nicolas Kaiser   Documentation: up...
537
       * Title: "Linux Device Drivers, 3rd Edition"
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
538
539
540
541
542
543
544
545
         Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
         Publisher: O'Reilly & Associates.
         Date: 2005.
         Pages: 636.
         ISBN: 0-596-00590-3
         Notes: Further information in
         http://www.oreilly.com/catalog/linuxdrive3/
         PDF format, URL: http://lwn.net/Kernel/LDD3/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
       * Title: "Linux Kernel Internals"
         Author: Michael Beck.
         Publisher: Addison-Wesley.
         Date: 1997.
         ISBN: 0-201-33143-8 (second edition)
         
       * Title: "The Design of the UNIX Operating System"
         Author: Maurice J. Bach.
         Publisher: Prentice Hall.
         Date: 1986.
         Pages: 471.
         ISBN: 0-13-201757-1
         
       * Title: "The Design and Implementation of the 4.3 BSD UNIX
         Operating System"
         Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
         Karels, John S. Quarterman.
         Publisher: Addison-Wesley.
         Date: 1989 (reprinted with corrections on October, 1990).
         ISBN: 0-201-06196-1
         
       * Title: "The Design and Implementation of the 4.4 BSD UNIX
         Operating System"
         Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
         John S. Quarterman.
         Publisher: Addison-Wesley.
         Date: 1996.
         ISBN: 0-201-54979-4
         
       * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
         noyau"
         Author: Remy Card, Eric Dumas, Franck Mevel.
         Publisher: Eyrolles.
         Date: 1997.
         Pages: 520.
         ISBN: 2-212-08932-5
         Notes: French.
86aae08fa   James Nelson   Documentation/ker...
583

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
584
585
586
587
588
589
       * Title: "Unix internals -- the new frontiers"
         Author: Uresh Vahalia.
         Publisher: Prentice Hall.
         Date: 1996.
         Pages: 600.
         ISBN: 0-13-101908-2
86aae08fa   James Nelson   Documentation/ker...
590

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
591
592
593
594
595
596
597
598
       * Title: "Programming for the real world - POSIX.4"
         Author: Bill O. Gallmeister.
         Publisher: O'Reilly & Associates, Inc..
         Date: 1995.
         Pages: ???.
         ISBN: I-56592-074-0
         Notes: Though not being directly about Linux, Linux aims to be
         POSIX. Good reference.
86aae08fa   James Nelson   Documentation/ker...
599
600
  
       * Title:  "UNIX  Systems  for  Modern Architectures: Symmetric
d5ba92b79   Nicolas Kaiser   Documentation: up...
601
         Multiprocessing and Caching for Kernel Programmers"
86aae08fa   James Nelson   Documentation/ker...
602
603
604
605
606
         Author: Curt Schimmel.
         Publisher: Addison Wesley.
         Date: June, 1994.
         Pages: 432.
         ISBN: 0-201-63338-8
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
607
       MISCELLANEOUS:
86aae08fa   James Nelson   Documentation/ker...
608

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
609
610
611
612
613
614
615
616
       * Name: linux/Documentation
         Author: Many.
         URL: Just look inside your kernel sources.
         Keywords: anything, DocBook.
         Description: Documentation that comes with the kernel sources,
         inside the Documentation directory. Some pages from this document
         (including this document itself) have been moved there, and might
         be more up to date than the web version.
86aae08fa   James Nelson   Documentation/ker...
617

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
618
619
       * Name: "Linux Kernel Source Reference"
         Author: Thomas Graichen.
0ea6e6112   Justin P. Mattock   Documentation: up...
620
         URL: http://marc.info/?l=linux-kernel&m=96446640102205&w=4
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
621
622
623
624
625
626
         Keywords: CVS, web, cvsweb, browsing source code.
         Description: Web interface to a CVS server with the kernel
         sources. "Here you can have a look at any file of the Linux kernel
         sources of any version starting from 1.0 up to the (daily updated)
         current version available. Also you can check the differences
         between two versions of a file".
86aae08fa   James Nelson   Documentation/ker...
627

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
628
629
630
631
632
633
       * Name: "Cross-Referencing Linux"
         URL: http://lxr.linux.no/source/
         Keywords: Browsing source code.
         Description: Another web-based Linux kernel source code browser.
         Lots of cross references to variables and functions. You can see
         where they are defined and where they are used.
86aae08fa   James Nelson   Documentation/ker...
634

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
635
636
637
638
639
640
       * Name: "Linux Weekly News"
         URL: http://lwn.net
         Keywords: latest kernel news.
         Description: The title says it all. There's a fixed kernel section
         summarizing developers' work, bug fixes, new features and versions
         produced during the week. Published every Thursday.
86aae08fa   James Nelson   Documentation/ker...
641

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
642
       * Name: "Kernel Traffic"
0ea6e6112   Justin P. Mattock   Documentation: up...
643
         URL: http://kt.earth.li/kernel-traffic/index.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
644
645
646
         Keywords: linux-kernel mailing list, weekly kernel news.
         Description: Weekly newsletter covering the most relevant
         discussions of the linux-kernel mailing list.
86aae08fa   James Nelson   Documentation/ker...
647

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
648
649
650
651
652
653
654
       * Name: "CuTTiNG.eDGe.LiNuX"
         URL: http://edge.kernelnotes.org
         Keywords: changelist.
         Description: Site which provides the changelist for every kernel
         release. What's new, what's better, what's changed. Myrdraal reads
         the patches and describes them. Pointers to the patches are there,
         too.
86aae08fa   James Nelson   Documentation/ker...
655

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
656
657
658
659
660
661
662
663
664
       * Name: "New linux-kernel Mailing List FAQ"
         URL: http://www.tux.org/lkml/
         Keywords: linux-kernel mailing list FAQ.
         Description: linux-kernel is a mailing list for developers to
         communicate. This FAQ builds on the previous linux-kernel mailing
         list FAQ maintained by Frohwalt Egerer, who no longer maintains
         it. Read it to see how to join the mailing list. Dozens of
         interesting questions regarding the list, Linux, developers (who
         is ...?), terms (what is...?) are answered here too. Just read it.
86aae08fa   James Nelson   Documentation/ker...
665

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
666
667
668
669
670
671
672
       * Name: "Linux Virtual File System"
         Author: Peter J. Braam.
         URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
         Keywords: slides, VFS, inode, superblock, dentry, dcache.
         Description: Set of slides, presumably from a presentation on the
         Linux VFS layer. Covers version 2.1.x, with dentries and the
         dcache.
86aae08fa   James Nelson   Documentation/ker...
673

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
674
675
       * Name: "Gary's Encyclopedia - The Linux Kernel"
         Author: Gary (I suppose...).
34397892a   Paul Jackson   doc: update to UR...
676
677
         URL: http://slencyclopedia.berlios.de/index.html
         Keywords: linux, community, everything!
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
678
679
680
681
         Description: Gary's Encyclopedia exists to allow the rapid finding
         of documentation and other information of interest to GNU/Linux
         users. It has about 4000 links to external pages in 150 major
         categories. This link is for kernel-specific links, documents,
34397892a   Paul Jackson   doc: update to UR...
682
683
         sites...  This list is now hosted by developer.Berlios.de,
         but seems not to have been updated since sometime in 1999.
86aae08fa   James Nelson   Documentation/ker...
684

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
685
686
687
688
689
690
691
692
       * Name: "The home page of Linux-MM"
         Author: The Linux-MM team.
         URL: http://linux-mm.org/
         Keywords: memory management, Linux-MM, mm patches, TODO, docs,
         mailing list.
         Description: Site devoted to Linux Memory Management development.
         Memory related patches, HOWTOs, links, mm developers... Don't miss
         it if you are interested in memory management development!
86aae08fa   James Nelson   Documentation/ker...
693

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
694
695
696
697
698
699
700
701
702
703
704
705
706
707
       * Name: "Kernel Newbies IRC Channel"
         URL: http://www.kernelnewbies.org
         Keywords: IRC, newbies, channel, asking doubts.
         Description: #kernelnewbies on irc.openprojects.net. From the web
         page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
         kernel hacker. The audience mostly consists of people who are
         learning about the kernel, working on kernel projects or
         professional kernel hackers that want to help less seasoned kernel
         people. [...] #kernelnewbies is on the Open Projects IRC Network,
         try irc.openprojects.net or irc.<country>.openprojects.net as your
         server and then /join #kernelnewbies". It also hosts articles,
         documents, FAQs...
         
       * Name: "linux-kernel mailing list archives and search engines"
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
708
         URL: http://vger.kernel.org/vger-lists.html
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
709
         URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
710
711
712
713
         URL: http://marc.theaimsgroup.com/?l=linux-kernel
         URL: http://groups.google.com/group/mlist.linux.kernel
         URL: http://www.cs.helsinki.fi/linux/linux-kernel/
         URL: http://www.lib.uaa.alaska.edu/linux-kernel/
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
714
715
716
717
718
         Keywords: linux-kernel, archives, search.
         Description: Some of the linux-kernel mailing list archivers. If
         you have a better/another one, please let me know.
       _________________________________________________________________
     
98766fbe6   Randy Dunlap   [PATCH] kernel Do...
719
     Document last updated on Sat 2005-NOV-19