-
Chapter 1 An Introduction to the Linux Kernel
-
The Role of the Driver Writer
-
Splitting the Kernel
-
Classes of Devices and Modules
-
Security Issues
-
Version Numbering
-
License Terms
-
Overview of the Book
-
-
Chapter 2 Building and Running Modules
-
Modules Versus Applications
-
Compiling and Loading
-
The Kernel Symbol Table
-
Initialization and Shutdown
-
Using Resources
-
Automatic and Manual Configuration
-
Doing It in User Space
-
Quick Reference
-
-
Chapter 3 Char Drivers
-
The Design of scull
-
Major and Minor Numbers
-
File Operations
-
The file Structure
-
Open and Release
-
Scull's Memory Usage
-
Read and Write
-
Playing with the New Devices
-
Quick Reference
-
-
Chapter 4 Debugging Techniques
-
Debugging by Printing
-
Debugging by Querying
-
Debugging by Watching
-
Debugging System Faults
-
Using a Debugger
-
-
Chapter 5 Enhanced Char Driver Operations
-
ioctl
-
Blocking I/O
-
Select
-
Asynchronous Notification
-
Seeking a Device
-
Access Control on a Device File
-
Quick Reference
-
-
Chapter 6 Flow of Time
-
Time Intervals in the Kernel
-
Knowing the Current Time
-
Delaying Execution
-
Task Queues
-
Kernel Timers
-
Quick Reference
-
-
Chapter 7 Getting Hold of Memory
-
The Real Story of kmalloc
-
get_free_page and Friends
-
vmalloc and Friends
-
Playing Dirty
-
Quick Reference
-
-
Chapter 8 Hardware Management
-
Using I/O Ports
-
Using the Parallel Port
-
Accessing Memory on Device Boards
-
Accessing the Text-Mode Video Buffer
-
Quick Reference
-
-
Chapter 9 Interrupt Handling
-
Preparing the Parallel Port
-
Installing an Interrupt Handler
-
Implementing a Handler
-
Bottom Halves
-
Interrupt Sharing
-
Interrupt-Driven I/O
-
Race Conditions
-
Version Dependencies of IRQ Handling
-
Quick Reference
-
-
Chapter 10 Judicious Use of Data Types
-
Use of Standard C Types
-
Assigning an Explicit Size to Data Items
-
Interface-Specific Types
-
Other Portability Issues
-
Quick Reference
-
-
Chapter 11 Kerneld and Advanced Modularization
-
Loading Modules on Demand
-
Version Control in Modules
-
Persistent Storage Across Unload/Load
-
Quick Reference
-
-
Chapter 12 Loading Block Drivers
-
Registering the Driver
-
The Header File blk.h
-
Handling Requests
-
How Mounting Works
-
The ioctl Method
-
Removable Devices
-
Partitionable Devices
-
Interrupt-Driven Block Drivers
-
Quick Reference
-
-
Chapter 13 Mmap and DMA
-
Memory Management in Linux
-
The mmap Device Operation
-
Direct Memory Access
-
Quick Reference
-
-
Chapter 14 Network Drivers
-
How snull Is Designed
-
Connecting to the Kernel
-
The device Structure in Detail
-
Opening and Closing
-
Packet Transmission
-
Packet Reception
-
Interrupt-Driven Operation
-
The Socket Buffers
-
Address Resolution
-
Load-Time Configuration
-
Run-Time Configuration
-
Custom ioctl Commands
-
Statistical Information
-
Multicasting
-
Quick Reference
-
-
Chapter 15 Overview of Peripheral Buses
-
The PCI Interface
-
A Look Back: ISA
-
Other PC Buses
-
Sbus
-
Quick Reference
-
-
Chapter 16 Physical Layout of the Kernel Source
-
Booting the Kernel
-
Before Booting
-
The Init Process
-
The kernel Directory
-
The mm Directory
-
The fs Directory
-
Networking
-
IPC and lib Functions
-
Drivers
-
Architecture Dependencies
-
-
Chapter 17 Recent Developments
-
Modularization
-
File Operations
-
Accessing User Space
-
Task Queues
-
Interrupt Management
-
Bit Operations
-
Conversion Functions
-
vremap
-
Virtual Memory
-
Handling Kernel-Space Faults
-
Other Changes
-
-
Colophon
- Title:
- Linux Device Drivers
- By:
- Alessandro Rubini
- Publisher:
- O'Reilly Media
- Formats:
-
- Print Release:
- February 1998
- Pages:
- 439
- Print ISBN:
- 978-1-56592-292-1
- | ISBN 10:
- 1-56592-292-1
Our look is the result of reader comments, our own experimentation, and feedback from distribution channels. Distinctive covers complement our distinctive approach to technical topics, breathing personality and life into potentially dry subjects. The image on the cover of Linux Device Drivers is of a bucking horse. A vivid description of this phenomenon is given in Marvels of the New West: A Vivid Portrayal of the Stupendous Marvels in the Vast Wonderland West of the Missouri River, by William Thayer (The Henry Bill Publishing Co., Norwich, CT, 1888). Thayer quotes a stockman who gives this description of a bucking horse: When a horse bucks he puts his head down between his legs, arches his back like an angry cat, and springs into the air with all his legs at once, coming down again with a frightful jar, and he sometimes keeps on repeating the performance until he is completely worn out with the excursion. The rider is apt to feel rather worn out too by that time, if he has kept his seat, which is not a very easy matter, especially if the horse is a real scientific bucker, and puts a kind of side action into every jump. The double girth commonly attached to these Mexican saddles is useful for keeping the saddle in its place during one of those bouts, but there is no doubt that they frequently make a horse buck who would not do so with a single girth. With some animals you can never draw up the flank girth without setting them bucking. The cover layout was produced with Quark XPress 3.3 and Adobe Photoshop 2.5 software, using the ITC Garamond Condensed font.
The interior layouts were designed by Edie Freedman and Jennifer Niederst, with modifications by Nancy Priest and Mary Jane Walsh. Chapter opening graphics are from the Dover Pictorial Archive and Marvels of the New West. Interior fonts are Adobe ITC Garamond and Adobe Courier. Text was prepared in SGML using the DocBook 2.1 DTD. The print version of this book was created by translating the SGML source into a set of gtroff macros using a filter developed at ORA by Norman Walsh. Steve Talbott designed and wrote the underlying macro set on the basis of the GNU gtroff -gs macros; Lenny Muellner adapted them to SGML and implemented the book design. The GNU groff text formatter version 1.09 was used to generate PostScript output. The illustrations that appear in the book were created in Macromedia Freehand 5.0 by Chris Reilley.
