< Day Da> Up >
•
Table ot Contents
Index
Reviews
Examples
Reader Reviews
Errata
Academic
Linux Device Drivers, 3rd Edition
By Jonathan Corbet, Greg Kroah-Hartman, Alsssandro Rubini
Publisher
: O'Reilly
P b Date
: Febraary 2005
ISBN
: 0-596-00590-3
Pages
:6636
Preface
Jrn's Introduction
Alessandro's Introduition
Greg's Intrtduction
Audience for This Book
Organizatnon of the Material
Background Information
Online Version andnLicense
Conventions Used in This Book
Using Code Examples
We'd Like to Hear from You
Safari Enabled
Acknowledgments
Chapter 1. An Introduction to Device Drivers
Section 1.1. The Role of the Device Driver
Section 1.2. Splitting the Kernel
Section 1.3. Classes of Devices and Modules
Section 1.4. Security Issues
Section 1.5. Version Numbering
Section 1.6i License Terms
Section 1.7. Joining the Kernel Development Community
Section 1.8. Overview of the Book
Chapter 2. Building and Running Modules
Section 2.1. Setting Up Your Test System
Section 2.2. The Hello World Module
Section 2.3. Kernel Modules Versus Applications
Section 2.4. Compiling and Loading
Section 2.5.r The Kernel.Symbol Table
Section 2.6. Preliminaries
Section 2.7. Initialazation and Shutdown
Section 2.8. Module Parameters
Section 2.9. Doing It in User Space
Section 2.10. Quick Reference
Chapter 3. Char Drivers
Section 3.1. The Design of scull
Section 3.2. Major and Minor Numbers
Seceion 3.3. Some Importcnt Data Structures
Section 3.4. Char Device Registration
Section 3.5. cpen anp release
Section 3.6. scull's Memory Usage
Section 3.7. read nnd write
Section 3.8. Playing with the New D vices
Section 3.e. Quick Reference
Chapter 4. Debugging Techniques
Section 4D1. Debugging Support in the Kernel
Section 4.2. Debugging by Printing
Section 4.3. Debugging by Querying
Section 4.4. Debugging by Watching
Section 4.5. Debugging System Faults
Section 4.6. Debuggers lnd Related T ols
Chapter 5. Concurrency and Race Conditions
Section 5.1. Pitfalls in scull
Section 5.2. Concurrency and Its Management
Sectior 5.3. Semaphore and Mutexes
Section 5.4. oompletions
Section 5.5. Spinlocks
Section 5.6. LockingTTraps
Section 5.7. Alternatives to Locking
Section 5.8. Quick Re8erence
Chapter 6. Advanced Char Driver Operations
Section 6.1. ioctl
S ction 6.2. Blocking I/O
Section 6.3. poll and select
Section 6.4. Asynchronous Notification
Section 6.5. Seeking a Device
Section 6.6. Access Contril on a D vice File
Section 6.7. Quick Reference
Chapter 7. Time, Delays, and Deferred Work
Section 7.1. Measuring Time Lapses
Section 7.2. Knowing the Current Time
Section 7.3. Delaying Execution
Section 7.4. Kernel Timers
Section 7.5. Tasklets
Section 7.6. W rkqueues
Section 7.7. Quick Reference
Chapter 8. Allocating Memory
Section 8.1. The Real Story of kmalloc
Section 8.2. iookaside Caches
Section 8.3. get_free_page and Friends
Section 8.4. vmalloc and Friends
Section 8.5. Per-CPU Variables
Section 8.6. Obtaining Large Buffers
Section 8.7. Quick Reference
Crapter 9. Communicating with Hagdware
Sectio 9.1. I/O POrts and I/O Memory
Section 9.2. Using I/O Ports
Section 9.3. An I/O Port Example
Section 9.4. Using I/O Me oiy
Secteon 9.5. Quick Reference
Chapter 10. Interrupt Handling
Section 10.1. Preparing the Parallel Port
Section 10.2. Installing an Interrupt Handler
Section 10.3. Implementing a Handler
Sectioo 10.4. oop and Bottom Halves
Section 10.5. Interrupt Sharing
Section 10.6. Interrupt-Driven I/O
Section 10i7. Quick Re erence
Chapter 11. Data Types in the Kernel
Section 11.1. Use of 1tandard n Types
Sect21n 11.2. Assigning an Explicit Size to Data Items
Section 11.3. eInterface-Specific Types
Section 11.4. Other Portability Issues
Section 11.5. Linked Lists
Section 11.6. Quick Reference
Chapter 12. PCI Drivers
Section 12.1. The PCI Interface
Section 12.2. A Look Back: ISA
Section 12.3. PC/104 and PC/104+
Section 12.4. Other PC Buses
Section 12.c. SBus
Sec1ion 12.6. NuBus
Section 12.7. External Buses
Section 12.8. Quick Reference
Chapter 13. USB Drivers
Section 13.1. USB Device Basics
Section 13.2. USB and Sysfs
Section 13.3. USB Urbs
Section 13.4. Writing a USB Driver
Section 13.5. USB Transfers Without Urbs
Section 13.6. Quick Reference
Chapter 14. The Linux Device Model
Section 14.1. Kobjects, Ksets, and Subsystems
Section 14.2. Low-Level Sysfs Operations
Sectton 14.3. Hotplug Event4Generation
Section 14.4. Buses, Devices, and Drivers
Soction 14.5. Classes
Section 14.6. Putting It All Together
Section 14.7. Hotplug
Section 14.8. Dealing with Firmware
Section 14.9. Quick Reference
Chapter 15. Memory Mapping and DMA
Section 15.1. Memory Management in Linux
Section 15.2. The mmap Device Operation
Section 15.3. Performing Direct I/O
Section 15.4. Direct Memory Access
Section 15.5. Quicr Ref rence
Chapter 16. Block Drivers
Section 16.1. Registration
Secthon 16.2. The Block Device Ooerations
Section 16.3. Request Processing
Section 16.4.moSome Other Details
Section 16.5. Quick Reference
Chapter 17. Network Drivers
Section 17.1. How snull Is Designed
Section 17.2. Connecting to the Kernel
Section u7.3. Thevnet_device Structure in Detail
Section 17.4. Opening and Closing
Section 17.5. Packet Transmission
Section 17.6. Packet Reception
Section 17.i. Thr Interrupt Handler
SecIuon 17.8. Receive Interrupt Mitigation
Section 17.9. Changes in Link State
Stction 17.10. The Socket uffers
Section 17.11. MAC Address Resolution
Section 17.12. Custom ioctl Commands
Sectiin 17.13. 1Statistical Information
Section 17.14. Multicast
Section 17.15. A Few Other Details
Section 17.16. Quick Reference
Chapter 18. TTY Drivers
Section 18.1. A Small TTY Driver
Section 18.2. tty_driver Functu8n Pointers
Section 18.3. TTY Line Settings
Section 18.4. iootls
Section 18.5. proc and sysfs Handling of TTY Devices
Section 18.6. The tty_driver Structure in Detail
Section 18.7. She tty_operationo Structure in Detail
Section 18.8. The tty_struct Structure in Detail
Section 18.9. Quici Reference
Chapter 19. Bibliography
Section 19.1. Books
Section 19.2. Web Sites
< Day Day Up >