3 INDEX OF DOCUMENTATION FOR PEOPLE INTERESTED IN WRITING AND/OR UNDERSTANDING
6 Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
10 * The latest version of this document may be found at:
11 * http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
14 The need for a document like this one became apparent in the
15 linux-kernel mailing list as the same questions, asking for pointers
16 to information, appeared again and again.
18 Fortunately, as more and more people get to GNU/Linux, more and more
19 get interested in the Kernel. But reading the sources is not always
20 enough. It is easy to understand the code, but miss the concepts, the
21 philosophy and design decisions behind this code.
23 Unfortunately, not many documents are available for beginners to
24 start. And, even if they exist, there was no "well-known" place which
25 kept track of them. These lines try to cover this lack. All documents
26 available on line known by the author are listed, while some reference
27 books are also mentioned.
29 PLEASE, if you know any paper not listed here or write a new document,
30 send me an e-mail, and I'll include a reference to it here. Any
31 corrections, ideas or comments are also welcomed.
33 The papers that follow are listed in no particular order. All are
34 catalogued with the following fields: the document's "Title", the
35 "Author"/s, the "URL" where they can be found, some "Keywords"
36 helpful when searching for specific topics, and a brief "Description"
44 + Title: "The Linux Kernel"
45 Author: David A. Rusling.
46 URL: http://sunsite.unc.edu/linux/LDP/tlk/tlk.html
47 Keywords: everything!, book.
48 Description: On line, 200 pages book describing most
49 aspects of the Linux Kernel. Probably, the first reference
50 for beginners. Lots of illustrations explaining data
51 structures use and relationships in the purest Richard W.
52 Stevens' style. Contents: "1.-Hardware Basics, 2.-Software
53 Basics, 3.-Memory Management, 4.-Processes, 5.-Interprocess
54 Communication Mechanisms, 6.-PCI, 7.-Interrupts and Interrupt
55 Handling, 8.-Device Drivers, 9.-The File system,
56 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules, 13.-The
57 Linux Kernel Sources, A.-Linux Data Structures, B.-The Alpha
58 AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
59 General Public License, Glossary". In short: a must have.
61 + Title: "The Linux Kernel Hackers' Guide"
62 Author: Michael K.Johnson and others.
63 URL: http://www.redhat.com:8080/HyperNews/get/khg.html
65 Description: No more Postscript book-like version. Only
66 HTML now. Many people have contributed. The interface is
67 similar to web available mailing lists archives. You can find
68 some articles and then some mails asking questions about them
69 and/or complementing previous contributions. A little bit
70 anarchic in this aspect, but with some valuable information
73 + Title: "Tour Of the Linux Kernel Source"
75 URL: http://www.svrec.ernet.in/~vijo/tolks/tolks.html
77 Description: The name says it all. A tour of the sources,
78 describing directories, files, variables, data structures...
79 It covers general stuff, device drivers, filesystems, IPC and
82 + Title: "Overview of the Virtual File System"
83 Author: Richard Gooch.
84 URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
85 Keywords: VFS, File System, mounting filesystems, opening
87 dcache. Description: Brief introduction to the Linux
88 Virtual File System. What is it, how it works, operations
89 taken when opening a file or mounting a file system and
90 description of important data structures explaining the
91 purpose of each of their entries.
93 + Title: "The Linux RAID-1, 4, 5 Code"
94 Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
95 URL: http://www.ssc.com/lj/issue44/2391.html
96 Keywords: RAID, MD driver.
97 Description: Linux Journal Kernel Korner article. Here is
98 it's abstract: "A description of the implementation of the
99 RAID-1, RAID-4 and RAID-5 personalities of the MD device
100 driver in the Linux kernel, providing users with high
101 performance and reliable, secondary-storage capability using
104 + Title: "Dynamic Kernels: Modularized Device Drivers"
105 Author: Alessandro Rubini.
106 URL: http://www.ssc.com/lj/issue23/1219.html
107 Keywords: device driver, module, loading/unloading modules,
109 resources. Description: Linux Journal Kernel Korner
110 article. Here is it's abstract: "This is the first of a
111 series of four articles co-authored by Alessandro Rubini and
112 Georg Zezchwitz which present a practical approach to writing
113 Linux device drivers as kernel loadable modules. This
114 installment presents an introduction to the topic, preparing
115 the reader to understand next month's installment".
117 + Title: "Dynamic Kernels: Discovery"
118 Author: Alessandro Rubini.
119 URL: http://www.ssc.com/lj/issue24/kk24.html
120 Keywords: character driver, init_module, clean_up module,
122 mayor number, minor number, file operations, open(), close().
123 Description: Linux Journal Kernel Korner article. Here is
124 it's abstract: "This article, the second of four, introduces
125 part of the actual code to create custom module implementing
126 a character device driver. It describes the code for module
127 initialization and cleanup, as well as the open() and close()
130 + Title: "The Devil's in the Details"
131 Author: Georg v. Zezschwitz and Alessandro Rubini.
132 URL: http://www.ssc.com/lj/issue25/kk25.html
133 Keywords: read(), write(), select(), ioctl(), blocking/non
135 interrupt handler. Description: Linux Journal Kernel Korner
136 article. Here is it's abstract: "This article, the third of
137 four on writing character device drivers, introduces concepts
138 of reading, writing, and using ioctl-calls".
140 + Title: "Dissecting Interrupts and Browsing DMA"
141 Author: Alessandro Rubini and Georg v. Zezschwitz.
142 URL: http://www.ssc.com/lj/issue26/interrupt.html
143 Keywords: interrupts, irqs, DMA, bottom halves, task
145 Description: Linux Journal Kernel Korner article. Here is
146 it's abstract: "This is the fourth in a series of articles
147 about writing character device drivers as loadable kernel
148 modules. This month, we further investigate the field of
149 interrupt handling. Though it is conceptually simple,
150 practical limitations and constraints make this an
151 ``interesting'' part of device driver writing, and several
152 different facilities have been provided for different
153 situations. We also investigate the complex topic of DMA".
155 + Title: "Network Buffers And Memory Management"
157 URL: http://www.ssc.com/lj/issue30/kk30.html
158 Keywords: sk_buffs, network devices, protocol/link layer
160 devices flags, transmit, receive, configuration, multicast.
161 Description: Linux Journal Kernel Korner. Here is the
162 abstract: "Writing a network device driver for Linux is
163 fundamentally simple---most of the complexity (other than
164 talking to the hardware) involves managing network packets in
167 + Title: "An Introduction to the Linux 1.3.x Networking Code"
170 http://anchor.cs.binghamton.edu/courses/cs628/linux-net.html
171 Keywords: files, sk_buffs.
172 Description: A short description of files under the net/
173 directory. Each file has a one- or two-line paragraph to
174 describe it. Also, sk_buffs is explained with some
175 beautiful pictures. A little bit outdated.
177 + Title: "Linux ioctl() Primer"
180 http://anchor.cs.binghamton.edu/courses/cs628/ioctl.html
181 Keywords: ioctl, socket.
182 Description: Little description and examples on the use and
183 implementation of the ioctl() system call. A little bit
184 biased towards sockets.
186 + Title: "Writing Linux Device Drivers"
187 Author: Michael K. Johnson.
188 URL: http://www.redhat.com/~johnsonm/devices.html
189 Keywords: files, VFS, file operations, kernel interface,
191 block devices, I/O access, hardware interrupts, DMA, access
192 to user memory, memory allocation, timers. Description:
193 Introductory 50-minutes (sic) tutorial on writing device
194 drivers. 12 pages written by the same author of the "Kernel
195 Hackers' Guide" which give a very good overview of the topic.
197 + Title: "The Venus kernel interface"
198 Author: Peter J. Braam.
200 http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
201 Keywords: coda, filesystem, venus, cache manager.
202 Description: "This document describes the communication
203 between Venus and kernel level file system code needed for
204 the operation of the Coda filesystem. This version document
205 is meant to describe the current interface (version 1.0) as
206 well as improvements we envisage".
208 + Title: "Programming PCI-Devices under Linux"
209 Author: Claus Schroeter.
211 ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pc
213 Keywords: PCI, device, busmastering.
214 Description: 6 pages tutorial on PCI programming under
215 Linux. Gives the basic concepts on the architecture of the
216 PCI subsystem, as long as basic functions and macros to
217 read/write the devices and perform busmastering.
219 + Title: "Writing Character Device Driver for Linux"
220 Author: R. Baruch and C. Schroeter.
222 ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/dr
224 Keywords: character device drivers, I/O, signals, DMA,
225 accessing ports in user space, kernel environment.
226 Description: 68 pages paper on writing character drivers. A
227 little bit old (1.993, 1.994) although still useful.
231 * BOOKS: (Not on-line)
233 + Title: "Linux Device Drivers"
234 Author: Alessandro Rubini.
235 Publisher: O'Reilly &Associates.
239 + Title: "Linux Kernel Internals"
240 Author: Michael Beck.
241 Publisher: Addison-Wesley.
243 ISBN: 0-201-33143-8 (second edition)
245 + Title: "The Design of the UNIX Operating System"
246 Author: Maurice J. Bach.
247 Publisher: Prentice Hall.
251 + Title: "The Design and Implementation of the 4.3 BSD UNIX
253 Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael
254 J. Karels, John S. Quarterman.
255 Publisher: Addison-Wesley.
256 Date: 1989 (reprinted with corrections on October, 1990).
259 + Title: "The Design and Implementation of the 4.4 BSD UNIX
261 Author: Marshall Kirk McKusick, Keith Bostic, Michael J.
262 Karels, John S. Quarterman.
263 Publisher: Addison-Wesley.
267 + Title: "Programmation Linux 2.0 API systeme et
268 fonctionnement du noyau"
269 Author: Remy Card, Eric Dumas, Franck Mevel.
272 Pages: 520. ISBN: 2-212-08932-5
274 + Title: "Unix internals -- the new frontiers"
275 Author: Uresh Vahalia.
276 Publisher: Prentice Hall.
278 Pages: 600. ISBN: 0-13-101908-2
283 + Name: Linux Source Driver.
284 URL: http://lsd.linux.cz
286 Description: "Linux Source Driver (LSD) is an application,
287 which can make browsing source codes of Linux kernel easier
288 than you can imagine. You can select between multiple
289 versions of kernel (e.g. 0.01, 1.0.0, 2.0.33, 2.0.34pre13,
290 2.0.0, 2.1.101 etc.). With LSD you can search Linux kernel
291 (fulltext, macros, types, functions and variables) and LSD
292 can generate patches for you on the fly (files, directories
295 + Name: Linux Weekly News.
297 Keywords: last kernel news.
298 Description: The title says it all. There's a fixed kernel
299 section summarizing developers' work, bug fixes, new features
300 and versions produced during the week. Published every
303 + Name: CuTTiNG.eDGe.LiNuX.
304 URL: http://edge.linuxhq.com
305 Keywords: changelist.
306 Description: Site which provides the changelist for every
307 kernel release. What's new, what's better, what's changed.
308 Myrdraal reads the patchs and describes them. Pointers to the
309 patches are there, too.
311 + Name: New linux-kernel Mailing List FAQ.
313 http://www.altern.org/andrebalsa/doc/lkml-faq.html
314 URL: U.S. mirror site:
315 http://www.ececs.uc.edu/~rreilova/linux/lkml-faq.html
316 Keywords: linux-kernel mailing list FAQ.
317 Description: linux-kernel is a mailing list for developers
318 to communicate. This FAQ builds on the previous linux-kernel
319 mailing list FAQ maintained by Frohwalt Egerer, who no longer
320 maintains it. Read it to see how to join the mailing list.
321 Dozens of interesting questions regarding the list, Linux,
322 developers (who is ...?), terms (what is...?) are answered
323 here too. Just read it.
325 + Name: "Linux Virtual File System"
326 Author: Peter J. Braam.
327 URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs
328 Keywords: slides, VFS, inode, superblock, dentry, dcache.
329 Description: Set of slides, presumably from a presentation
330 on the Linux VFS layer. Covers version 2.1.x, with dentries