Linux Device Drivers (3rd Edition) [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Linux Device Drivers (3rd Edition) [Electronic resources] - نسخه متنی

Jonathan Corbet, Greg Kroah-Hartman, Alessandro Rubini

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید







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


Chapter 1.
An Introduction to Device Drivers


Section 1.1.
The Role of the Device Driver


Section 1.2.
Splitting the Kernel


Section 1.3.
Classes of Devices and Modules


Section 1.4.
Security Issues


Section 1.5.
Version Numbering


Section 1.6.
License Terms


Section 1.7.
Joining the Kernel Development Community


Section 1.8.
Overview of the Book


Chapter 2.
Building and Running Modules


Section 2.1.
Setting Up Your Test System


Section 2.2.
The Hello World Module


Section 2.3.
Kernel Modules Versus Applications


Section 2.4.
Compiling and Loading


Section 2.5.
The Kernel Symbol Table


Section 2.6.
Preliminaries


Section 2.7.
Initialization and Shutdown


Section 2.8.
Module Parameters


Section 2.9.
Doing It in User Space


Section 2.10.
Quick Reference


Chapter 3.
Char Drivers


Section 3.1.
The Design of scull


Section 3.2.
Major and Minor Numbers


Section 3.3.
Some Important Data Structures


Section 3.4.
Char Device Registration


Section 3.5.
open and release


Section 3.6.
scull's Memory Usage


Section 3.7.
read and write


Section 3.8.
Playing with the New Devices


Section 3.9.
Quick Reference


Chapter 4.
Debugging Techniques


Section 4.1.
Debugging Support in the Kernel


Section 4.2.
Debugging by Printing


Section 4.3.
Debugging by Querying


Section 4.4.
Debugging by Watching


Section 4.5.
Debugging System Faults


Section 4.6.
Debuggers and Related Tools


Chapter 5.
Concurrency and Race Conditions


Section 5.1.
Pitfalls in scull


Section 5.2.
Concurrency and Its Management


Section 5.3.
Semaphores and Mutexes


Section 5.4.
Completions


Section 5.5.
Spinlocks


Section 5.6.
Locking Traps


Section 5.7.
Alternatives to Locking


Section 5.8.
Quick Reference


Chapter 6.
Advanced Char Driver Operations


Section 6.1.
ioctl


Section 6.2.
Blocking I/O


Section 6.3.
poll and select


Section 6.4.
Asynchronous Notification


Section 6.5.
Seeking a Device


Section 6.6.
Access Control on a Device File


Section 6.7.
Quick Reference


Chapter 7.
Time, Delays, and Deferred Work


Section 7.1.
Measuring Time Lapses


Section 7.2.
Knowing the Current Time


Section 7.3.
Delaying Execution


Section 7.4.
Kernel Timers


Section 7.5.
Tasklets


Section 7.6.
Workqueues


Section 7.7.
Quick Reference


Chapter 8.
Allocating Memory


Section 8.1.
The Real Story of kmalloc


Section 8.2.
Lookaside Caches


Section 8.3.
get_free_page and Friends


Section 8.4.
vmalloc and Friends


Section 8.5.
Per-CPU Variables


Section 8.6.
Obtaining Large Buffers


Section 8.7.
Quick Reference


Chapter 9.
Communicating with Hardware


Section 9.1.
I/O Ports and I/O Memory


Section 9.2.
Using I/O Ports


Section 9.3.
An I/O Port Example


Section 9.4.
Using I/O Memory


Section 9.5.
Quick Reference


Chapter 10.
Interrupt Handling


Section 10.1.
Preparing the Parallel Port


Section 10.2.
Installing an Interrupt Handler


Section 10.3.
Implementing a Handler


Section 10.4.
Top and Bottom Halves


Section 10.5.
Interrupt Sharing


Section 10.6.
Interrupt-Driven I/O


Section 10.7.
Quick Reference


Chapter 11.
Data Types in the Kernel


Section 11.1.
Use of Standard C Types


Section 11.2.
Assigning an Explicit Size to Data Items


Section 11.3.
Interface-Specific Types


Section 11.4.
Other Portability Issues


Section 11.5.
Linked Lists


Section 11.6.
Quick Reference


Chapter 12.
PCI Drivers


Section 12.1.
The PCI Interface


Section 12.2.
A Look Back: ISA


Section 12.3.
PC/104 and PC/104+


Section 12.4.
Other PC Buses


Section 12.5.
SBus


Section 12.6.
NuBus


Section 12.7.
External Buses


Section 12.8.
Quick Reference


Chapter 13.
USB Drivers


Section 13.1.
USB Device Basics


Section 13.2.
USB and Sysfs


Section 13.3.
USB Urbs


Section 13.4.
Writing a USB Driver


Section 13.5.
USB Transfers Without Urbs


Section 13.6.
Quick Reference


Chapter 14.
The Linux Device Model


Section 14.1.
Kobjects, Ksets, and Subsystems


Section 14.2.
Low-Level Sysfs Operations


Section 14.3.
Hotplug Event Generation


Section 14.4.
Buses, Devices, and Drivers


Section 14.5.
Classes


Section 14.6.
Putting It All Together


Section 14.7.
Hotplug


Section 14.8.
Dealing with Firmware


Section 14.9.
Quick Reference


Chapter 15.
Memory Mapping and DMA


Section 15.1.
Memory Management in Linux


Section 15.2.
The mmap Device Operation


Section 15.3.
Performing Direct I/O


Section 15.4.
Direct Memory Access


Section 15.5.
Quick Reference


Chapter 16.
Block Drivers


Section 16.1.
Registration


Section 16.2.
The Block Device Operations


Section 16.3.
Request Processing


Section 16.4.
Some Other Details


Section 16.5.
Quick Reference


Chapter 17.
Network Drivers


Section 17.1.
How snull Is Designed


Section 17.2.
Connecting to the Kernel


Section 17.3.
The net_device Structure in Detail


Section 17.4.
Opening and Closing


Section 17.5.
Packet Transmission


Section 17.6.
Packet Reception


Section 17.7.
The Interrupt Handler


Section 17.8.
Receive Interrupt Mitigation


Section 17.9.
Changes in Link State


Section 17.10.
The Socket Buffers


Section 17.11.
MAC Address Resolution


Section 17.12.
Custom ioctl Commands


Section 17.13.
Statistical Information


Section 17.14.
Multicast


Section 17.15.
A Few Other Details


Section 17.16.
Quick Reference


Chapter 18.
TTY Drivers


Section 18.1.
A Small TTY Driver


Section 18.2.
tty_driver Function Pointers


Section 18.3.
TTY Line Settings


Section 18.4.
ioctls


Section 18.5.
proc and sysfs Handling of TTY Devices


Section 18.6.
The tty_driver Structure in Detail


Section 18.7.
The tty_operations Structure in Detail


Section 18.8.
The tty_struct Structure in Detail


Section 18.9.
Quick Reference

Chapter 19.
Bibliography


Section 19.1.
Books


Section 19.2.
Web Sites
Index

/ 202