linux 好书在线版 ldd

• 
Table of Contents

• 
Index

• 
Reviews

• 
Examples

• 
Reader Reviews

• 
Errata

• 
Academic

Linux Device Drivers, 3rd Edition

By Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini

Publisher
: O'Reilly

Pub Date
: February 2005

ISBN
: 0-596-00590-3

Pages
: 636

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

1. An Introduction to Device Drivers

1.1. The Role of the Device Driver

1.2. Splitting the Kernel

1.3. Classes of Devices and Modules

1.4. Security Issues

1.5. Version Numbering

1.6. License Terms

1.7. Joining the Kernel Development Community

1.8. Overview of the Book

2. Building and Running Modules

2.1. Setting Up Your Test System

2.2. The Hello World Module

2.3. Kernel Modules Versus Applications

2.4. Compiling and Loading

2.5. The Kernel Symbol Table

2.6. Preliminaries

2.7. Initialization and Shutdown

2.8. Module Parameters

2.9. Doing It in User Space

2.10. Quick Reference

3. Char Drivers

3.1. The Design of scull

3.2. Major and Minor Numbers

3.3. Some Important Data Structures

3.4. Char Device Registration

3.5. open and release

3.6. scull's Memory Usage

3.7. read and write

3.8. Playing with the New Devices

3.9. Quick Reference

4. Debugging Techniques

4.1. Debugging Support in the Kernel

4.2. Debugging by Printing

4.3. Debugging by Querying

4.4. Debugging by Watching

4.5. Debugging System Faults

4.6. Debuggers and Related Tools

5. Concurrency and Race Conditions

5.1. Pitfalls in scull

5.2. Concurrency and Its Management

5.3. Semaphores and Mutexes

5.4. Completions

5.5. Spinlocks

5.6. Locking Traps

5.7. Alternatives to Locking

5.8. Quick Reference

6. Advanced Char Driver Operations

6.1. ioctl

6.2. Blocking I/O

6.3. poll and select

6.4. Asynchronous Notification

6.5. Seeking a Device

6.6. Access Control on a Device File

6.7. Quick Reference

7. Time, Delays, and Deferred Work

7.1. Measuring Time Lapses

7.2. Knowing the Current Time

7.3. Delaying Execution

7.4. Kernel Timers

7.5. Tasklets

7.6. Workqueues

7.7. Quick Reference

8. Allocating Memory

8.1. The Real Story of kmalloc

8.2. Lookaside Caches

8.3. get_free_page and Friends

8.4. vmalloc and Friends

8.5. Per-CPU Variables

8.6. Obtaining Large Buffers

8.7. Quick Reference

9. Communicating with Hardware

9.1. I/O Ports and I/O Memory

9.2. Using I/O Ports

9.3. An I/O Port Example

9.4. Using I/O Memory

9.5. Quick Reference

10. Interrupt Handling

10.1. Preparing the Parallel Port

10.2. Installing an Interrupt Handler

10.3. Implementing a Handler

10.4. Top and Bottom Halves

10.5. Interrupt Sharing

10.6. Interrupt-Driven I/O

10.7. Quick Reference

11. Data Types in the Kernel

11.1. Use of Standard C Types

11.2. Assigning an Explicit Size to Data Items

11.3. Interface-Specific Types

11.4. Other Portability Issues

11.5. Linked Lists

11.6. Quick Reference

12. PCI Drivers

12.1. The PCI Interface

12.2. A Look Back: ISA

12.3. PC/104 and PC/104+

12.4. Other PC Buses

12.5. SBus

12.6. NuBus

12.7. External Buses

12.8. Quick Reference

13. USB Drivers

13.1. USB Device Basics

13.2. USB and Sysfs

13.3. USB Urbs

13.4. Writing a USB Driver

13.5. USB Transfers Without Urbs

13.6. Quick Reference

14. The Linux Device Model

14.1. Kobjects, Ksets, and Subsystems

14.2. Low-Level Sysfs Operations

14.3. Hotplug Event Generation

14.4. Buses, Devices, and Drivers

14.5. Classes

14.6. Putting It All Together

14.7. Hotplug

14.8. Dealing with Firmware

14.9. Quick Reference

15. Memory Mapping and DMA

15.1. Memory Management in Linux

15.2. The mmap Device Operation

15.3. Performing Direct I/O

15.4. Direct Memory Access

15.5. Quick Reference

16. Block Drivers

16.1. Registration

16.2. The Block Device Operations

16.3. Request Processing

16.4. Some Other Details

16.5. Quick Reference

17. Network Drivers

17.1. How snull Is Designed

17.2. Connecting to the Kernel

17.3. The net_device Structure in Detail

17.4. Opening and Closing

17.5. Packet Transmission

17.6. Packet Reception

17.7. The Interrupt Handler

17.8. Receive Interrupt Mitigation

17.9. Changes in Link State

17.10. The Socket Buffers

17.11. MAC Address Resolution

17.12. Custom ioctl Commands

17.13. Statistical Information

17.14. Multicast

17.15. A Few Other Details

17.16. Quick Reference

18. TTY Drivers

18.1. A Small TTY Driver

18.2. tty_driver Function Pointers

18.3. TTY Line Settings

18.4. ioctls

18.5. proc and sysfs Handling of TTY Devices

18.6. The tty_driver Structure in Detail

18.7. The tty_operations Structure in Detail

18.8. The tty_struct Structure in Detail

18.9. Quick Reference

19. Bibliography

19.1. Books

19.2. Web Sites

Index

⇦ prev
⇱ home

原文地址:https://www.cnblogs.com/titer1/p/2308970.html