Atjaunināt sīkdatņu piekrišanu

Linux Device Drivers 2nd Revised edition [Grāmata]

3.61/5 (93 ratings by Goodreads)
  • Formāts: Book, 570 pages, height x width: 234x179 mm, weight: 840 g
  • Izdošanas datums: 31-Jul-2001
  • Izdevniecība: O'Reilly Media
  • ISBN-10: 0596000081
  • ISBN-13: 9780596000080
Citas grāmatas par šo tēmu:
  • Formāts: Book, 570 pages, height x width: 234x179 mm, weight: 840 g
  • Izdošanas datums: 31-Jul-2001
  • Izdevniecība: O'Reilly Media
  • ISBN-10: 0596000081
  • ISBN-13: 9780596000080
Citas grāmatas par šo tēmu:
This text is aimed at anyone who wants to support computer peripherals under the Linux operating system or who wants to develop new hardware and run it under Linux. As the fastest-growing segment of the Unix market, Linux is winning over enthusiastic adherents in many application areas, and is being viewed more and more as a good platform for embedded systems. "Linux Device Drivers" shows how to write drivers for a wide range of devices. Drivers for character devices, block devices, and network interfaces are all described in step-by-step form and are illustrated with full-featured examples that show driver design issues and can be executed without special hardware. Major changes in the second edition include support for symmetric multiprocessing (SMP), Universal Service Bus (USB), and some new platforms. For those who are curious about how an operating system does its job, this book provides insights into address spaces, asynchronous events, and I/O. Portability is a major concern in the text. The book is centered on kernel version 2.4, but includes information for kernels back to 2.0 where feasible. It also shows how to maximize portability among hardware platforms; examples were tested on IA32 (PC) and IA64, PowerPC, SPARC and SPARC64, Alpha, ARM, and MIPS.

Recenzijas

'Quite simply, It's an inspiration for anyone interested in pushing contemporary computer hardware and GNU/Linux to the limit'. Linux User, October 2001

Preface xi
An Introduction to Device Drivers
1(14)
The Role of the Device Driver
2(2)
Splitting the Kernel
4(2)
Classes of Devices and Modules
6(3)
Security Issues
9(1)
Version Numbering
10(2)
License Terms
12(1)
Joining the Kernel Development Community
13(1)
Overview of the Book
13(2)
Building and Running Modules
15(39)
Kernel Modules Versus Applications
16(6)
Compiling and Loading
22(5)
The Kernel Symbol Table
27(2)
Initialization and Shutdown
29(6)
Using Resources
35(7)
Automatic and Manual Configuration
42(3)
Doing It in User Space
45(2)
Backward Compatibility
47(3)
Quick Reference
50(4)
Char Drivers
54(43)
The Design of scull
54(1)
Major and Minor Numbers
55(8)
File Operations
63(3)
The file Structure
66(2)
open and release
68(5)
scull's Memory Usage
73(3)
A Brief Introduction to Race Conditions
76(2)
read and write
78(7)
Playing with the New Devices
85(1)
The Device Filesystem
85(6)
Backward Compatibility
91(4)
Quick Reference
95(2)
Debugging Techniques
97(31)
Debugging by Printing
97(6)
Debugging by Querying
103(5)
Debugging by Watching
108(2)
Debugging System Faults
110(10)
Debuggers and Related Tools
120(8)
Enhanced Char Driver Operations
128(53)
ioctl
129(12)
Blocking I/O
141(13)
poll and select
154(5)
Asynchronous Notification
159(4)
Seeking a Device
163(1)
Access Control on a Device File
164(8)
Backward Compatibility
172(5)
Quick Reference
177(4)
Flow of Time
181(27)
Time Intervals in the Kernel
181(3)
Knowing the Current Time
184(2)
Delaying Execution
186(3)
Task Queues
189(11)
Kernel Timers
200(4)
Backward Compatibility
204(1)
Quick Reference
205(3)
Getting Hold of Memory
208(18)
The Real Story of kmalloc
208(3)
Lookaside Caches
211(3)
get_free_page and Friends
214(3)
vmalloc and Friends
217(4)
Boot-Time Allocation
221(2)
Backward Compatibility
223(1)
Quick Reference
224(2)
Hardware Management
226(25)
I/O Ports and I/O Memory
226(3)
Using I/O Ports
229(6)
Using Digital I/O Ports
235(3)
Using I/O Memory
238(10)
Backward Compatibility
248(1)
Quick Reference
249(2)
Interrupt Handling
251(42)
Overall Control of Interrupts
251(2)
Preparing the Parallel Port
253(1)
Installing an Interrupt Handler
253(11)
Implementing a Handler
264(5)
Tasklets and Bottom-Half Processing
269(5)
Interrupt Sharing
274(4)
Interrupt-Driven I/O
278(1)
Race Conditions
278(10)
Backward Compatibility
288(1)
Quick Reference
289(4)
Judicious Use of Data Types
293(12)
Use of Standard C Types
293(2)
Assigning an Explicit Size to Data Items
295(1)
Interface-Specific Types
296(1)
Other Portability Issues
297(3)
Linked Lists
300(3)
Quick Reference
303(2)
Kmod and Advanced Modularization
305(16)
Loading Modules on Demand
305(6)
Intermodule Communication
311(3)
Version Control in Modules
314(4)
Backward Compatibility
318(1)
Quick Reference
319(2)
Loading Block Drivers
321(49)
Registering the Driver
322(6)
The Header File blk.h
328(2)
Handling Requests: A Simple Introduction
330(4)
Handling Requests: The Detailed View
334(14)
How Mounting and Unmounting Works
348(1)
The ioctl Method
349(3)
Removable Devices
352(3)
Partitionable Devices
355(7)
Interrupt-Driven Block Drivers
362(2)
Backward Compatibility
364(2)
Quick Reference
366(4)
MMAP AND DMA
370(55)
Memory Management in Linux
370(12)
The mmap Device Operation
382(14)
The kiobuf Interface
396(5)
Direct Memory Access and Bus Mastering
401(17)
Backward Compatibility
418(3)
Quick Reference
421(4)
Network Drivers
425(45)
How snull Is Designed
426(4)
Connecting to the Kernel
430(5)
The net_device Structure in Detail
435(8)
Opening and Closing
443(2)
Packet Transmission
445(3)
Packet Reception
448(2)
The Interrupt Handler
450(1)
Changes in Link State
451(1)
The Socket Buffers
452(3)
MAC Address Resolution
455(3)
Custom ioctl Commands
458(1)
Statistical Information
459(1)
Multicasting
460(4)
Backward Compatibility
464(3)
Quick Reference
467(3)
Overview of Peripheral Buses
470(36)
The PCI Interface
470(24)
A Look Back: ISA
494(2)
PC/104 and PC/104+
496(1)
Other PC Buses
497(1)
SBus
498(1)
NuBus
499(1)
External Buses
499(3)
Backward Compatibility
502(1)
Quick Reference
503(3)
Physical Layout of the Kernel Source
506(21)
Booting the Kernel
507(2)
Before Booting
509(2)
The init Process
511(1)
The kernel Directory
512(1)
The fs Directory
513(1)
The mm Directory
514(2)
The net directory
516(1)
ipc and lib
517(1)
include and arch
517(1)
Drivers
517(10)
Bibliography 527(2)
Index 529


Alessandro Rubini installed Linux 0.99.14 soon after getting his degree as an electronic engineer. He then received a Ph.D. in computer science at the University of Pavia. He left the University soon afterward because he didn't want to write articles. He now works freelancer writing device drivers and, um...articles. He used to be a young hacker before his babies were born; he's now an old advocate of Free Software who developed a bias for non-PC computer platforms. Jonathan Corbet got his first look at the BSD Unix source back in 1981, when an instructor at the University of Colorado let him "fix" the paging algorithm. He has been digging around inside every system he could get his hands on ever since, working on drivers for VAX, Sun, Ardent, and x86 systems on the way. He got his first Linux system in 1993, and has never looked back. Mr. Corbet is the co-founder and executive editor of Linux Weekly News; he lives in Boulder, Colorado with his wife and two children.