Import 2.2.8pre2
[davej-history.git] / Documentation / kernel-docs.txt
bloba3502bfc7ea58c4c1fc1689101c672d68b1707fa
2    
3  INDEX OF DOCUMENTATION FOR PEOPLE INTERESTED IN WRITING AND/OR UNDERSTANDING
4                                THE LINUX KERNEL.
5                                        
6                 Juan-Mariano de Goyeneche <jmseyas@dit.upm.es>
7    
8    
9    /*
10     * The latest version of this document may be found at: 
11     *   http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
12     */
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.
17    
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 decissions behind this code.
22    
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.
28    
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.
32    
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    helpfull when searching for specific topics, and a brief "Description"
37    of the Document.
38    
39    Enjoy!
40    
41    
42    ON-LINE DOCS:
43    
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.
60    
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
64             Keywords: everything!
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
71             in some cases.
72        
73           + Title: "Tour Of the Linux Kernel Source"
74             Author: Vijo Cherian.
75             URL: http://www.svrec.ernet.in/~vijo/tolks/tolks.html
76             Keywords:
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
80             Network Code.
81        
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
86             files, dentries,
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.
92    
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
102             software".
103    
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,
108             allocating
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".
116    
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,
121             autodetection,
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()
128             system calls".
129    
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
134             blocking mode,
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".
139    
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
144             queues.
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".
154    
155           + Title: "Network Buffers And Memory Management"
156             Author: Alan Cox.
157             URL: http://www.ssc.com/lj/issue30/kk30.html
158             Keywords: sk_buffs, network devices, protocol/link layer
159             variables, network
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
165             memory".
166        
167           + Title: "An Introduction to the Linux 1.3.x Networking Code"
168             Author: Vipul Gupta.
169             URL:
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 lines paragrahp
174             description. sk_buffs explained, too, with some beatiful
175             pictures. A little bit outdated.
176    
177           + Title: "Linux ioctl() Primer"
178             Author: Vipul Gupta.
179             URL:
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.
185        
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,
190             character vs
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.
196    
197           + Title: "The Venus kernel interface"
198             Author: Peter J. Braam.
199             URL:
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".
207        
208           + Title: "Programming PCI-Devices under Linux"
209             Author: Claus Schroeter.
210             URL:
211             ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pc
212             ip.ps.gz
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.
218        
219           + Title: "Writing Character Device Driver for Linux"
220             Author: R. Baruch and C. Schroeter.
221             URL:
222             ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/dr
223             ivers.ps.gz
224             Keywords: character device drivers, I/O, signals, DMA,
225             accesing 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.
228        
229        
230        
231      * BOOKS: (Not on-line)
232        
233           + Title: "Linux Device Drivers"
234             Author: Alessandro Rubini.
235             Publisher: O'Reilly &Associates.
236             Date: 1998.
237             ISBN: 1-56592-292-1
238        
239           + Title: "Linux Kernel Internals"
240             Author: Michael Beck.
241             Publisher: Addison-Wesley.
242             Date: 1997.
243             ISBN: 0-201-33143-8 (second edition)
244        
245           + Title: "The Design of the UNIX Operating System"
246             Author: Maurice J. Bach.
247             Publisher: Prentice Hall.
248             Date: 1986.
249             ISBN: ???
250    
251           + Title: "The Design and Implementation of the 4.3 BSD UNIX
252             Operating System"
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).
257             ISBN: 0-201-06196-1
258        
259           + Title: "The Design and Implementation of the 4.4 BSD UNIX
260             Operating System"
261             Author: Marshall Kirk McKusick, Keith Bostic, Michael J.
262             Karels, John S. Quarterman.
263             Publisher: Addison-Wesley.
264             Date: 1996.
265             ISBN: 0-201-54979-4
266    
267           + Title: "Programmation Linux 2.0 API systeme et
268             fonctionnement du noyau"
269             Author: Remy Card, Eric Dumas, Franck Mevel.
270             Publisher: Eyrolles.
271             Date: 1997.
272             Pages: 520. ISBN: 2-212-08932-5
273        
274           + Title: "Unix internals -- the new frontiers"
275             Author: Uresh Vahalia.
276             Publisher: Prentice Hall.
277             Date: 1996.
278             Pages: 600. ISBN: 0-13-101908-2
279    
280        
281      * MISCELLANEOUS:
282        
283           + Name: Linux Source Driver.
284             URL: http://lsd.linux.cz
285             Keywords: Browsing.
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
293             or kernel)".
294        
295           + Name: Linux Weekly News.
296             URL: http://lwn.net
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
301             thursday.
302        
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.
310    
311           + Name: New linux-kernel Mailing List FAQ.
312             URL: Original site:
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.
324        
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
331             and the dcache.