| 简介 | ![]() 
 内容推荐     本书是经典著作《Linux设备驱动程序》的第3版。如果您希望在Linux操作系统上支持计算机外部设备,或者在Linux止运行新的硬件,或者只是希望一般性地了解Linux内核的编程,就一定要阅读本书。本书描述了如何针对各种设备编写驱动程序,而在过去,这些内容仅仅以口头形式交流,或者零星出现在神秘的代码注释中。本书的作者均是Linux社区的领导者。Jonathan Corbet虽不是专职的内核代码贡献者,但他是备受关注的LwN.net新闻及信息网站的执行编辑。Alessandro Rubini是一名Linux代码贡献者,也是活跃的意大利Linux社区的灵魂人物。Greg Kroah-Hartman是目前内核中USB、PCI和驱动程序核心子系统(本书均有讲述)的维护者。
 本书的这个版本已针对Linux内核的2.6.10版本彻底更新过。内核的这个版本针对常见任务完成了合理化设计及相应的简化,如即插即用、利用sysfs文件系统和用户空间交互,以及标准总线上的多设备管理等等。
 要阅读并理解本书,您不必首先成为内核黑客;只要您理解c语言并具有unix系统调用的一些背景知识即可。您将学到如何为字符设备、块设备和网络接口编写驱动程序。为此,本书提供了完整的示例程序,您不需要特殊的硬件即可编译和运行这些示例程序。本书还在单独的章节中讲述了PCI、UsB和tty(终端)子系统。对期望了解操作系统内部工作原理的读者来讲,本书也深入阐述了地址空间、异步事件以及I/O等方面的内容。
 目录 Preface1. An Introduction to Device Drivers
 The Role of the Device Driver
 Splitting the Kernel
 Classes of Devices and Modules
 Security Issues
 Version Numbering
 License Terms
 Joining the Kernel Development Community
 Overview of the Book
 2. Building and Running Modules
 Setting Up Your Test System
 The Hello World Module
 Kernel Modules Versus Applications
 Compiling and Loading
 The Kernel Symbol Table
 Preliminaries
 Initialization and Shutdown
 Module Parameters
 Doing It in User Space
 Quick Reference
 3. Char Drivers
 The Design of scull
 Major and Minor Numbers
 Some Important Data Structures
 Char Device Registration
 open and release
 scull's Memory Usage
 read and write
 Playing with the New Devices
 Quick Reference
 4. Debugging Techniques
 Debugging Support in the Kernel
 Debugging by Printing
 Debugging by Querying
 Debugging by Watching
 Debugging System Faults
 Debuggers and Related Tools
 5. Concurrency and Race Conditions
 Pitfalls in scull
 Concurrency and Its Management
 Semaphores and Mutexes
 Completions
 Spinlocks
 Locking Traps
 Alternatives to Locking
 Quick Reference
 6. Advanced Char Driver Operations
 ioctl
 Blocking I/O
 poll and select
 Asynchronous Notification
 Seeking a Device
 Access Control on a Device File
 Quick Reference
 7. Time, Delays, and Deferred Work
 Measuring Time Lapses
 Knowing the Current Time
 Delaying Execution
 Kernel Timers
 Tasklets
 Workqueues
 Quick Reference
 8. Allocating Memory
 The Real Story of kmalloc
 Lookaside Caches
 get_flee_page and Friends
 vmalloc and Friends
 Per-CPU Variables
 Obtaining Large Buffers
 Quick Reference
 9. Communicating with Hardware
 I/O Ports and I/O Memory
 Using I/O Ports
 An I/O Port Example
 Using I/O Memory
 Quick Reference
 10. Interrupt Handling
 Preparing the Parallel Port
 Installing an Interrupt Handler
 Implementing a Handler
 Top and Bottom Halves
 Interrupt Sharing
 Interrupt-Driven I/O
 Quick Reference
 11. Data Types in the Kernel
 Use of Standard C Types
 Assigning an Explicit Size to Data Items
 Interface-Specific Types
 Other Portability Issues
 Linked Lists
 Quick Reference
 12. PCl Drivers
 The PCI Interface
 A LookBackl. ISA
 PC/104 and PC/104+
 Other PC Buses
 SBus
 NuBus
 External Buses
 Quick Reference
 13. USB Drivers
 USB Device Basics
 USB and Sysfs
 USB Urbs
 Writing a USB Driver
 USB Transfers Without Urbs
 Quick Reference
 14. The Linux Device Model
 Kobjects, Ksets, and Subsystems
 Low-Level Sysfs Operations
 Hotplug Event Generation
 Buses, Devices, and Drivers
 Classes
 Putting It All Together
 Hotplug
 Dealing with Firmware
 Quick Reference
 15. Memory Mapping and DMA
 Memory Management in Linux
 The mmap Device Operation
 Performing Direct I/O
 Direct Memory Access
 Quick Reference
 16. Block Drivers
 Registration
 The Block Device Operations
 Request Processing
 Some Other Details
 Quick Reference
 17. Network Drivers
 How snull Is Designed
 Connecting to the Kernel
 The net_device Structure in Detail
 Opening and Closing
 Packet Transmission
 Packet Reception
 The Interrupt Handler
 Receive Interrupt Mitigation
 Changes in Link State
 The Socket Buffers
 MAC Address Resolution
 Custom ioctl Commands
 Statistical Information
 Multicast
 A Few Other Details
 Quick Reference
 18. TTY Drivers
 A Small TTY Driver
 tty_driver Function Pointers
 TTY Line Settings
 ioctls
 proc and sysfs Handling of TTY Devices
 The tty_driver Structure in Detail
 The tty_operations Structure in Detail
 The tty_struct Structure in Detail
 Quick Reference
 Bibliography
 Index
 
 |