出版社: O'Reilly Media
副标题: 3rd Edition
出版年: 2005-2-17
页数: 640
定价: USD 39.95
装帧: Paperback
ISBN: 9780596005900
内容简介 · · · · · ·
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'Rei...
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.
作者简介 · · · · · ·
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....
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 (http://LWN.net/); he lives in Boulder, Colorado with his wife and two children.
Alessandro 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 lancer 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.
目录 · · · · · ·
Jon's Introduction
Alessandro's Introduction
Greg's Introduction
Audience for This Book
Organization of the Material
· · · · · · (更多)
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
1. An Introduction to Device Drivers
1.1. The Role of the Device Driver
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.1. Setting Up Your Test System
2.2. The Hello World Module
2.3. Kernel Modules Versus Applications
2.4. Compiling and Loading
2.5. The Kernel Symbol Table
2.6. Preliminaries
2.7. Initialization and Shutdown
2.8. Module Parameters
2.9. Doing It in User Space
2.10. Quick Reference
3. Char Drivers
3.1. The Design of scull
3.2. Major and Minor Numbers
3.3. Some Important Data Structures
3.4. Char Device Registration
3.5. open and release
3.6. scull's Memory Usage
3.7. read and write
3.8. Playing with the New Devices
3.9. Quick Reference
4. Debugging Techniques
4.1. Debugging Support in the Kernel
4.2. Debugging by Printing
4.3. Debugging by Querying
4.4. Debugging by Watching
4.5. Debugging System Faults
4.6. Debuggers and Related Tools
5. Concurrency and Race Conditions
5.1. Pitfalls in scull
5.2. Concurrency and Its Management
5.3. Semaphores and Mutexes
5.4. Completions
5.5. Spinlocks
5.6. Locking Traps
5.7. Alternatives to Locking
5.8. Quick Reference
6. Advanced Char Driver Operations
6.1. ioctl
6.2. Blocking I/O
6.3. poll and select
6.4. Asynchronous Notification
6.5. Seeking a Device
6.6. Access Control on a Device File
6.7. Quick Reference
7. Time, Delays, and Deferred Work
7.1. Measuring Time Lapses
7.2. Knowing the Current Time
7.3. Delaying Execution
7.4. Kernel Timers
7.5. Tasklets
7.6. Workqueues
7.7. Quick Reference
8. Allocating Memory
8.1. The Real Story of kmalloc
8.2. Lookaside Caches
8.3. get_free_page and Friends
8.4. vmalloc and Friends
8.5. Per-CPU Variables
8.6. Obtaining Large Buffers
8.7. Quick Reference
9. Communicating with Hardware
9.1. I/O Ports and I/O Memory
9.2. Using I/O Ports
9.3. An I/O Port Example
9.4. Using I/O Memory
9.5. Quick Reference
10. Interrupt Handling
10.1. Preparing the Parallel Port
10.2. Installing an Interrupt Handler
10.3. Implementing a Handler
10.4. Top and Bottom Halves
10.5. Interrupt Sharing
10.6. Interrupt-Driven I/O
10.7. Quick Reference
11. Data Types in the Kernel
11.1. Use of Standard C Types
11.2. Assigning an Explicit Size to Data Items
11.3. Interface-Specific Types
11.4. Other Portability Issues
11.5. Linked Lists
11.6. Quick Reference
12. PCI Drivers
12.1. The PCI Interface
12.2. A Look Back: ISA
12.3. PC/104 and PC/104+
12.4. Other PC Buses
12.5. SBus
12.6. NuBus
12.7. External Buses
12.8. Quick Reference
13. USB Drivers
13.1. USB Device Basics
13.2. USB and Sysfs
13.3. USB Urbs
13.4. Writing a USB Driver
13.5. USB Transfers Without Urbs
13.6. Quick Reference
14. The Linux Device Model
14.1. Kobjects, Ksets, and Subsystems
14.2. Low-Level Sysfs Operations
14.3. Hotplug Event Generation
14.4. Buses, Devices, and Drivers
14.5. Classes
14.6. Putting It All Together
14.7. Hotplug
14.8. Dealing with Firmware
14.9. Quick Reference
15. Memory Mapping and DMA
15.1. Memory Management in Linux
15.2. The mmap Device Operation
15.3. Performing Direct I/O
15.4. Direct Memory Access
15.5. Quick Reference
16. Block Drivers
16.1. Registration
16.2. The Block Device Operations
16.3. Request Processing
16.4. Some Other Details
16.5. Quick Reference
17. Network Drivers
17.1. How snull Is Designed
17.2. Connecting to the Kernel
17.3. The net_device Structure in Detail
17.4. Opening and Closing
17.5. Packet Transmission
17.6. Packet Reception
17.7. The Interrupt Handler
17.8. Receive Interrupt Mitigation
17.9. Changes in Link State
17.10. The Socket Buffers
17.11. MAC Address Resolution
17.12. Custom ioctl Commands
17.13. Statistical Information
17.14. Multicast
17.15. A Few Other Details
17.16. Quick Reference
18. TTY Drivers
18.1. A Small TTY Driver
18.2. tty_driver Function Pointers
18.3. TTY Line Settings
18.4. ioctls
18.5. proc and sysfs Handling of TTY Devices
18.6. The tty_driver Structure in Detail
18.7. The tty_operations Structure in Detail
18.8. The tty_struct Structure in Detail
18.9. Quick Reference
19. Bibliography
19.1. Books
19.2. Web Sites
Index
· · · · · · (收起)
喜欢读"Linux Device Drivers"的人也喜欢 · · · · · ·
Linux Device Drivers的书评 · · · · · · ( 全部 14 条 )
移植示例代码到linux 3.x
内容提纲,顺便吐槽翻译
这篇书评可能有关键情节透露
读完LKD之后开始看这本,用了十天,关于内核的章节读得比较仔细,关于驱动的章节就草草一读(实在太枯燥了,以后动手的时候再参考,否则看过也是忘),最后两章直接忽略。 书里介绍了大量开发经验,对一些基础概念却讲解的不够细致,所以对初学者并不是特别友好,很多地方需要... (展开)Linux系统实践经典
介绍linux驱动编程的好书
LINUX设备驱动程序
> 更多书评 14篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部8 )
-
中国电力出版社 (2006)8.7分 544人读过
-
东南大学出版社 (2005年06月)8.6分 81人读过
-
中国电力出版社 (2004)8.4分 70人读过
-
中国电力出版社 (2000)暂无评分 7人读过
以下书单推荐 · · · · · · ( 全部 )
- A Programmer's Bookshelf (Leechael)
- linux/unix (小七)
- Computer System (王煜)
- Linux内核 (yava)
- my interest books (htyu_0203_39)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于Linux Device Drivers的评论:
feed: rss 2.0
0 有用 拉脚 2006-11-04 19:18:15
干一行爱一行
0 有用 nwind 2015-10-31 10:41:28
需要的时候翻一下
0 有用 Terenceli 2021-01-23 15:49:25
当我在虚拟化领域把整个计算机架构搞清楚再重读此书,很多东西变得很清晰。
0 有用 ansondeng 2021-09-03 09:32:56
十年之后的重读。第一次真的没弄懂什么。
0 有用 月海 2023-12-09 00:12:53 安徽
研一设备驱动程序课程推荐的参考书,而这门课程唯一有用的地方就是推荐了这本参考书 对于想了解一些Linux驱动程序编写知识的人,这本书无疑是值得一读的,虽然以Linux 2.6开始讲解,但关键部分至今仍然适用。btw,github上有人维护了书中的示例代码,使得其在高版本linux上也能使用(不记得到那个版本了,linux syscall极度稳定但是kernel api经常变来变去)。也感谢这本书让... 研一设备驱动程序课程推荐的参考书,而这门课程唯一有用的地方就是推荐了这本参考书 对于想了解一些Linux驱动程序编写知识的人,这本书无疑是值得一读的,虽然以Linux 2.6开始讲解,但关键部分至今仍然适用。btw,github上有人维护了书中的示例代码,使得其在高版本linux上也能使用(不记得到那个版本了,linux syscall极度稳定但是kernel api经常变来变去)。也感谢这本书让我做信息安全有关LKM的实验时不至于一头雾水。 不过,要是想从这本书触类旁通点内核知识,那无异于隔靴搔痒了。得益于linux这方面的优秀架构,driver和kernel其实解耦得很棒。如果是对内核有兴趣,不妨看看linux-kernel-labs那个项目 (展开)
0 有用 月海 2023-12-09 00:12:53 安徽
研一设备驱动程序课程推荐的参考书,而这门课程唯一有用的地方就是推荐了这本参考书 对于想了解一些Linux驱动程序编写知识的人,这本书无疑是值得一读的,虽然以Linux 2.6开始讲解,但关键部分至今仍然适用。btw,github上有人维护了书中的示例代码,使得其在高版本linux上也能使用(不记得到那个版本了,linux syscall极度稳定但是kernel api经常变来变去)。也感谢这本书让... 研一设备驱动程序课程推荐的参考书,而这门课程唯一有用的地方就是推荐了这本参考书 对于想了解一些Linux驱动程序编写知识的人,这本书无疑是值得一读的,虽然以Linux 2.6开始讲解,但关键部分至今仍然适用。btw,github上有人维护了书中的示例代码,使得其在高版本linux上也能使用(不记得到那个版本了,linux syscall极度稳定但是kernel api经常变来变去)。也感谢这本书让我做信息安全有关LKM的实验时不至于一头雾水。 不过,要是想从这本书触类旁通点内核知识,那无异于隔靴搔痒了。得益于linux这方面的优秀架构,driver和kernel其实解耦得很棒。如果是对内核有兴趣,不妨看看linux-kernel-labs那个项目 (展开)
0 有用 花开花落她是谁 2023-08-16 11:19:27 美国
看了一点点,暂时放弃
0 有用 squirrel-prog 2023-03-03 09:51:52 江苏
读英文原版. 读英文原版. 读英文原版. 重要的事情说三遍.
0 有用 ansondeng 2021-09-03 09:32:56
十年之后的重读。第一次真的没弄懂什么。
0 有用 Terenceli 2021-01-23 15:49:25
当我在虚拟化领域把整个计算机架构搞清楚再重读此书,很多东西变得很清晰。