[PATCH] DM9000 - incorrect ioctl() handling
[linux-2.6/sactl.git] / Documentation / kernel-docs.txt
blobcb89fb3b61efd2862e399271ee0ee6d3f0cf8759
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  */
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: "Linux Device Drivers, Third Edition"
43        Author: Jonathan Corbet, Alessandro Rubini, Greg Kroah-Hartman
44        URL: http://lwn.net/Kernel/LDD3/
45        Description: A 600-page book covering the (2.6.10) driver
46        programming API and kernel hacking in general.  Available under the
47        Creative Commons Attribution-ShareAlike 2.0 license.
49      * Title: "The Linux Kernel"
50        Author: David A. Rusling.
51        URL: http://www.tldp.org/LDP/tlk/tlk.html
52        Keywords: everything!, book.
53        Description: On line, 200 pages book describing most aspects of
54        the Linux Kernel. Probably, the first reference for beginners.
55        Lots of illustrations explaining data structures use and
56        relationships in the purest Richard W. Stevens' style. Contents:
57        "1.-Hardware Basics, 2.-Software Basics, 3.-Memory Management,
58        4.-Processes, 5.-Interprocess Communication Mechanisms, 6.-PCI,
59        7.-Interrupts and Interrupt Handling, 8.-Device Drivers, 9.-The
60        File system, 10.-Networks, 11.-Kernel Mechanisms, 12.-Modules,
61        13.-The Linux Kernel Sources, A.-Linux Data Structures, B.-The
62        Alpha AXP Processor, C.-Useful Web and FTP Sites, D.-The GNU
63        General Public License, Glossary". In short: a must have.
64        
65      * Title: "The Linux Kernel Hackers' Guide"
66        Author: Michael K.Johnson and others.
67        URL: http://www.tldp.org/LDP/khg/HyperNews/get/khg.html
68        Keywords: everything!
69        Description: No more Postscript book-like version. Only HTML now.
70        Many people have contributed. The interface is similar to web
71        available mailing lists archives. You can find some articles and
72        then some mails asking questions about them and/or complementing
73        previous contributions. A little bit anarchic in this aspect, but
74        with some valuable information in some cases.
75        
76      * Title: "Conceptual Architecture of the Linux Kernel"
77        Author: Ivan T. Bowman.
78        URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html
79        Keywords: conceptual software arquitecture, extracted design,
80        reverse engineering, system structure.
81        Description: Conceptual software arquitecture of the Linux kernel,
82        automatically extracted from the source code. Very detailed. Good
83        figures. Gives good overall kernel understanding.
84        
85      * Title: "Concrete Architecture of the Linux Kernel"
86        Author: Ivan T. Bowman, Saheem Siddiqi, and Meyer C. Tanuan.
87        URL: http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a2.html
88        Keywords: concrete arquitecture, extracted design, reverse
89        engineering, system structure, dependencies.
90        Description: Concrete arquitecture of the Linux kernel,
91        automatically extracted from the source code. Very detailed. Good
92        figures. Gives good overall kernel understanding. This papers
93        focus on lower details than its predecessor (files, variables...).
94        
95      * Title: "Linux as a Case Study: Its Extracted Software
96        Architecture"
97        Author: Ivan T. Bowman, Richard C. Holt and Neil V. Brewster.
98        URL: http://plg.uwaterloo.ca/~itbowman/papers/linuxcase.html
99        Keywords: software architecture, architecture recovery,
100        redocumentation.
101        Description: Paper appeared at ICSE'99, Los Angeles, May 16-22,
102        1999. A mixture of the previous two documents from the same
103        author.
104        
105      * Title: "Overview of the Virtual File System"
106        Author: Richard Gooch.
107        URL: http://www.atnf.csiro.au/~rgooch/linux/vfs.txt
108        Keywords: VFS, File System, mounting filesystems, opening files,
109        dentries, dcache.
110        Description: Brief introduction to the Linux Virtual File System.
111        What is it, how it works, operations taken when opening a file or
112        mounting a file system and description of important data
113        structures explaining the purpose of each of their entries.
114        
115      * Title: "The Linux RAID-1, 4, 5 Code"
116        Author: Ingo Molnar, Gadi Oxman and Miguel de Icaza.
117        URL: http://www2.linuxjournal.com/lj-issues/issue44/2391.html
118        Keywords: RAID, MD driver.
119        Description: Linux Journal Kernel Korner article. Here is it's
120        abstract: "A description of the implementation of the RAID-1,
121        RAID-4 and RAID-5 personalities of the MD device driver in the
122        Linux kernel, providing users with high performance and reliable,
123        secondary-storage capability using software".
124        
125      * Title: "Dynamic Kernels: Modularized Device Drivers"
126        Author: Alessandro Rubini.
127        URL: http://www2.linuxjournal.com/lj-issues/issue23/1219.html
128        Keywords: device driver, module, loading/unloading modules,
129        allocating resources.
130        Description: Linux Journal Kernel Korner article. Here is it's
131        abstract: "This is the first of a series of four articles
132        co-authored by Alessandro Rubini and Georg Zezchwitz which present
133        a practical approach to writing Linux device drivers as kernel
134        loadable modules. This installment presents an introduction to the
135        topic, preparing the reader to understand next month's
136        installment".
137        
138      * Title: "Dynamic Kernels: Discovery"
139        Author: Alessandro Rubini.
140        URL: http://www2.linuxjournal.com/lj-issues/issue24/1220.html
141        Keywords: character driver, init_module, clean_up module,
142        autodetection, mayor number, minor number, file operations,
143        open(), close().
144        Description: Linux Journal Kernel Korner article. Here is it's
145        abstract: "This article, the second of four, introduces part of
146        the actual code to create custom module implementing a character
147        device driver. It describes the code for module initialization and
148        cleanup, as well as the open() and close() system calls".
149        
150      * Title: "The Devil's in the Details"
151        Author: Georg v. Zezschwitz and Alessandro Rubini.
152        URL: http://www2.linuxjournal.com/lj-issues/issue25/1221.html
153        Keywords: read(), write(), select(), ioctl(), blocking/non
154        blocking mode, interrupt handler.
155        Description: Linux Journal Kernel Korner article. Here is it's
156        abstract: "This article, the third of four on writing character
157        device drivers, introduces concepts of reading, writing, and using
158        ioctl-calls".
159        
160      * Title: "Dissecting Interrupts and Browsing DMA"
161        Author: Alessandro Rubini and Georg v. Zezschwitz.
162        URL: http://www2.linuxjournal.com/lj-issues/issue26/1222.html
163        Keywords: interrupts, irqs, DMA, bottom halves, task queues.
164        Description: Linux Journal Kernel Korner article. Here is it's
165        abstract: "This is the fourth in a series of articles about
166        writing character device drivers as loadable kernel modules. This
167        month, we further investigate the field of interrupt handling.
168        Though it is conceptually simple, practical limitations and
169        constraints make this an ``interesting'' part of device driver
170        writing, and several different facilities have been provided for
171        different situations. We also investigate the complex topic of
172        DMA".
173        
174      * Title: "Device Drivers Concluded"
175        Author: Georg v. Zezschwitz.
176        URL: http://www2.linuxjournal.com/lj-issues/issue28/1287.html
177        Keywords: address spaces, pages, pagination, page management,
178        demand loading, swapping, memory protection, memory mapping, mmap,
179        virtual memory areas (VMAs), vremap, PCI.
180        Description: Finally, the above turned out into a five articles
181        series. This latest one's introduction reads: "This is the last of
182        five articles about character device drivers. In this final
183        section, Georg deals with memory mapping devices, beginning with
184        an overall description of the Linux memory management concepts".
185        
186      * Title: "Network Buffers And Memory Management"
187        Author: Alan Cox.
188        URL: http://www2.linuxjournal.com/lj-issues/issue30/1312.html
189        Keywords: sk_buffs, network devices, protocol/link layer
190        variables, network devices flags, transmit, receive,
191        configuration, multicast.
192        Description: Linux Journal Kernel Korner. Here is the abstract:
193        "Writing a network device driver for Linux is fundamentally
194        simple---most of the complexity (other than talking to the
195        hardware) involves managing network packets in memory".
196        
197      * Title: "Writing Linux Device Drivers"
198        Author: Michael K. Johnson.
199        URL: http://people.redhat.com/johnsonm/devices.html
200        Keywords: files, VFS, file operations, kernel interface, character
201        vs block devices, I/O access, hardware interrupts, DMA, access to
202        user memory, memory allocation, timers.
203        Description: Introductory 50-minutes (sic) tutorial on writing
204        device drivers. 12 pages written by the same author of the "Kernel
205        Hackers' Guide" which give a very good overview of the topic.
206        
207      * Title: "The Venus kernel interface"
208        Author: Peter J. Braam.
209        URL:
210        http://www.coda.cs.cmu.edu/doc/html/kernel-venus-protocol.html
211        Keywords: coda, filesystem, venus, cache manager.
212        Description: "This document describes the communication between
213        Venus and kernel level file system code needed for the operation
214        of the Coda filesystem. This version document is meant to describe
215        the current interface (version 1.0) as well as improvements we
216        envisage".
217        
218      * Title: "Programming PCI-Devices under Linux"
219        Author: Claus Schroeter.
220        URL:
221        ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/pcip.ps
222        .gz
223        Keywords: PCI, device, busmastering.
224        Description: 6 pages tutorial on PCI programming under Linux.
225        Gives the basic concepts on the architecture of the PCI subsystem,
226        as long as basic functions and macros to read/write the devices
227        and perform busmastering.
228        
229      * Title: "Writing Character Device Driver for Linux"
230        Author: R. Baruch and C. Schroeter.
231        URL:
232        ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers
233        .ps.gz
234        Keywords: character device drivers, I/O, signals, DMA, accessing
235        ports in user space, kernel environment.
236        Description: 68 pages paper on writing character drivers. A little
237        bit old (1.993, 1.994) although still useful.
238        
239      * Title: "Design and Implementation of the Second Extended
240        Filesystem"
241        Author: RĆ©my Card, Theodore Ts'o, Stephen Tweedie.
242        URL: http://web.mit.edu/tytso/www/linux/ext2intro.html
243        Keywords: ext2, linux fs history, inode, directory, link, devices,
244        VFS, physical structure, performance, benchmarks, ext2fs library,
245        ext2fs tools, e2fsck.
246        Description: Paper written by three of the top ext2 hackers.
247        Covers Linux filesystems history, ext2 motivation, ext2 features,
248        design, physical structure on disk, performance, benchmarks,
249        e2fsck's passes description... A must read!
250        Notes: This paper was first published in the Proceedings of the
251        First Dutch International Symposium on Linux, ISBN 90-367-0385-9.
252        
253      * Title: "Analysis of the Ext2fs structure"
254        Author: Louis-Dominique Dubeau.
255        URL: http://step.polymtl.ca/~ldd/ext2fs/ext2fs_toc.html
256        Keywords: ext2, filesystem, ext2fs.
257        Description: Description of ext2's blocks, directories, inodes,
258        bitmaps, invariants...
259        
260      * Title: "Journaling the Linux ext2fs Filesystem"
261        Author: Stephen C. Tweedie.
262        URL:
263        ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz
264        Keywords: ext3, journaling.
265        Description: Excellent 8-pages paper explaining the journaling
266        capabilities added to ext2 by the author, showing different
267        problems faced and the alternatives chosen.
268        
269      * Title: "Kernel API changes from 2.0 to 2.2"
270        Author: Richard Gooch.
271        URL:
272        http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.2.html
273        Keywords: 2.2, changes.
274        Description: Kernel functions/structures/variables which changed
275        from 2.0.x to 2.2.x.
276        
277      * Title: "Kernel API changes from 2.2 to 2.4"
278        Author: Richard Gooch.
279        URL:
280        http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.4.html
281        Keywords: 2.4, changes.
282        Description: Kernel functions/structures/variables which changed
283        from 2.2.x to 2.4.x.
284        
285      * Title: "Linux Kernel Module Programming Guide"
286        Author: Ori Pomerantz.
287        URL: http://www.tldp.org/LDP/lkmpg/mpg.html
288        Keywords: modules, GPL book, /proc, ioctls, system calls,
289        interrupt handlers .
290        Description: Very nice 92 pages GPL book on the topic of modules
291        programming. Lots of examples.
292        
293      * Title: "Device File System (devfs) Overview"
294        Author: Richard Gooch.
295        URL: http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.txt
296        Keywords: filesystem, /dev, devfs, dynamic devices, major/minor
297        allocation, device management.
298        Description: Document describing Richard Gooch's controversial
299        devfs, which allows for dynamic devices, only shows present
300        devices in /dev, gets rid of major/minor numbers allocation
301        problems, and allows for hundreds of identical devices (which some
302        USB systems might demand soon).
303        
304      * Title: "I/O Event Handling Under Linux"
305        Author: Richard Gooch.
306        URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html
307        Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness
308        event queues.
309        Description: From the Introduction: "I/O Event handling is about
310        how your Operating System allows you to manage a large number of
311        open files (file descriptors in UNIX/POSIX, or FDs) in your
312        application. You want the OS to notify you when FDs become active
313        (have data ready to be read or are ready for writing). Ideally you
314        want a mechanism that is scalable. This means a large number of
315        inactive FDs cost very little in memory and CPU time to manage".
316        
317      * Title: "The Kernel Hacking HOWTO"
318        Author: Various Talented People, and Rusty.
319        URL:
320        http://www.lisoleg.net/doc/Kernel-Hacking-HOWTO/kernel-hacking-HOW
321        TO.html
322        Keywords: HOWTO, kernel contexts, deadlock, locking, modules,
323        symbols, return conventions.
324        Description: From the Introduction: "Please understand that I
325        never wanted to write this document, being grossly underqualified,
326        but I always wanted to read it, and this was the only way. I
327        simply explain some best practices, and give reading entry-points
328        into the kernel sources. I avoid implementation details: that's
329        what the code is for, and I ignore whole tracts of useful
330        routines. This document assumes familiarity with C, and an
331        understanding of what the kernel is, and how it is used. It was
332        originally written for the 2.3 kernels, but nearly all of it
333        applies to 2.2 too; 2.0 is slightly different".
334        
335      * Title: "ALSA 0.5.0 Developer documentation"
336        Author: Stephan 'Jumpy' Bartels .
337        URL: http://www.math.TU-Berlin.de/~sbartels/alsa/
338        Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware.
339        Description: Advanced Linux Sound Architecture for developers,
340        both at kernel and user-level sides. Work in progress. ALSA is
341        supposed to be Linux's next generation sound architecture.
342        
343      * Title: "Programming Guide for Linux USB Device Drivers"
344        Author: Detlef Fliegl.
345        URL: http://usb.in.tum.de/usbdoc/
346        Keywords: USB, universal serial bus.
347        Description: A must-read. From the Preface: "This document should
348        give detailed information about the current state of the USB
349        subsystem and its API for USB device drivers. The first section
350        will deal with the basics of USB devices. You will learn about
351        different types of devices and their properties. Going into detail
352        you will see how USB devices communicate on the bus. The second
353        section gives an overview of the Linux USB subsystem [2] and the
354        device driver framework. Then the API and its data structures will
355        be explained step by step. The last section of this document
356        contains a reference of all API calls and their return codes".
357        Notes: Beware: the main page states: "This document may not be
358        published, printed or used in excerpts without explicit permission
359        of the author". Fortunately, it may still be read...
360        
361      * Title: "Tour Of the Linux Kernel Source"
362        Author: Vijo Cherian.
363        URL: http://www.geocities.com/vijoc/tolks/tolks.html
364        Keywords: .
365        Description: A classic of this page! Was lost for a while and is
366        back again. Thanks Vijo! TOLKS: the name says it all. A tour of
367        the sources, describing directories, files, variables, data
368        structures... It covers general stuff, device drivers,
369        filesystems, IPC and Networking Code.
370        
371      * Title: "Linux Kernel Mailing List Glossary"
372        Author: John Levon.
373        URL: http://www.movement.uklinux.net/glossary.html
374        Keywords: glossary, terms, linux-kernel.
375        Description: From the introduction: "This glossary is intended as
376        a brief description of some of the acronyms and terms you may hear
377        during discussion of the Linux kernel".
378        
379      * Title: "Linux Kernel Locking HOWTO"
380        Author: Various Talented People, and Rusty.
381        URL:
382        http://netfilter.kernelnotes.org/unreliable-guides/kernel-locking-
383        HOWTO.html
384        Keywords: locks, locking, spinlock, semaphore, atomic, race
385        condition, bottom halves, tasklets, softirqs.
386        Description: The title says it all: document describing the
387        locking system in the Linux Kernel either in uniprocessor or SMP
388        systems.
389        Notes: "It was originally written for the later (>2.3.47) 2.3
390        kernels, but most of it applies to 2.2 too; 2.0 is slightly
391        different". Freely redistributable under the conditions of the GNU
392        General Public License.
393        
394      * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New
395        Features "
396        Author: Alan Cox.
397        URL: http://www.linux-mag.com/1999-05/gear_01.html
398        Keywords: ports, porting.
399        Description: Article from Linux Magazine on porting from 2.0 to
400        2.2 kernels.
401        
402      * Title: "Porting Device Drivers To Linux 2.2: part II"
403        Author: Alan Cox.
404        URL: http://www.linux-mag.com/1999-06/gear_01.html
405        Keywords: ports, porting.
406        Description: Second part on porting from 2.0 to 2.2 kernels.
407        
408      * Title: "How To Make Sure Your Driver Will Work On The Power
409        Macintosh"
410        Author: Paul Mackerras.
411        URL: http://www.linux-mag.com/1999-07/gear_01.html
412        Keywords: Mac, Power Macintosh, porting, drivers, compatibility.
413        Description: The title says it all.
414        
415      * Title: "An Introduction to SCSI Drivers"
416        Author: Alan Cox.
417        URL: http://www.linux-mag.com/1999-08/gear_01.html
418        Keywords: SCSI, device, driver.
419        Description: The title says it all.
420        
421      * Title: "Advanced SCSI Drivers And Other Tales"
422        Author: Alan Cox.
423        URL: http://www.linux-mag.com/1999-09/gear_01.html
424        Keywords: SCSI, device, driver, advanced.
425        Description: The title says it all.
426        
427      * Title: "Writing Linux Mouse Drivers"
428        Author: Alan Cox.
429        URL: http://www.linux-mag.com/1999-10/gear_01.html
430        Keywords: mouse, driver, gpm.
431        Description: The title says it all.
432        
433      * Title: "More on Mouse Drivers"
434        Author: Alan Cox.
435        URL: http://www.linux-mag.com/1999-11/gear_01.html
436        Keywords: mouse, driver, gpm, races, asynchronous I/O.
437        Description: The title still says it all.
438        
439      * Title: "Writing Video4linux Radio Driver"
440        Author: Alan Cox.
441        URL: http://www.linux-mag.com/1999-12/gear_01.html
442        Keywords: video4linux, driver, radio, radio devices.
443        Description: The title says it all.
444        
445      * Title: "Video4linux Drivers, Part 1: Video-Capture Device"
446        Author: Alan Cox.
447        URL: http://www.linux-mag.com/2000-01/gear_01.html
448        Keywords: video4linux, driver, video capture, capture devices,
449        camera driver.
450        Description: The title says it all.
451        
452      * Title: "Video4linux Drivers, Part 2: Video-capture Devices"
453        Author: Alan Cox.
454        URL: http://www.linux-mag.com/2000-02/gear_01.html
455        Keywords: video4linux, driver, video capture, capture devices,
456        camera driver, control, query capabilities, capability, facility.
457        Description: The title says it all.
458        
459      * Title: "PCI Management in Linux 2.2"
460        Author: Alan Cox.
461        URL: http://www.linux-mag.com/2000-03/gear_01.html
462        Keywords: PCI, bus, bus-mastering.
463        Description: The title says it all.
464        
465      * Title: "Linux 2.4 Kernel Internals"
466        Author: Tigran Aivazian and Christoph Hellwig.
467        URL: http://www.moses.uklinux.net/patches/lki.html
468        Keywords: Linux, kernel, booting, SMB boot, VFS, page cache.
469        Description: A little book used for a short training course.
470        Covers building the kernel image, booting (including SMP bootup),
471        process management, VFS and more.
472        
473      * Title: "Linux IP Networking. A Guide to the Implementation and
474        Modification of the Linux Protocol Stack."
475        Author: Glenn Herrin.
476        URL:
477        http://kernelnewbies.org/documents/ipnetworking/linuxipnetworking.
478        html
479        Keywords: network, networking, protocol, IP, UDP, TCP, connection,
480        socket, receiving, transmitting, forwarding, routing, packets,
481        modules, /proc, sk_buff, FIB, tags.
482        Description: Excellent paper devoted to the Linux IP Networking,
483        explaining anything from the kernel's to the user space
484        configuration tools' code. Very good to get a general overview of
485        the kernel networking implementation and understand all steps
486        packets follow from the time they are received at the network
487        device till they are delivered to applications. The studied kernel
488        code is from 2.2.14 version. Provides code for a working packet
489        dropper example.
490        
491      * Title: "Get those boards talking under Linux."
492        Author: Alex Ivchenko.
493        URL: http://www.ednmag.com/ednmag/reg/2000/06222000/13df2.htm
494        Keywords: data-acquisition boards, drivers, modules, interrupts,
495        memory allocation.
496        Description: Article written for people wishing to make their data
497        acquisition boards work on their GNU/Linux machines. Gives a basic
498        overview on writing drivers, from the naming of functions to
499        interrupt handling.
500        Notes: Two-parts article. Part II is at
501        http://www.ednmag.com/ednmag/reg/2000/07062000/14df.htm
502        
503      * Title: "Linux PCMCIA Programmer's Guide"
504        Author: David Hinds.
505        URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html
506        Keywords: PCMCIA.
507        Description: "This document describes how to write kernel device
508        drivers for the Linux PCMCIA Card Services interface. It also
509        describes how to write user-mode utilities for communicating with
510        Card Services.
511        
512      * Title: "The Linux Kernel NFSD Implementation"
513        Author: Neil Brown.
514        URL:
515        http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html
516        Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd.
517        Description: The title says it all.
518        Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel).
519        
520      * Title: "A Linux vm README"
521        Author: Kanoj Sarcar.
522        URL: http://reality.sgi.com/kanoj_engr/vm229.html
523        Keywords: virtual memory, mm, pgd, vma, page, page flags, page
524        cache, swap cache, kswapd.
525        Description: Telegraphic, short descriptions and definitions
526        relating the Linux virtual memory implementation.
527        
528      * Title: "(nearly) Complete Linux Loadable Kernel Modules. The
529        definitive guide for hackers, virus coders and system
530        administrators."
531        Author: pragmatic/THC.
532        URL: http://packetstorm.securify.com/groups/thc/LKM_HACKING.html
533        Keywords: syscalls, intercept, hide, abuse, symbol table.
534        Description: Interesting paper on how to abuse the Linux kernel in
535        order to intercept and modify syscalls, make
536        files/directories/processes invisible, become root, hijack ttys,
537        write kernel modules based virus... and solutions for admins to
538        avoid all those abuses.
539        Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x
540        kernels. Also available in txt format at
541        http://www.blacknemesis.org/hacking/txt/cllkm.txt
542        
543      BOOKS: (Not on-line)
544    
545      * Title: "Linux Device Drivers"
546        Author: Alessandro Rubini.
547        Publisher: O'Reilly & Associates.
548        Date: 1998.
549        Pages: 439.
550        ISBN: 1-56592-292-1
551        
552      * Title: "Linux Device Drivers, 2nd Edition"
553        Author: Alessandro Rubini and Jonathan Corbet.
554        Publisher: O'Reilly & Associates.
555        Date: 2001.
556        Pages: 586.
557        ISBN: 0-59600-008-1
558        Notes: Further information in
559        http://www.oreilly.com/catalog/linuxdrive2/
560        
561      * Title: "Linux Kernel Internals"
562        Author: Michael Beck.
563        Publisher: Addison-Wesley.
564        Date: 1997.
565        ISBN: 0-201-33143-8 (second edition)
566        
567      * Title: "The Design of the UNIX Operating System"
568        Author: Maurice J. Bach.
569        Publisher: Prentice Hall.
570        Date: 1986.
571        Pages: 471.
572        ISBN: 0-13-201757-1
573        
574      * Title: "The Design and Implementation of the 4.3 BSD UNIX
575        Operating System"
576        Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J.
577        Karels, John S. Quarterman.
578        Publisher: Addison-Wesley.
579        Date: 1989 (reprinted with corrections on October, 1990).
580        ISBN: 0-201-06196-1
581        
582      * Title: "The Design and Implementation of the 4.4 BSD UNIX
583        Operating System"
584        Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels,
585        John S. Quarterman.
586        Publisher: Addison-Wesley.
587        Date: 1996.
588        ISBN: 0-201-54979-4
589        
590      * Title: "Programmation Linux 2.0 API systeme et fonctionnement du
591        noyau"
592        Author: Remy Card, Eric Dumas, Franck Mevel.
593        Publisher: Eyrolles.
594        Date: 1997.
595        Pages: 520.
596        ISBN: 2-212-08932-5
597        Notes: French.
598        
599      * Title: "The Linux Kernel Book"
600        Author: Remy Card, Eric Dumas, Franck Mevel.
601        Publisher: John Wiley & Sons.
602        Date: 1998.
603        ISBN: 0-471-98141-9
604        Notes: English translation.
605        
606      * Title: "Linux 2.0"
607        Author: Remy Card, Eric Dumas, Franck Mevel.
608        Publisher: GestiĆ³n 2000.
609        Date: 1997.
610        Pages: 501.
611        ISBN: 8-480-88208-5
612        Notes: Spanish translation.
613        
614      * Title: "Unix internals -- the new frontiers"
615        Author: Uresh Vahalia.
616        Publisher: Prentice Hall.
617        Date: 1996.
618        Pages: 600.
619        ISBN: 0-13-101908-2
620        
621      * Title: "Linux Core Kernel Commentary. Guide to Insider's Knowledge
622        on the Core Kernel of the Linux Code"
623        Author: Scott Maxwell.
624        Publisher: Coriolis.
625        Date: 1999.
626        Pages: 592.
627        ISBN: 1-57610-469-9
628        Notes: CD-ROM included. Line by line commentary of the kernel
629        code.
630        
631      * Title: "Linux IP Stacks Commentary"
632        Author: Stephen Satchell and HBJ Clifford.
633        Publisher: Coriolis.
634        Date: 2000.
635        Pages: ???.
636        ISBN: 1-57610-470-2
637        Notes: Line by line source code commentary book.
638        
639      * Title: "Programming for the real world - POSIX.4"
640        Author: Bill O. Gallmeister.
641        Publisher: O'Reilly & Associates, Inc..
642        Date: 1995.
643        Pages: ???.
644        ISBN: I-56592-074-0
645        Notes: Though not being directly about Linux, Linux aims to be
646        POSIX. Good reference.
647        
648      * Title: "Understanding the Linux Kernel"
649        Author: Daniel P. Bovet and Marco Cesati.
650        Publisher: O'Reilly & Associates, Inc..
651        Date: 2000.
652        Pages: 702.
653        ISBN: 0-596-00002-2
654        Notes: Further information in
655        http://www.oreilly.com/catalog/linuxkernel/
656        
657      MISCELLANEOUS:
658    
659      * Name: linux/Documentation
660        Author: Many.
661        URL: Just look inside your kernel sources.
662        Keywords: anything, DocBook.
663        Description: Documentation that comes with the kernel sources,
664        inside the Documentation directory. Some pages from this document
665        (including this document itself) have been moved there, and might
666        be more up to date than the web version.
667        
668      * Name: "Linux Source Driver"
669        URL: http://lsd.linux.cz
670        Keywords: Browsing source code.
671        Description: "Linux Source Driver (LSD) is an application, which
672        can make browsing source codes of Linux kernel easier than you can
673        imagine. You can select between multiple versions of kernel (e.g.
674        0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD
675        you can search Linux kernel (fulltext, macros, types, functions
676        and variables) and LSD can generate patches for you on the fly
677        (files, directories or kernel)".
678        
679      * Name: "Linux Kernel Source Reference"
680        Author: Thomas Graichen.
681        URL: http://innominate.org/~graichen/projects/lksr/
682        Keywords: CVS, web, cvsweb, browsing source code.
683        Description: Web interface to a CVS server with the kernel
684        sources. "Here you can have a look at any file of the Linux kernel
685        sources of any version starting from 1.0 up to the (daily updated)
686        current version available. Also you can check the differences
687        between two versions of a file".
688        
689      * Name: "Cross-Referencing Linux"
690        URL: http://lxr.linux.no/source/
691        Keywords: Browsing source code.
692        Description: Another web-based Linux kernel source code browser.
693        Lots of cross references to variables and functions. You can see
694        where they are defined and where they are used.
695        
696      * Name: "Linux Weekly News"
697        URL: http://lwn.net
698        Keywords: latest kernel news.
699        Description: The title says it all. There's a fixed kernel section
700        summarizing developers' work, bug fixes, new features and versions
701        produced during the week. Published every Thursday.
702        
703      * Name: "Kernel Traffic"
704        URL: http://www.kerneltraffic.org/kernel-traffic/
705        Keywords: linux-kernel mailing list, weekly kernel news.
706        Description: Weekly newsletter covering the most relevant
707        discussions of the linux-kernel mailing list.
708        
709      * Name: "CuTTiNG.eDGe.LiNuX"
710        URL: http://edge.kernelnotes.org
711        Keywords: changelist.
712        Description: Site which provides the changelist for every kernel
713        release. What's new, what's better, what's changed. Myrdraal reads
714        the patches and describes them. Pointers to the patches are there,
715        too.
716        
717      * Name: "New linux-kernel Mailing List FAQ"
718        URL: http://www.tux.org/lkml/
719        Keywords: linux-kernel mailing list FAQ.
720        Description: linux-kernel is a mailing list for developers to
721        communicate. This FAQ builds on the previous linux-kernel mailing
722        list FAQ maintained by Frohwalt Egerer, who no longer maintains
723        it. Read it to see how to join the mailing list. Dozens of
724        interesting questions regarding the list, Linux, developers (who
725        is ...?), terms (what is...?) are answered here too. Just read it.
726        
727      * Name: "Linux Virtual File System"
728        Author: Peter J. Braam.
729        URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/
730        Keywords: slides, VFS, inode, superblock, dentry, dcache.
731        Description: Set of slides, presumably from a presentation on the
732        Linux VFS layer. Covers version 2.1.x, with dentries and the
733        dcache.
734        
735      * Name: "Gary's Encyclopedia - The Linux Kernel"
736        Author: Gary (I suppose...).
737        URL: http://members.aa.net/~swear/pedia/kernel.html
738        Keywords: links, not found here?.
739        Description: Gary's Encyclopedia exists to allow the rapid finding
740        of documentation and other information of interest to GNU/Linux
741        users. It has about 4000 links to external pages in 150 major
742        categories. This link is for kernel-specific links, documents,
743        sites... Look there if you could not find here what you were
744        looking for.
745        
746      * Name: "The home page of Linux-MM"
747        Author: The Linux-MM team.
748        URL: http://linux-mm.org/
749        Keywords: memory management, Linux-MM, mm patches, TODO, docs,
750        mailing list.
751        Description: Site devoted to Linux Memory Management development.
752        Memory related patches, HOWTOs, links, mm developers... Don't miss
753        it if you are interested in memory management development!
754        
755      * Name: "Kernel Newbies IRC Channel"
756        URL: http://www.kernelnewbies.org
757        Keywords: IRC, newbies, channel, asking doubts.
758        Description: #kernelnewbies on irc.openprojects.net. From the web
759        page: "#kernelnewbies is an IRC network dedicated to the 'newbie'
760        kernel hacker. The audience mostly consists of people who are
761        learning about the kernel, working on kernel projects or
762        professional kernel hackers that want to help less seasoned kernel
763        people. [...] #kernelnewbies is on the Open Projects IRC Network,
764        try irc.openprojects.net or irc.<country>.openprojects.net as your
765        server and then /join #kernelnewbies". It also hosts articles,
766        documents, FAQs...
767        
768      * Name: "linux-kernel mailing list archives and search engines"
769        URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html
770        URL: http://www.kernelnotes.org/lnxlists/linux-kernel/
771        URL: http://www.geocrawler.com
772        Keywords: linux-kernel, archives, search.
773        Description: Some of the linux-kernel mailing list archivers. If
774        you have a better/another one, please let me know.
775      _________________________________________________________________
776    
777    Document last updated on Thu Jun 28 15:09:39 CEST 2001