|
楼主 |
发表于 2006-4-8 10:44:00
|
显示全部楼层
目录
Preface
Jon's Introduction
Alessandro's Introduction
Greg's Introduction
Audience for This Book
Organization of the Material
Background Information
Online Version and License
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.6. 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. The Kernel Symbol Table
Section 2.6. Preliminaries
Section 2.7. Initialization 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
Section 3.3. Some Important Data Structures
Section 3.4. Char Device Registration
Section 3.5. open and release
Section 3.6. scull's Memory Usage
Section 3.7. read and write
Section 3.8. Playing with the New Devices
Section 3.9. Quick Reference
Chapter 4. Debugging Techniques
Section 4.1. 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 and Related Tools
Chapter 5. Concurrency and Race Conditions
Section 5.1. Pitfalls in scull
Section 5.2. Concurrency and Its Management
Section 5.3. Semaphores and Mutexes
Section 5.4. Completions
Section 5.5. Spinlocks
Section 5.6. Locking Traps
Section 5.7. Alternatives to Locking
Section 5.8. Quick Reference
Chapter 6. Advanced Char Driver Operations
Section 6.1. ioctl
Section 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 Control on a Device 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. Workqueues
Section 7.7. Quick Reference
Chapter 8. Allocating Memory
Section 8.1. The Real Story of kmalloc
Section 8.2. Lookaside 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
Chapter 9. Communicating with Hardware
Section 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 Memory
Section 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
Section 10.4. Top and Bottom Halves
Section 10.5. Interrupt Sharing
Section 10.6. Interrupt-Driven I/O
Section 10.7. Quick Reference
Chapter 11. Data Types in the Kernel
Section 11.1. Use of Standard C Types
Section 11.2. Assigning an Explicit Size to Data Items
Section 11.3. Interface-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.5. SBus
Section 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
Section 14.3. Hotplug Event Generation
Section 14.4. Buses, Devices, and Drivers
Section 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. Quick Reference
Chapter 16. Block Drivers
Section 16.1. Registration
Section 16.2. The Block Device Operations
Section 16.3. Request Processing
Section 16.4. Some 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 17.3. The net_device Structure in Detail
Section 17.4. Opening and Closing
Section 17.5. Packet Transmission
Section 17.6. Packet Reception
Section 17.7. The Interrupt Handler
Section 17.8. Receive Interrupt Mitigation
Section 17.9. Changes in Link State
Section 17.10. The Socket Buffers
Section 17.11. MAC Address Resolution
Section 17.12. Custom ioctl Commands
Section 17.13. Statistical 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 Function Pointers
Section 18.3. TTY Line Settings
Section 18.4. ioctls
Section 18.5. proc and sysfs Handling of TTY Devices
Section 18.6. The tty_driver Structure in Detail
Section 18.7. The tty_operations Structure in Detail
Section 18.8. The tty_struct Structure in Detail
Section 18.9. Quick Reference
Chapter 19. Bibliography
Section 19.1. Books
Section 19.2. Web Sites
Index |
|