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: "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. 48 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: "Linux Device Drivers, 2nd Edition" 66 Author: Alessandro Rubini and Jonathan Corbet. 67 URL: http://www.xml.com/ldd/chapter/book/index.html 68 Keywords: device drivers, modules, debugging, memory, hardware, 69 interrupt handling, char drivers, block drivers, kmod, mmap, DMA, 70 buses. 71 Description: O'Reilly's popular book, now also on-line under the 72 GNU Free Documentation License. 73 Notes: You can also buy it in paper-form from O'Reilly. See below 74 under BOOKS (Not on-line). 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 architecture, extracted design, 80 reverse engineering, system structure. 81 Description: Conceptual software architecture 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 architecture, extracted design, reverse 89 engineering, system structure, dependencies. 90 Description: Concrete architecture 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://www.linuxjournal.com/article.php?sid=2391 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://www.linuxjournal.com/article.php?sid=1219 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://www.linuxjournal.com/article.php?sid=1220 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://www.linuxjournal.com/article.php?sid=1221 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://www.linuxjournal.com/article.php?sid=1222 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://www.linuxjournal.com/article.php?sid=1287 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://www.linuxjournal.com/article.php?sid=1312 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://users.evitech.fi/~tk/rtos/writing_linux_device_d.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.gz 222 Keywords: PCI, device, busmastering. 223 Description: 6 pages tutorial on PCI programming under Linux. 224 Gives the basic concepts on the architecture of the PCI subsystem, 225 as long as basic functions and macros to read/write the devices 226 and perform busmastering. 227 228 * Title: "Writing Character Device Driver for Linux" 229 Author: R. Baruch and C. Schroeter. 230 URL: 231 ftp://ftp.llp.fu-berlin.de/pub/linux/LINUX-LAB/whitepapers/drivers.ps.gz 232 Keywords: character device drivers, I/O, signals, DMA, accessing 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: "Design and Implementation of the Second Extended 238 Filesystem" 239 Author: R\xC3\xA9my Card, Theodore Ts'o, Stephen Tweedie. 240 URL: http://web.mit.edu/tytso/www/linux/ext2intro.html 241 Keywords: ext2, linux fs history, inode, directory, link, devices, 242 VFS, physical structure, performance, benchmarks, ext2fs library, 243 ext2fs tools, e2fsck. 244 Description: Paper written by three of the top ext2 hackers. 245 Covers Linux filesystems history, ext2 motivation, ext2 features, 246 design, physical structure on disk, performance, benchmarks, 247 e2fsck's passes description... A must read! 248 Notes: This paper was first published in the Proceedings of the 249 First Dutch International Symposium on Linux, ISBN 90-367-0385-9. 250 251 * Title: "Analysis of the Ext2fs structure" 252 Author: Louis-Dominique Dubeau. 253 URL: http://www.nondot.org/sabre/os/files/FileSystems/ext2fs/ 254 Keywords: ext2, filesystem, ext2fs. 255 Description: Description of ext2's blocks, directories, inodes, 256 bitmaps, invariants... 257 258 * Title: "Journaling the Linux ext2fs Filesystem" 259 Author: Stephen C. Tweedie. 260 URL: 261 ftp://ftp.uk.linux.org/pub/linux/sct/fs/jfs/journal-design.ps.gz 262 Keywords: ext3, journaling. 263 Description: Excellent 8-pages paper explaining the journaling 264 capabilities added to ext2 by the author, showing different 265 problems faced and the alternatives chosen. 266 267 * Title: "Kernel API changes from 2.0 to 2.2" 268 Author: Richard Gooch. 269 URL: 270 http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.2.html 271 Keywords: 2.2, changes. 272 Description: Kernel functions/structures/variables which changed 273 from 2.0.x to 2.2.x. 274 275 * Title: "Kernel API changes from 2.2 to 2.4" 276 Author: Richard Gooch. 277 URL: 278 http://www.atnf.csiro.au/~rgooch/linux/docs/porting-to-2.4.html 279 Keywords: 2.4, changes. 280 Description: Kernel functions/structures/variables which changed 281 from 2.2.x to 2.4.x. 282 283 * Title: "Linux Kernel Module Programming Guide" 284 Author: Ori Pomerantz. 285 URL: http://tldp.org/LDP/lkmpg/2.6/html/index.html 286 Keywords: modules, GPL book, /proc, ioctls, system calls, 287 interrupt handlers . 288 Description: Very nice 92 pages GPL book on the topic of modules 289 programming. Lots of examples. 290 291 * Title: "I/O Event Handling Under Linux" 292 Author: Richard Gooch. 293 URL: http://www.atnf.csiro.au/~rgooch/linux/docs/io-events.html 294 Keywords: IO, I/O, select(2), poll(2), FDs, aio_read(2), readiness 295 event queues. 296 Description: From the Introduction: "I/O Event handling is about 297 how your Operating System allows you to manage a large number of 298 open files (file descriptors in UNIX/POSIX, or FDs) in your 299 application. You want the OS to notify you when FDs become active 300 (have data ready to be read or are ready for writing). Ideally you 301 want a mechanism that is scalable. This means a large number of 302 inactive FDs cost very little in memory and CPU time to manage". 303 304 * Title: "The Kernel Hacking HOWTO" 305 Author: Various Talented People, and Rusty. 306 Location: in kernel tree, Documentation/DocBook/kernel-hacking/ 307 (must be built as "make {htmldocs | psdocs | pdfdocs}) 308 Keywords: HOWTO, kernel contexts, deadlock, locking, modules, 309 symbols, return conventions. 310 Description: From the Introduction: "Please understand that I 311 never wanted to write this document, being grossly underqualified, 312 but I always wanted to read it, and this was the only way. I 313 simply explain some best practices, and give reading entry-points 314 into the kernel sources. I avoid implementation details: that's 315 what the code is for, and I ignore whole tracts of useful 316 routines. This document assumes familiarity with C, and an 317 understanding of what the kernel is, and how it is used. It was 318 originally written for the 2.3 kernels, but nearly all of it 319 applies to 2.2 too; 2.0 is slightly different". 320 321 * Title: "Writing an ALSA Driver" 322 Author: Takashi Iwai <tiwai@suse.de> 323 URL: http://www.alsa-project.org/~iwai/writing-an-alsa-driver/index.html 324 Keywords: ALSA, sound, soundcard, driver, lowlevel, hardware. 325 Description: Advanced Linux Sound Architecture for developers, 326 both at kernel and user-level sides. ALSA is the Linux kernel 327 sound architecture in the 2.6 kernel version. 328 329 * Title: "Programming Guide for Linux USB Device Drivers" 330 Author: Detlef Fliegl. 331 URL: http://usb.in.tum.de/usbdoc/ 332 Keywords: USB, universal serial bus. 333 Description: A must-read. From the Preface: "This document should 334 give detailed information about the current state of the USB 335 subsystem and its API for USB device drivers. The first section 336 will deal with the basics of USB devices. You will learn about 337 different types of devices and their properties. Going into detail 338 you will see how USB devices communicate on the bus. The second 339 section gives an overview of the Linux USB subsystem [2] and the 340 device driver framework. Then the API and its data structures will 341 be explained step by step. The last section of this document 342 contains a reference of all API calls and their return codes". 343 Notes: Beware: the main page states: "This document may not be 344 published, printed or used in excerpts without explicit permission 345 of the author". Fortunately, it may still be read... 346 347 * Title: "Linux Kernel Mailing List Glossary" 348 Author: various 349 URL: http://kernelnewbies.org/glossary/ 350 Keywords: glossary, terms, linux-kernel. 351 Description: From the introduction: "This glossary is intended as 352 a brief description of some of the acronyms and terms you may hear 353 during discussion of the Linux kernel". 354 355 * Title: "Linux Kernel Locking HOWTO" 356 Author: Various Talented People, and Rusty. 357 Location: in kernel tree, Documentation/DocBook/kernel-locking/ 358 (must be built as "make {htmldocs | psdocs | pdfdocs}) 359 Keywords: locks, locking, spinlock, semaphore, atomic, race 360 condition, bottom halves, tasklets, softirqs. 361 Description: The title says it all: document describing the 362 locking system in the Linux Kernel either in uniprocessor or SMP 363 systems. 364 Notes: "It was originally written for the later (>2.3.47) 2.3 365 kernels, but most of it applies to 2.2 too; 2.0 is slightly 366 different". Freely redistributable under the conditions of the GNU 367 General Public License. 368 369 * Title: "Global spinlock list and usage" 370 Author: Rick Lindsley. 371 URL: http://lse.sourceforge.net/lockhier/global-spin-lock 372 Keywords: spinlock. 373 Description: This is an attempt to document both the existence and 374 usage of the spinlocks in the Linux 2.4.5 kernel. Comprehensive 375 list of spinlocks showing when they are used, which functions 376 access them, how each lock is acquired, under what conditions it 377 is held, whether interrupts can occur or not while it is held... 378 379 * Title: "Porting Linux 2.0 Drivers To Linux 2.2: Changes and New 380 Features " 381 Author: Alan Cox. 382 URL: http://www.linux-mag.com/1999-05/gear_01.html 383 Keywords: ports, porting. 384 Description: Article from Linux Magazine on porting from 2.0 to 385 2.2 kernels. 386 387 * Title: "Porting Device Drivers To Linux 2.2: part II" 388 Author: Alan Cox. 389 URL: http://www.linux-mag.com/1999-06/gear_01.html 390 Keywords: ports, porting. 391 Description: Second part on porting from 2.0 to 2.2 kernels. 392 393 * Title: "How To Make Sure Your Driver Will Work On The Power 394 Macintosh" 395 Author: Paul Mackerras. 396 URL: http://www.linux-mag.com/1999-07/gear_01.html 397 Keywords: Mac, Power Macintosh, porting, drivers, compatibility. 398 Description: The title says it all. 399 400 * Title: "An Introduction to SCSI Drivers" 401 Author: Alan Cox. 402 URL: http://www.linux-mag.com/1999-08/gear_01.html 403 Keywords: SCSI, device, driver. 404 Description: The title says it all. 405 406 * Title: "Advanced SCSI Drivers And Other Tales" 407 Author: Alan Cox. 408 URL: http://www.linux-mag.com/1999-09/gear_01.html 409 Keywords: SCSI, device, driver, advanced. 410 Description: The title says it all. 411 412 * Title: "Writing Linux Mouse Drivers" 413 Author: Alan Cox. 414 URL: http://www.linux-mag.com/1999-10/gear_01.html 415 Keywords: mouse, driver, gpm. 416 Description: The title says it all. 417 418 * Title: "More on Mouse Drivers" 419 Author: Alan Cox. 420 URL: http://www.linux-mag.com/1999-11/gear_01.html 421 Keywords: mouse, driver, gpm, races, asynchronous I/O. 422 Description: The title still says it all. 423 424 * Title: "Writing Video4linux Radio Driver" 425 Author: Alan Cox. 426 URL: http://www.linux-mag.com/1999-12/gear_01.html 427 Keywords: video4linux, driver, radio, radio devices. 428 Description: The title says it all. 429 430 * Title: "Video4linux Drivers, Part 1: Video-Capture Device" 431 Author: Alan Cox. 432 URL: http://www.linux-mag.com/2000-01/gear_01.html 433 Keywords: video4linux, driver, video capture, capture devices, 434 camera driver. 435 Description: The title says it all. 436 437 * Title: "Video4linux Drivers, Part 2: Video-capture Devices" 438 Author: Alan Cox. 439 URL: http://www.linux-mag.com/2000-02/gear_01.html 440 Keywords: video4linux, driver, video capture, capture devices, 441 camera driver, control, query capabilities, capability, facility. 442 Description: The title says it all. 443 444 * Title: "PCI Management in Linux 2.2" 445 Author: Alan Cox. 446 URL: http://www.linux-mag.com/2000-03/gear_01.html 447 Keywords: PCI, bus, bus-mastering. 448 Description: The title says it all. 449 450 * Title: "Linux 2.4 Kernel Internals" 451 Author: Tigran Aivazian and Christoph Hellwig. 452 URL: http://www.moses.uklinux.net/patches/lki.html 453 Keywords: Linux, kernel, booting, SMB boot, VFS, page cache. 454 Description: A little book used for a short training course. 455 Covers building the kernel image, booting (including SMP bootup), 456 process management, VFS and more. 457 458 * Title: "Linux IP Networking. A Guide to the Implementation and 459 Modification of the Linux Protocol Stack." 460 Author: Glenn Herrin. 461 URL: http://www.cs.unh.edu/cnrg/gherrin 462 Keywords: network, networking, protocol, IP, UDP, TCP, connection, 463 socket, receiving, transmitting, forwarding, routing, packets, 464 modules, /proc, sk_buff, FIB, tags. 465 Description: Excellent paper devoted to the Linux IP Networking, 466 explaining anything from the kernel's to the user space 467 configuration tools' code. Very good to get a general overview of 468 the kernel networking implementation and understand all steps 469 packets follow from the time they are received at the network 470 device till they are delivered to applications. The studied kernel 471 code is from 2.2.14 version. Provides code for a working packet 472 dropper example. 473 474 * Title: "Get those boards talking under Linux." 475 Author: Alex Ivchenko. 476 URL: http://www.edn.com/article/CA46968.html 477 Keywords: data-acquisition boards, drivers, modules, interrupts, 478 memory allocation. 479 Description: Article written for people wishing to make their data 480 acquisition boards work on their GNU/Linux machines. Gives a basic 481 overview on writing drivers, from the naming of functions to 482 interrupt handling. 483 Notes: Two-parts article. Part II is at 484 URL: http://www.edn.com/article/CA46998.html 485 486 * Title: "Linux PCMCIA Programmer's Guide" 487 Author: David Hinds. 488 URL: http://pcmcia-cs.sourceforge.net/ftp/doc/PCMCIA-PROG.html 489 Keywords: PCMCIA. 490 Description: "This document describes how to write kernel device 491 drivers for the Linux PCMCIA Card Services interface. It also 492 describes how to write user-mode utilities for communicating with 493 Card Services. 494 495 * Title: "The Linux Kernel NFSD Implementation" 496 Author: Neil Brown. 497 URL: 498 http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/nfsd.html 499 Keywords: knfsd, nfsd, NFS, RPC, lockd, mountd, statd. 500 Description: The title says it all. 501 Notes: Covers knfsd's version 1.4.7 (patch against 2.2.7 kernel). 502 503 * Title: "A Linux vm README" 504 Author: Kanoj Sarcar. 505 URL: http://reality.sgi.com/kanoj_engr/vm229.html 506 Keywords: virtual memory, mm, pgd, vma, page, page flags, page 507 cache, swap cache, kswapd. 508 Description: Telegraphic, short descriptions and definitions 509 relating the Linux virtual memory implementation. 510 511 * Title: "(nearly) Complete Linux Loadable Kernel Modules. The 512 definitive guide for hackers, virus coders and system 513 administrators." 514 Author: pragmatic/THC. 515 URL: http://packetstormsecurity.org/docs/hack/LKM_HACKING.html 516 Keywords: syscalls, intercept, hide, abuse, symbol table. 517 Description: Interesting paper on how to abuse the Linux kernel in 518 order to intercept and modify syscalls, make 519 files/directories/processes invisible, become root, hijack ttys, 520 write kernel modules based virus... and solutions for admins to 521 avoid all those abuses. 522 Notes: For 2.0.x kernels. Gives guidances to port it to 2.2.x 523 kernels. 524 525 BOOKS: (Not on-line) 526 527 * Title: "Linux Device Drivers" 528 Author: Alessandro Rubini. 529 Publisher: O'Reilly & Associates. 530 Date: 1998. 531 Pages: 439. 532 ISBN: 1-56592-292-1 533 534 * Title: "Linux Device Drivers, 2nd Edition" 535 Author: Alessandro Rubini and Jonathan Corbet. 536 Publisher: O'Reilly & Associates. 537 Date: 2001. 538 Pages: 586. 539 ISBN: 0-59600-008-1 540 Notes: Further information in 541 http://www.oreilly.com/catalog/linuxdrive2/ 542 543 * Title: "Linux Device Drivers, 3nd Edition" 544 Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman 545 Publisher: O'Reilly & Associates. 546 Date: 2005. 547 Pages: 636. 548 ISBN: 0-596-00590-3 549 Notes: Further information in 550 http://www.oreilly.com/catalog/linuxdrive3/ 551 PDF format, URL: http://lwn.net/Kernel/LDD3/ 552 553 * Title: "Linux Kernel Internals" 554 Author: Michael Beck. 555 Publisher: Addison-Wesley. 556 Date: 1997. 557 ISBN: 0-201-33143-8 (second edition) 558 559 * Title: "The Design of the UNIX Operating System" 560 Author: Maurice J. Bach. 561 Publisher: Prentice Hall. 562 Date: 1986. 563 Pages: 471. 564 ISBN: 0-13-201757-1 565 566 * Title: "The Design and Implementation of the 4.3 BSD UNIX 567 Operating System" 568 Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J. 569 Karels, John S. Quarterman. 570 Publisher: Addison-Wesley. 571 Date: 1989 (reprinted with corrections on October, 1990). 572 ISBN: 0-201-06196-1 573 574 * Title: "The Design and Implementation of the 4.4 BSD UNIX 575 Operating System" 576 Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, 577 John S. Quarterman. 578 Publisher: Addison-Wesley. 579 Date: 1996. 580 ISBN: 0-201-54979-4 581 582 * Title: "Programmation Linux 2.0 API systeme et fonctionnement du 583 noyau" 584 Author: Remy Card, Eric Dumas, Franck Mevel. 585 Publisher: Eyrolles. 586 Date: 1997. 587 Pages: 520. 588 ISBN: 2-212-08932-5 589 Notes: French. 590 591 * Title: "Unix internals -- the new frontiers" 592 Author: Uresh Vahalia. 593 Publisher: Prentice Hall. 594 Date: 1996. 595 Pages: 600. 596 ISBN: 0-13-101908-2 597 598 * Title: "The Design and Implementation of the 4.4 BSD UNIX 599 Operating System" 600 Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, 601 John S. Quarterman. 602 Publisher: Addison-Wesley. 603 Date: 1996. 604 ISBN: 0-201-54979-4 605 606 * Title: "Programming for the real world - POSIX.4" 607 Author: Bill O. Gallmeister. 608 Publisher: O'Reilly & Associates, Inc.. 609 Date: 1995. 610 Pages: ???. 611 ISBN: I-56592-074-0 612 Notes: Though not being directly about Linux, Linux aims to be 613 POSIX. Good reference. 614 615 * Title: "UNIX Systems for Modern Architectures: Symmetric 616 Multiprocesssing and Caching for Kernel Programmers" 617 Author: Curt Schimmel. 618 Publisher: Addison Wesley. 619 Date: June, 1994. 620 Pages: 432. 621 ISBN: 0-201-63338-8 622 623 * Title: "The Design and Implementation of the 4.3 BSD UNIX 624 Operating System" 625 Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J. 626 Karels, John S. Quarterman. 627 Publisher: Addison-Wesley. 628 Date: 1989 (reprinted with corrections on October, 1990). 629 ISBN: 0-201-06196-1 630 631 * Title: "The Design of the UNIX Operating System" 632 Author: Maurice J. Bach. 633 Publisher: Prentice Hall. 634 Date: 1986. 635 Pages: 471. 636 ISBN: 0-13-201757-1 637 638 MISCELLANEOUS: 639 640 * Name: linux/Documentation 641 Author: Many. 642 URL: Just look inside your kernel sources. 643 Keywords: anything, DocBook. 644 Description: Documentation that comes with the kernel sources, 645 inside the Documentation directory. Some pages from this document 646 (including this document itself) have been moved there, and might 647 be more up to date than the web version. 648 649 * Name: "Linux Source Driver" 650 URL: http://lsd.linux.cz 651 Keywords: Browsing source code. 652 Description: "Linux Source Driver (LSD) is an application, which 653 can make browsing source codes of Linux kernel easier than you can 654 imagine. You can select between multiple versions of kernel (e.g. 655 0.01, 1.0.0, 2.0.33, 2.0.34pre13, 2.0.0, 2.1.101 etc.). With LSD 656 you can search Linux kernel (fulltext, macros, types, functions 657 and variables) and LSD can generate patches for you on the fly 658 (files, directories or kernel)". 659 660 * Name: "Linux Kernel Source Reference" 661 Author: Thomas Graichen. 662 URL: http://innominate.org/~graichen/projects/lksr/ 663 Keywords: CVS, web, cvsweb, browsing source code. 664 Description: Web interface to a CVS server with the kernel 665 sources. "Here you can have a look at any file of the Linux kernel 666 sources of any version starting from 1.0 up to the (daily updated) 667 current version available. Also you can check the differences 668 between two versions of a file". 669 670 * Name: "Cross-Referencing Linux" 671 URL: http://lxr.linux.no/source/ 672 Keywords: Browsing source code. 673 Description: Another web-based Linux kernel source code browser. 674 Lots of cross references to variables and functions. You can see 675 where they are defined and where they are used. 676 677 * Name: "Linux Weekly News" 678 URL: http://lwn.net 679 Keywords: latest kernel news. 680 Description: The title says it all. There's a fixed kernel section 681 summarizing developers' work, bug fixes, new features and versions 682 produced during the week. Published every Thursday. 683 684 * Name: "Kernel Traffic" 685 URL: http://kt.zork.net/kernel-traffic/ 686 Keywords: linux-kernel mailing list, weekly kernel news. 687 Description: Weekly newsletter covering the most relevant 688 discussions of the linux-kernel mailing list. 689 690 * Name: "CuTTiNG.eDGe.LiNuX" 691 URL: http://edge.kernelnotes.org 692 Keywords: changelist. 693 Description: Site which provides the changelist for every kernel 694 release. What's new, what's better, what's changed. Myrdraal reads 695 the patches and describes them. Pointers to the patches are there, 696 too. 697 698 * Name: "New linux-kernel Mailing List FAQ" 699 URL: http://www.tux.org/lkml/ 700 Keywords: linux-kernel mailing list FAQ. 701 Description: linux-kernel is a mailing list for developers to 702 communicate. This FAQ builds on the previous linux-kernel mailing 703 list FAQ maintained by Frohwalt Egerer, who no longer maintains 704 it. Read it to see how to join the mailing list. Dozens of 705 interesting questions regarding the list, Linux, developers (who 706 is ...?), terms (what is...?) are answered here too. Just read it. 707 708 * Name: "Linux Virtual File System" 709 Author: Peter J. Braam. 710 URL: http://www.coda.cs.cmu.edu/doc/talks/linuxvfs/ 711 Keywords: slides, VFS, inode, superblock, dentry, dcache. 712 Description: Set of slides, presumably from a presentation on the 713 Linux VFS layer. Covers version 2.1.x, with dentries and the 714 dcache. 715 716 * Name: "Gary's Encyclopedia - The Linux Kernel" 717 Author: Gary (I suppose...). 718 URL: http://slencyclopedia.berlios.de/index.html 719 Keywords: linux, community, everything! 720 Description: Gary's Encyclopedia exists to allow the rapid finding 721 of documentation and other information of interest to GNU/Linux 722 users. It has about 4000 links to external pages in 150 major 723 categories. This link is for kernel-specific links, documents, 724 sites... This list is now hosted by developer.Berlios.de, 725 but seems not to have been updated since sometime in 1999. 726 727 * Name: "The home page of Linux-MM" 728 Author: The Linux-MM team. 729 URL: http://linux-mm.org/ 730 Keywords: memory management, Linux-MM, mm patches, TODO, docs, 731 mailing list. 732 Description: Site devoted to Linux Memory Management development. 733 Memory related patches, HOWTOs, links, mm developers... Don't miss 734 it if you are interested in memory management development! 735 736 * Name: "Kernel Newbies IRC Channel" 737 URL: http://www.kernelnewbies.org 738 Keywords: IRC, newbies, channel, asking doubts. 739 Description: #kernelnewbies on irc.openprojects.net. From the web 740 page: "#kernelnewbies is an IRC network dedicated to the 'newbie' 741 kernel hacker. The audience mostly consists of people who are 742 learning about the kernel, working on kernel projects or 743 professional kernel hackers that want to help less seasoned kernel 744 people. [...] #kernelnewbies is on the Open Projects IRC Network, 745 try irc.openprojects.net or irc.<country>.openprojects.net as your 746 server and then /join #kernelnewbies". It also hosts articles, 747 documents, FAQs... 748 749 * Name: "linux-kernel mailing list archives and search engines" 750 URL: http://vger.kernel.org/vger-lists.html 751 URL: http://www.uwsg.indiana.edu/hypermail/linux/kernel/index.html 752 URL: http://marc.theaimsgroup.com/?l=linux-kernel 753 URL: http://groups.google.com/group/mlist.linux.kernel 754 URL: http://www.cs.helsinki.fi/linux/linux-kernel/ 755 URL: http://www.lib.uaa.alaska.edu/linux-kernel/ 756 Keywords: linux-kernel, archives, search. 757 Description: Some of the linux-kernel mailing list archivers. If 758 you have a better/another one, please let me know. 759 _________________________________________________________________ 760 761 Document last updated on Sat 2005-NOV-19 762