Linux device drivers
Device drivers literally drive everything you're interested in--disks, monitors, keyboards, modems--everything outside the computer chip and memory. And writing device drivers is one of the few areas of programming for the Linux operating system that calls for unique, Linux-specific knowledge....
Main Author: | |
---|---|
Other Authors: | , |
Format: | eBook |
Language: | Inglés |
Published: |
Sebastopol :
O'Reilly & Associates
2005.
|
Edition: | 3rd ed |
Subjects: | |
See on Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009626892106719 |
Table of Contents:
- Linux Device Drivers, 3rd Edition; 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; Alessandro; Greg; 1. An Introduction to Device Drivers; 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.2. The Hello World Module2.3. Kernel Modules Versus Applications; 2.3.2. Concurrency in the Kernel; 2.3.3. The Current Process; 2.3.4. A Few Other Details; 2.4. Compiling and Loading; 2.4.2. Loading and Unloading Modules; 2.4.3. Version Dependency; 2.4.4. Platform Dependency; 2.5. The Kernel Symbol Table; 2.6. Preliminaries; 2.7. Initialization and Shutdown; 2.7.2. Error Handling During Initialization; 2.7.3. Module-Loading Races; 2.8. Module Parameters; 2.9. Doing It in User Space; 2.10. Quick Reference; 3. Char Drivers; 3.2. Major and Minor Numbers
- 3.2.2. Allocating and Freeing Device Numbers3.2.3. Dynamic Allocation of Major Numbers; 3.3. Some Important Data Structures; 3.3.2. The file Structure; 3.3.3. The inode Structure; 3.4. Char Device Registration; 3.4.2. The Older Way; 3.5. open and release; 3.5.2. The release Method; 3.6. scull&s Memory Usage; 3.7. read and write; 3.7.2. The write Method; 3.7.3. readv and writev; 3.8. Playing with the New Devices; 3.9. Quick Reference; 4. Debugging Techniques; 4.2. Debugging by Printing; 4.2.2. Redirecting Console Messages; 4.2.3. How Messages Get Logged; 4.2.4. Turning the Messages On and Off
- 4.2.5. Rate Limiting4.2.6. Printing Device Numbers; 4.3. Debugging by Querying; 4.3.1.2. An older interface; 4.3.1.3. Creating your /proc file; 4.3.1.4. The seq_file interface; 4.3.2. The ioctl Method; 4.4. Debugging by Watching; 4.5. Debugging System Faults; 4.5.2. System Hangs; 4.6. Debuggers and Related Tools; 4.6.2. The kdb Kernel Debugger; 4.6.3. The kgdb Patches; 4.6.4. The User-Mode Linux Port; 4.6.5. The Linux Trace Toolkit; 4.6.6. Dynamic Probes; 5. Concurrency and Race Conditions; 5.2. Concurrency and Its Management; 5.3. Semaphores and Mutexes; 5.3.2. Using Semaphores in scull
- 5.3.3. Reader/Writer Semaphores5.4. Completions; 5.5. Spinlocks; 5.5.2. Spinlocks and Atomic Context; 5.5.3. The Spinlock Functions; 5.5.4. Reader/Writer Spinlocks; 5.6. Locking Traps; 5.6.2. Lock Ordering Rules; 5.6.3. Fine- Versus Coarse-Grained Locking; 5.7. Alternatives to Locking; 5.7.2. Atomic Variables; 5.7.3. Bit Operations; 5.7.4. seqlocks; 5.7.5. Read-Copy-Update; 5.8. Quick Reference; 6. Advanced Char Driver Operations; 6.1.2. The Return Value; 6.1.3. The Predefined Commands; 6.1.4. Using the ioctl Argument; 6.1.5. Capabilities and Restricted Operations
- 6.1.6. The Implementation of the ioctl Commands