linux-old/Documentation/kernel-docs.txt
<<
>>
Prefs
   1
   2       Index of Documentation for People Interested in Writing and/or
   3                                      
   4                      Understanding the Linux Kernel.
   5                                      
   6              Juan-Mariano de Goyeneche < jmseyas@dit.upm.es>
   7                                      
   8/*
   9 * The latest version of this document may be found at:
  10 *   http://www.dit.upm.es/~jmseyas/linux/kernel/hackers-docs.html
  11 */
  12
  13   The need for a document like this one became apparent in the
  14   linux-kernel mailing list as the same questions, asking for pointers
  15   to information, appeared again and again.
  16   
  17   Fortunately, as more and more people get to GNU/Linux, more and more
  18   get interested in the Kernel. But reading the sources is not always
  19   enough. It is easy to understand the code, but miss the concepts, the
  20   philosophy and design decisions behind this code.
  21   
  22   Unfortunately, not many documents are available for beginners to
  23   start. And, even if they exist, there was no "well-known" place which
  24   kept track of them. These lines try to cover this lack. All documents
  25   available on line known by the author are listed, while some reference
  26   books are also mentioned.
  27   
  28   PLEASE, if you know any paper not listed here or write a new document,
  29   send me an e-mail, and I'll include a reference to it here. Any
  30   corrections, ideas or comments are also welcomed.
  31   
  32   The papers that follow are listed in no particular order. All are
  33   cataloged with the following fields: the document's "Title", the
  34   "Author"/s, the "URL" where they can be found, some "Keywords" helpful
  35   when searching for specific topics, and a brief "Description" of the
  36   Document.
  37   
  38   Enjoy!
  39   
  40     ON-LINE DOCS:
  41       
  42     * Title: "The Linux Kernel"
  43       Author: David A. Rusling.
  44       URL: http://sunsite.unc.edu/linux/LDP/tlk/tlk.html
  45       Keywords: everything!, book.
  46       Description: On line, 200 pages book describing most aspects of
  47       the Linux Kernel. Probably, the first reference for beginners.
  48       Lots of illustrations explaining data structures use and
  49       relationships in the purest Richard W. Stevens' style. Contents:
  50       "1.-Hardware Basics, 2.-Software Basics, 3.-Memory Management,
  51       4.-Processes, 5.-Interprocess Communication Mechanisms, 6.-PCI,
  52       7.-Interrupts and Interrupt Handling, 8.-Device Drivers, 9.-The
  53       File system, 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules,
  54       13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
  55       Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
  56       General Public License, Glossary". In short: a must have.
  57       
  58     * Title: "The Linux Kernel Hackers' Guide"
  59       Author: Michael K.Johnson and others.
  60       URL: http://khg.redhat.com/HyperNews/get/khg.html
  61       Keywords: everything!
  62       Description: No more Postscript book-like version. Only HTML now.
  63       Many people have contributed. The interface is similar to web
  64       available mailing lists archives. You can find some articles and
  65       then some mails asking questions about them and/or complementing
  66       previous contributions. A little bit anarchic in this aspect, but
  67       with some valuable information in some cases.
  68       
  69     * Title: "Conceptual Architecture of the Linux Kernel"
  70       Author: Ivan T. Bowman.
  71       URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html
  72       Keywords: conceptual software arquitecture, extracted design,
  73       reverse engineering, system structure.
  74       Description: Conceptual software arquitecture of the Linux kernel,
  75       automatically extracted from the source code. Very detailed. Good
  76       figures. Gives good overall kernel understanding.
  77       
  78     * Title: "Concrete Architecture of the Linux Kernel"
  79       Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
  80       URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a2.html
  81       Keywords: concrete arquitecture, extracted design, reverse
  82       engineering, system structure, dependencies.
  83       Description: Concrete arquitecture of the Linux kernel,
  84       automatically extracted from the source code. Very detailed. Good
  85       figures. Gives good overall kernel understanding. This papers
  86       focus on lower details than its predecessor (files, variables...).
  87       
  88     * Title: "Linux as a Case Study: Its Extracted Software
  89       Architecture"
  90       Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
  91       URL: http://plg.uwaterloo.ca/~itbowman/papers/linuxcase.html
  92       Keywords: software architecture, architecture recovery,
  93       redocumentation.
  94       Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
  95       1999. A mixture of the previous two documents from the same
  96       author.
  97       
  98     * Title: "Overview of the Virtual File System"
  99       Author: Richard Gooch.
 100       URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
 101       Keywords: VFS, File System, mounting filesystems, opening files,
 102       dentries,
 103       dcache. Description: Brief introduction to the Linux Virtual File
 104       System. What is it, how it works, operations taken when opening a
 105       file or mounting a file system and description of important data
 106       structures explaining the purpose of each of their entries.
 107       
 108     * Title: "The Linux RAID-1, 4, 5 Code"
 109       Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
 110       URL: http://www.ssc.com/lj/issue44/2391.html
 111       Keywords: RAID, MD driver.
 112       Description: Linux Journal Kernel Korner article. Here is it's
 113       abstract: "A description of the implementation of the RAID-1,
 114       RAID-4 and RAID-5 personalities of the MD device driver in the
 115       Linux kernel, providing users with high performance and reliable,
 116       secondary-storage capability using software".
 117       
 118     * Title: "Dynamic Kernels: Modularized Device Drivers"
 119       Author: Alessandro Rubini.
 120       URL: http://www.ssc.com/lj/issue23/1219.html
 121       Keywords: device driver, module, loading/unloading modules,
 122       allocating resources.
 123       Description: Linux Journal Kernel Korner article. Here is it's
 124       abstract: "This is the first of a series of four articles
 125       co-authored by Alessandro Rubini and Georg Zezchwitz which present
 126       a practical approach to writing Linux device drivers as kernel
 127       loadable modules. This installment presents an introduction to the
 128       topic, preparing the reader to understand next month's
 129       installment".
 130       
 131     * Title: "Dynamic Kernels: Discovery"
 132       Author: Alessandro Rubini.
 133       URL: http://www.ssc.com/lj/issue24/kk24.html
 134       Keywords: character driver, init_module, clean_up module,
 135       autodetection,
 136       mayor number, minor number, file operations, open(), close().
 137       Description: Linux Journal Kernel Korner article. Here is it's
 138       abstract: "This article, the second of four, introduces part of
 139       the actual code to create custom module implementing a character
 140       device driver. It describes the code for module initialization and
 141       cleanup, as well as the open() and close() system calls".
 142       
 143     * Title: "The Devil's in the Details"
 144       Author: Georg v. Zezschwitz and Alessandro Rubini.
 145       URL: http://www.ssc.com/lj/issue25/kk25.html
 146       Keywords: read(), write(), select(), ioctl(), blocking/non
 147       blocking mode, interrupt handler.
 148       Description: Linux Journal Kernel Korner article. Here is it's
 149       abstract: "This article, the third of four on writing character
 150       device drivers, introduces concepts of reading, writing, and using
 151       ioctl-calls".
 152       
 153     * Title: "Dissecting Interrupts and Browsing DMA"
 154       Author: Alessandro Rubini and Georg v. Zezschwitz.
 155       URL: http://www.ssc.com/lj/issue26/interrupt.html
 156       Keywords: interrupts, irqs, DMA, bottom halves, task queues.
 157       Description: Linux Journal Kernel Korner article. Here is it's
 158       abstract: "This is the fourth in a series of articles about
 159       writing character device drivers as loadable kernel modules. This
 160       month, we further investigate the field of interrupt handling.
 161       Though it is conceptually simple, practical limitations and
 162       constraints make this an ``interesting'' part of device driver
 163       writing, and several different facilities have been provided for
 164       different situations. We also investigate the complex topic of
 165       DMA".
 166       
 167     * Title: "Network Buffers And Memory Management"
 168       Author: Alan Cox.
 169       URL: http://www.ssc.com/lj/issue30/kk30.html
 170       Keywords: sk_buffs, network devices, protocol/link layer
 171       variables, network devices flags, transmit, receive,
 172       configuration, multicast.
 173       Description: Linux Journal Kernel Korner. Here is the abstract:
 174       "Writing a network device driver for Linux is fundamentally
 175       simple---most of the complexity (other than talking to the
 176       hardware) involves managing network packets in memory".
 177       
 178     * Title: "An Introduction to the Linux 1.3.x Networking Code"
 179       Author: Vipul Gupta.
 180       URL: http://anchor.cs.binghamton.edu/courses/cs628/linux-net.html
 181       Keywords: files, sk_buffs.
 182       Description: A short description of files under the net/
 183       directory. Each file has a one or two lines paragraph description.
 184       sk_buffs explained, too, with some beautiful pictures. A little
 185       bit outdated.
 186       
 187     * Title: "Linux ioctl() Primer"
 188       Author: Vipul Gupta.
 189       URL: http://anchor.cs.binghamton.edu/courses/cs628/ioctl.html
 190       Keywords: ioctl, socket.
 191       Description: Little description and examples on the use and
 192       implementation of the ioctl() system call. A little bit biased
 193       towards sockets.
 194       
 195     * Title: "Writing Linux Device Drivers"
 196       Author: Michael K. Johnson.
 197       URL: http://www.redhat.com/~johnsonm/devices.html
 198       Keywords: files, VFS, file operations, kernel interface, character
 199       vs block devices, I/O access, hardware interrupts, DMA, access to
 200       user memory, memory allocation, timers.
 201       Description: Introductory 50-minutes (sic) tutorial on writing
 202       device drivers. 12 pages written by the same author of the "Kernel
 203       Hackers' Guide" which give a very good overview of the topic.
 204       
 205     * Title: "The Venus kernel interface"
 206       Author: Peter J. Braam.
 207       URL:
 208       http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
 209       Keywords: coda, filesystem, venus, cache manager.
 210       Description: "This document describes the communication between
 211       Venus and kernel level file system code needed for the operation
 212       of the Coda filesystem. This version document is meant to describe
 213       the current interface (version 1.0) as well as improvements we
 214       envisage".
 215       
 216     * Title: "Programming PCI-Devices under Linux"
 217       Author: Claus Schroeter.
 218       URL:
 219       ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps
 220       .gz
 221       Keywords: PCI, device, busmastering.
 222       Description: 6 pages tutorial on PCI programming under Linux.
 223       Gives the basic concepts on the architecture of the PCI subsystem,
 224       as long as basic functions and macros to read/write the devices
 225       and perform busmastering.
 226       
 227     * Title: "Writing Character Device Driver for Linux"
 228       Author: R. Baruch and C. Schroeter.
 229       URL:
 230       ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers
 231       .ps.gz
 232       Keywords: character device drivers, I/O, signals, DMA, accesing
 233       ports in user space, kernel environment.
 234       Description: 68 pages paper on writing character drivers. A little
 235       bit old (1.993, 1.994) although still useful.
 236       
 237     * Title: "The Second Extended Filesystem"
 238       Author: Matthew Wilcox.
 239       URL: http://pocket.fluff.org/~mrw/linux/ext2.txt
 240       Keywords: ext2, filesystem.
 241       Description: Description of ext2's blocks, directories, inodes ...
 242       
 243     * Title: "Analysis of the Ext2fs structure"
 244       Author: Louis-Dominique Dubeau.
 245       URL: http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html
 246       Keywords: ext2, filesystem, ext2fs.
 247       Description: Description of ext2's blocks, directories, inodes,
 248       bitmaps, invariants ...
 249       
 250     * Title: "Kernel API changes from 2.0 to 2.2"
 251       Author: Richard Gooch.
 252       URL:
 253       http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.2.html
 254       Keywords: 2.2, changes.
 255       Description: Kernel functions/structures/variables which changed
 256       from 2.0.x to 2.2.x.
 257       
 258     * Title: "Kernel API changes from 2.2 to 2.3"
 259       Author: Richard Gooch.
 260       URL:
 261       http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.2.html
 262       Keywords: 2.3, changes.
 263       Description: Kernel functions/structures/variables which changed
 264       from 2.2.x to 2.3.x.
 265       
 266     * Title: "Linux Kernel Module Programming Guide"
 267       Author: Ori Pomerantz.
 268       URL: http://www.linuxdoc.org/LDP/lkmpg/mpg.html
 269       Keywords: modules, GPL book, /proc, ioctls, system calls,
 270       interrupt handlers .
 271       Description: Very nice 92 pages GPL book on the topic of modules
 272       programming. Lots of examples.
 273       
 274     * Title: "Device File System (devfs) Overview"
 275       Author: Richard Gooch.
 276       URL: http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.txt
 277       Keywords: filesystem, /dev, devfs, dynamic devices, major/minor
 278       allocation, device management.
 279       Description: Document describing Richard Gooch's controversial
 280       devfs, which allows for dynamic devices, only shows present
 281       devices in /dev, gets rid of major/minor numbers allocation
 282       problems, and allows for hundreds of identical devices (which some
 283       USB systems might demand soon).
 284       
 285     * Title: "I/O Event Handling Under Linux"
 286       Author: Richard Gooch.
 287       URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html
 288       Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
 289       event queues.
 290       Description: From the Introduction: "I/O Event handling is about
 291       how your Operating System allows you to manage a large number of
 292       open files (file descriptors in UNIX/POSIX, or FDs) in your
 293       application. You want the OS to notify you when FDs become active
 294       (have data ready to be read or are ready for writing). Ideally you
 295       want a mechanism that is scalable. This means a large number of
 296       inactive FDs cost very little in memory and CPU time to manage".
 297       
 298     BOOKS: (Not on-line)
 299   
 300     * Title: "Linux Device Drivers"
 301       Author: Alessandro Rubini.
 302       Publisher: O'Reilly &Associates.
 303       Date: 1998.
 304       ISBN: 1-56592-292-1
 305       
 306     * Title: "Linux Kernel Internals"
 307       Author: Michael Beck.
 308       Publisher: Addison-Wesley.
 309       Date: 1997.
 310       ISBN: 0-201-33143-8 (second edition)
 311       
 312     * Title: "The Design of the UNIX Operating System"
 313       Author: Maurice J. Bach.
 314       Publisher: Prentice Hall.
 315       Date: 1986.
 316       Pages: 471.
 317       ISBN: 0-13-201757-1
 318       
 319     * Title: "The Design and Implementation of the 4.3 BSD UNIX
 320       Operating System"
 321       Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
 322       Karels, John S. Quarterman.
 323       Publisher: Addison-Wesley.
 324       Date: 1989 (reprinted with corrections on October, 1990).
 325       ISBN: 0-201-06196-1
 326       
 327     * Title: "The Design and Implementation of the 4.4 BSD UNIX
 328       Operating System"
 329       Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
 330       John S. Quarterman.
 331       Publisher: Addison-Wesley.
 332       Date: 1996.
 333       ISBN: 0-201-54979-4
 334       
 335     * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
 336       noyau"
 337       Author: Remy Card, Eric Dumas, Franck Mevel.
 338       Publisher: Eyrolles.
 339       Date: 1997.
 340       Pages: 520.
 341       ISBN: 2-212-08932-5
 342       Notes: French.
 343       
 344     * Title: "The Linux Kernel Book"
 345       Author: Remy Card, Eric Dumas, Franck Mevel.
 346       Publisher: John Wiley & Sons.
 347       Date: 1998.
 348       ISBN: 0-471-98141-9
 349       Notes: English translation.
 350       
 351     * Title: "Linux 2.0"
 352       Author: Remy Card, Eric Dumas, Franck Mevel.
 353       Publisher: Gestión 2000.
 354       Date: 1997.
 355       Pages: 501.
 356       ISBN: 8-480-88208-5
 357       Notes: Spanish translation.
 358       
 359     * Title: "Unix internals -- the new frontiers"
 360       Author: Uresh Vahalia.
 361       Publisher: Prentice Hall.
 362       Date: 1996.
 363       Pages: 600.
 364       ISBN: 0-13-101908-2
 365       
 366     * Title: "Linux Core Kernel Commentary. Guide to Insider's Knowledge
 367       on the Core Kernel od the Linux Code"
 368       Author: Scott Maxwell.
 369       Publisher: ???.
 370       Date: 1999.
 371       Pages: 592.
 372       ISBN: 1-57610-469-9
 373       Notes: CD-ROM included.
 374       
 375     MISCELLANEOUS:
 376   
 377     * Name: Linux Source Driver.
 378       URL: http://lsd.linux.cz
 379       Keywords: Browsing source code.
 380       Description: "Linux Source Driver (LSD) is an application, which
 381       can make browsing source codes of Linux kernel easier than you can
 382       imagine. You can select between multiple versions of kernel (e.g.
 383       0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
 384       you can search Linux kernel (fulltext, macros, types, functions
 385       and variables) and LSD can generate patches for you on the fly
 386       (files, directories or kernel)".
 387       
 388     * Name: Cross-Referencing Linux.
 389       URL: http://lxr.linux.no/source/
 390       Keywords: Browsing source code.
 391       Description: Another web-based Linux kernel source code browser.
 392       Lots of cross references to variables and functions. You can see
 393       where they are defined and where they are used.
 394       
 395     * Name: Linux Weekly News.
 396       URL: http://lwn.net
 397       Keywords: latest kernel news.
 398       Description: The title says it all. There's a fixed kernel section
 399       summarizing developers' work, bug fixes, new features and versions
 400       produced during the week. Published every Thursday.
 401       
 402     * Name: Kernel Traffic.
 403       URL: http://kt.linuxcare.com
 404       Keywords: linux-kernel mailing list, weekly kernel news.
 405       Description: Weekly newsletter covering the most relevant
 406       discussions of the linux-kernel mailing list.
 407       
 408     * Name: CuTTiNG.eDGe.LiNuX.
 409       URL: http://edge.kernelnotes.org
 410       Keywords: changelist.
 411       Description: Site which provides the changelist for every kernel
 412       release. What's new, what's better, what's changed. Myrdraal reads
 413       the patches and describes them. Pointers to the patches are there,
 414       too.
 415       
 416     * Name: New linux-kernel Mailing List FAQ.
 417       URL: Original site:
 418       http://www.altern.org/andrebalsa/doc/lkml-faq.html
 419       URL: U.S. mirror site:
 420       http://www.ececs.uc.edu/~rreilova/linux/lkml-faq.html
 421       Keywords: linux-kernel mailing list FAQ.
 422       Description: linux-kernel is a mailing list for developers to
 423       communicate. This FAQ builds on the previous linux-kernel mailing
 424       list FAQ maintained by Frohwalt Egerer, who no longer maintains
 425       it. Read it to see how to join the mailing list. Dozens of
 426       interesting questions regarding the list, Linux, developers (who
 427       is ...?), terms (what is...?) are answered here too. Just read it.
 428       
 429     * Name: "Linux Virtual File System"
 430       Author: Peter J. Braam.
 431       URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs
 432       Keywords: slides, VFS, inode, superblock, dentry, dcache.
 433       Description: Set of slides, presumably from a presentation on the
 434       Linux VFS layer. Covers version 2.1.x, with dentries and the
 435       dcache.
 436     _________________________________________________________________
 437   
 438   Document last updated on Tue Nov 30 11:20:00 CET 1999
 439
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.