Muutke küpsiste eelistusi

E-raamat: Linux Device Drivers: Where the Kernel Meets the Hardware

  • Formaat: 640 pages
  • Sari: O'Reilly Software Ser.
  • Ilmumisaeg: 07-Feb-2005
  • Kirjastus: O'Reilly Media
  • Keel: eng
  • ISBN-13: 9780596555382
Teised raamatud teemal:
  • Formaat - EPUB+DRM
  • Hind: 29,84 €*
  • * hind on lõplik, st. muud allahindlused enam ei rakendu
  • Lisa ostukorvi
  • Lisa soovinimekirja
  • See e-raamat on mõeldud ainult isiklikuks kasutamiseks. E-raamatuid ei saa tagastada.
  • Formaat: 640 pages
  • Sari: O'Reilly Software Ser.
  • Ilmumisaeg: 07-Feb-2005
  • Kirjastus: O'Reilly Media
  • Keel: eng
  • ISBN-13: 9780596555382
Teised raamatud teemal:

DRM piirangud

  • Kopeerimine (copy/paste):

    ei ole lubatud

  • Printimine:

    ei ole lubatud

  • Kasutamine:

    Digitaalõiguste kaitse (DRM)
    Kirjastus on väljastanud selle e-raamatu krüpteeritud kujul, mis tähendab, et selle lugemiseks peate installeerima spetsiaalse tarkvara. Samuti peate looma endale  Adobe ID Rohkem infot siin. E-raamatut saab lugeda 1 kasutaja ning alla laadida kuni 6'de seadmesse (kõik autoriseeritud sama Adobe ID-ga).

    Vajalik tarkvara
    Mobiilsetes seadmetes (telefon või tahvelarvuti) lugemiseks peate installeerima selle tasuta rakenduse: PocketBook Reader (iOS / Android)

    PC või Mac seadmes lugemiseks peate installima Adobe Digital Editionsi (Seeon tasuta rakendus spetsiaalselt e-raamatute lugemiseks. Seda ei tohi segamini ajada Adober Reader'iga, mis tõenäoliselt on juba teie arvutisse installeeritud )

    Seda e-raamatut ei saa lugeda Amazon Kindle's. 

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. For years now, programmers have relied on the classic Linux Device Drivers from O'Reilly to master this critical subject. Now in its third edition, this bestselling guide provides all the information you'll need to write drivers for a wide range of devices. Over the years the book has helped countless programmers learn: * how to support computer peripherals under the Linux operating system * how to develop and write software for new hardware under Linux * the basics of Linux operation even if they are not expecting to write a driver The new edition of Linux Device Drivers is better than ever. The book covers all the significant changes to Version 2.6 of the Linux kernel, which simplifies many activities, and contains subtle new features that can make a driver both more efficient and more flexible. Readers will find new chapters on important types of drivers not covered previously, such as consoles, USB drivers, and more. Best of all, you don't have to be a kernel hacker to understand and enjoy this book. All you need is an understanding of the C programming language and some background in Unix system calls. And for maximum ease-of-use, the book uses full-featured examples that you can compile and run without special hardware. Today Linux holds fast as the most rapidly growing segment of the computer market and continues to win over enthusiastic adherents in many application areas. With this increasing support, Linux is now absolutely mainstream, and viewed as a solid platform for embedded systems. If you're writing device drivers, you'll want this book. In fact, you'll wonder how drivers are ever written without it.
Preface xi
An Introduction to Device Drivers
1(14)
The Role of the Device Driver
2(2)
Splitting the Kernel
4(1)
Classes of Devices and Modules
5(3)
Security Issues
8(2)
Version Numbering
10(1)
License Terms
11(1)
Joining the Kernel Development Community
12(1)
Overview of the Book
12(3)
Building and Running Modules
15(27)
Setting Up Your Test System
15(1)
The Hello World Module
16(2)
Kernel Modules Versus Applications
18(4)
Compiling and Loading
22(6)
The Kernel Symbol Table
28(2)
Preliminaries
30(1)
Initialization and Shutdown
31(4)
Module Parameters
35(2)
Doing It in User Space
37(2)
Quick Reference
39(3)
Char Drivers
42(31)
The Design of scull
42(1)
Major and Minor Numbers
43(6)
Some Important Data Structures
49(6)
Char Device Registration
55(3)
open and release
58(2)
scull's Memory Usage
60(3)
read and write
63(7)
Playing with the New Devices
70(1)
Quick Reference
70(3)
Debugging Techniques
73(33)
Debugging Support in the Kernel
73(2)
Debugging by Printing
75(7)
Debugging by Querying
82(9)
Debugging by Watching
91(2)
Debugging System Faults
93(6)
Debuggers and Related Tools
99(7)
Concurrency and Race Conditions
106(29)
Pitfalls in scull
107(1)
Concurrency and Its Management
107(2)
Semaphores and Mutexes
109(5)
Completions
114(2)
Spinlocks
116(5)
Locking Traps
121(2)
Alternatives to Locking
123(7)
Quick Reference
130(5)
Advanced Char Driver Operations
135(48)
ioctl
135(12)
Blocking I/O
147(16)
poll and select
163(6)
Asynchronous Notification
169(2)
Seeking a Device
171(2)
Access Control on a Device File
173(6)
Quick Reference
179(4)
Time, Delays, and Deferred Work
183(30)
Measuring Time Lapses
183(5)
Knowing the Current Time
188(2)
Delaying Execution
190(6)
Kernel Timers
196(6)
Tasklets
202(3)
Workqueues
205(3)
Quick Reference
208(5)
Allocating Memory
213(22)
The Real Story of kmalloc
213(4)
Lookaside Caches
217(4)
get_free_page and Friends
221(3)
vmalloc and Friends
224(4)
Per-CPU Variables
228(2)
Obtaining Large Buffers
230(1)
Quick Reference
231(4)
Communicating with Hardware
235(23)
I/O Ports and I/O Memory
235(4)
Using I/O Ports
239(6)
An I/O Port Example
245(3)
Using I/O Memory
248(7)
Quick Reference
255(3)
Interrupt Handling
258(30)
Preparing the Parallel Port
259(1)
Installing an Interrupt Handler
259(10)
Implementing a Handler
269(6)
Top and Bottom Halves
275(3)
Interrupt Sharing
278(3)
Interrupt-Driven I/O
281(5)
Quick Reference
286(2)
Data Types in the Kernel
288(14)
Use of Standard C Types
288(2)
Assigning an Explicit Size to Data Items
290(1)
Interface-Specific Types
291(1)
Other Portability Issues
292(3)
Linked Lists
295(4)
Quick Reference
299(3)
PCI Drivers
302(25)
The PCI Interface
302(17)
A Look Back: ISA
319(3)
PC/104 and PC/104+
322(1)
Other PC Buses
322(1)
SBus
323(1)
NuBus
324(1)
External Buses
325(1)
Quick Reference
325(2)
USB Drivers
327(35)
USB Device Basics
328(5)
USB and Sysfs
333(2)
USB Urbs
335(11)
Writing a USB Driver
346(10)
USB Transfers Without Urbs
356(4)
Quick Reference
360(2)
The Linux Device Model
362(50)
Kobjects, Ksets, and Subsystems
364(7)
Low-Level Sysfs Operations
371(4)
Hotplug Event Generation
375(2)
Buses, Devices, and Drivers
377(10)
Classes
387(4)
Putting It All Together
391(6)
Hotplug
397(8)
Dealing with Firmware
405(2)
Quick Reference
407(5)
Memory Mapping and DMA
412(52)
Memory Management in Linux
412(10)
The mmap Device Operation
422(13)
Performing Direct I/O
435(5)
Direct Memory Access
440(19)
Quick Reference
459(5)
BlockDrivers
464(33)
Registration
465(6)
The Block Device Operations
471(3)
Request Processing
474(17)
Some Other Details
491(3)
Quick Reference
494(3)
Network Drivers
497(49)
How snull Is Designed
498(4)
Connecting to the Kernel
502(4)
The net_device Structure in Detail
506(9)
Opening and Closing
515(1)
Packet Transmission
516(5)
Packet Reception
521(2)
The Interrupt Handler
523(2)
Receive Interrupt Mitigation
525(3)
Changes in Link State
528(1)
The Socket Buffers
528(4)
MAC Address Resolution
532(3)
Custom ioctl Commands
535(1)
Statistical Information
536(1)
Multicast
537(3)
A Few Other Details
540(2)
Quick Reference
542(4)
TTY Drivers
546(29)
A Small TTY Driver
548(5)
tty_driver Function Pointers
553(7)
TTY Line Settings
560(4)
ioctls
564(2)
proc and sysfs Handling of TTY Devices
566(1)
The tty_driver Structure in Detail
567(2)
The tty_operations Structure in Detail
569(2)
The tty_struct Structure in Detail
571(2)
Quick Reference
573(2)
Bibliography 575(4)
Index 579


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 currently the co-founder and executive editor of Linux Weekly News; he lives in Boulder, Colorado with his wife and two children.Alessandro Rubini installed Linux 0.99.14 soon after getting his degree as electronic engineer. He then received a Ph.D. in computer science at the University of Pavia despite his aversion toward modern technology. He left the University after getting his Ph.D. because he didn't want to write articles. He now works as a free lance 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.Greg Kroah-Hartman has been writing Linux kernel drivers since 1999, and is currently the maintainer for the USB, PCI, I2C, driver core, and sysfs kernel subsystems. He is also the maintainer of the udev and hotplug userspace programs, as well as being a Gentoo kernel maintainer, ensuring that his email inbox is never empty. He is a contributing editor to Linux Journal Magazine, and works for IBM's Linux Technology Center, doing various Linux kernel related tasks.