下载 > 资源分类 >  课程资源 >  嵌入式 > Linux设备驱动程序第三版

Linux设备驱动程序第三版

2013-06-13 上传大小:4.19MB
目录 
1. 第一章  设备驱动简介(见  [标题编号.]) 
1.1. 驱动程序的角色(见  [标题编号.]) 
1.2. 划分内核(见  [标题编号.]) 
1.2.1. 可加载模块(见  [标题编号.]) 
1.3. 设备和模块的分类(见  [标题编号.]) 
1.4. 安全问题(见  [标题编号.]) 
1.5. 版本编号(见  [标题编号.]) 
1.6. 版权条款(见  [标题编号.]
) 
1.7. 加入内核开发社团(见  [标题编号.]) 
1.8. 本书的内容(见  [标题编号.]) 
2. 建立和运行模块(见  [标题编号.]) 
2.1. 设置你的测试系统(见  [标题编号.]) 
2.2. Hello World 模块(见  [标题编号.]) 
2.3. 内核模块相比于应用程序(见  [标题编号.]) 
2.3.1. 用户空间和内核空间(见  [标题编号.]) 
2.3.2. 内核的并发(见  [标题编号.]) 
2.3.3. 当前进程(见  [标题编号.]) 
2.3.4. 几个别的细节(见  [标题编号.]) 
2.4. 编译和加载(见  [标题编号.]) 
2.4.1. 编译模块(见  [标题编号.]) 
2.4.2. 加载和卸载模块(见  [标题编号.]) 
2.4.3. 版本依赖(见  [标题编号.]) 
2.4.4. 平台依赖性(见  [标题编号.]) 
2.5. 内核符号表(见  [标题编号.]) 
2.6. 预备知识(见  [标题编号.]) 
2.7. 初始化和关停(见  [标题编号.]) 
2.7.1. 清理函数(见  [标题编号.]) 
2.7.2. 初始化中的错误处理(见  [标题编号.]) 
2.7.3. 模块加载竞争(见  [标题编号.]) 
2.8. 模块参数(见  [标题编号.]) 
2.9. 在用户空间做(见  [标题编号.]) 
2.10. 快速参考(见  [标题编号.]) 
3. 字符驱动(见  [标题编号.]) 
3.1. scull 的设计(见  [标题编号.]) 
3.2. 主次编号(见  [标题编号.]) 
3.2.1. 设备编号的内部表示(见  [标题编号.]) 
3.2.2. 分配和释放设备编号(见  [标题编号.]) 
3.2.3. 主编号的动态分配(见  [标题编号.]) 
3.3. 一些重要数据结构(见  [标题编号.]) 
3.3.1. 文件操作(见  [标题编号.]) 
3.3.2. 文件结构(见  [标题编号.]) 
3.3.3. inode 结构(见  [标题编号.]) 
3.4. 字符设备注册(见  [标题编号.]) 
3.4.1. scull 中的设备注册(见  [标题编号.]) 
3.4.2. 老方法(见  [标题编号.]) 
3.5. open 和  release(见  [标题编号.]) 
3.5.1. open 方法(见  [标题编号.]) 
3.5.2. release 方法(见  [标题编号.]) 
3.6. scull 的内存使用(见  [标题编号.]) 
3.7. 读和写(见  [标题编号.]) 
3.7.1. read 方法(见  [标题编号.]) 
3.7.2. write 方法(见  [标题编号.]) 
3.7.3. readv 和  writev(见  [标题编号.]) 
3.8. 使用新设备(见  [标题编号.]) 
3.9. 快速参考(见  [标题编号.]) 
4. 调试技术(见  [标题编号.]) 
4.1. 内核中的调试支持(见  [标题编号.]) 
4.2. 用打印调试(见  [标题编号.]) 
4.2.1. printk(见  [标题编号.]) 
4.2.2. 重定向控制台消息(见  [标题编号.]) 
4.2.3. 消息是如何记录的(见  [标题编号.]) 
4.2.4. 打开和关闭消息(见  [标题编号.]) 
4.2.5. 速率限制(见  [标题编号.]) 
4.2.6. 打印设备编号(见  [标题编号.]) 
4.3. 用查询来调试(见  [标题编号.]) 
4.3.1. 使用  /proc 文件系统(见  [标题编号.]) 
4.3.2. ioctl 方法(见  [标题编号.]) 
4.4. 使用观察来调试(见  [标题编号.]) 
4.5. 调试系统故障(见  [标题编号.]) 
4.5.1. oops 消息(见  [标题编号.]) 
4.5.2. 系统挂起(见  [标题编号.]) 
4.6. 调试器和相关工具(见  [标题编号.]) 
4.6.1. 使用  gdb(见  [标题编号.]) 
4.6.2. kdb 内核调试器(见  [标题编号.]) 
4.6.3. kgdb 补丁(见  [标题编号.]) 
4.6.4. 用户模式  Linux 移植(见  [标题编号.]) 
4.6.5. Linux 追踪工具(见  [标题编号.]) 
4.6.6. 动态探针(见  [标题编号.]) 
5. 并发和竞争情况(见  [标题编号.]) 
5.1. scull 中的缺陷(见  [标题编号.]) 
5.2. 并发和它的管理(见  [标题编号.]) 
5.3. 旗标和互斥体(见  [标题编号.]) 
5.3.1. Linux 旗标实现(见  [标题编号.]) 
5.3.2. 在  scull 中使用旗标(见  [标题编号.]) 
5.3.3. 读者/写者旗标(见  [标题编号.]) 
5.4. Completions 机制(见  [标题编号.]) 
5.5. 自旋锁(见  [标题编号.]) 
5.5.1. 自旋锁  API 简介(见  [标题编号.]) 
5.5.2. 自旋锁和原子上下文(见  [标题编号.]) 
5.5.3. 自旋锁函数(见  [标题编号.]) 
5.5.4. 读者/写者自旋锁(见  [标题编号.]) 
5.6. 锁陷阱(见  [标题编号.]) 
5.6.1. 模糊的规则(见  [标题编号.]) 
5.6.2. 加锁顺序规则(见  [标题编号.]) 
5.6.3. 细  -粗-  粒度加锁(见  [标题编号.]) 
5.7. 加锁的各种选择(见  [标题编号.]) 
5.7.1. 不加锁算法(见  [标题编号.]) 
5.7.2. 原子变量(见  [标题编号.]) 
5.7.3. 位操作(见  [标题编号.]) 
5.7.4. seqlock 锁(见  [标题编号.]) 
5.7.5. 读取-拷贝-更新(见  [标题编号.]) 
5.8. 快速参考(见  [标题编号.]) 
6. 高级字符驱动操作(见  [标题编号.]) 
6.1. ioctl 接口(见  [标题编号.]) 
6.1.1. 选择  ioctl  命令(见  [标题编号.]) 
6.1.2. 返回值(见  [标题编号.]) 
6.1.3. 预定义的命令(见  [标题编号.]) 
6.1.4. 使用  ioctl  参数(见  [标题编号.]) 
6.1.5. 兼容性和受限操作(见  [标题编号.]) 
6.1.6. ioctl 命令的实现(见  [标题编号.]) 
6.1.7. 不用  ioctl  的设备控制(见  [标题编号.]) 
6.2. 阻塞  I/O(见  [标题编号.]) 
6.2.1. 睡眠的介绍(见  [标题编号.]) 
6.2.2. 简单睡眠(见  [标题编号.]) 
6.2.3. 阻塞和非阻塞操作  (见  [标题编号.]) 
6.2.4. 一个阻塞  I/O  的例子(见  [标题编号.]) 
6.2.5. 高级睡眠(见  [标题编号.]) 
6.2.6. 测试  scullpipe 驱动(见  [标题编号.]) 
6.3. poll 和  select(见  [标题编号.]) 
6.3.1. 与  read 和  write 的交互(见  [标题编号.]) 
6.3.2. 底层的数据结构(见  [标题编号.]) 
6.4. 异步通知(见  [标题编号.]) 
6.4.1. 驱动的观点(见  [标题编号.]) 
6.5. 移位一个设备(见  [标题编号.]) 
6.5.1. llseek 实现(见  [标题编号.]) 
6.6. 在一个设备文件上的存取控制(见  [标题编号.]) 
6.6.1. 单  open 设备(见  [标题编号.]) 
6.6.2. 一次对一个用户限制存取(见  [标题编号.]) 
6.6.3. 阻塞  open 作为对  EBUSY 的替代(见  [标题编号.]) 
6.6.4. 在  open 时复制设备(见  [标题编号.]) 
6.7. 快速参考(见  [标题编号.]) 
7. 时间,  延时,  和延后工作(见  [标题编号.]) 
7.1. 测量时间流失(见  [标题编号.]) 
7.1.1. 使用  jiffies  计数器(见  [标题编号.]) 
7.1.2. 处理器特定的寄存器(见  [标题编号.]) 
7.2. 获知当前时间(见  [标题编号.]) 
7.3. 延后执行(见  [标题编号.]) 
7.3.1. 长延时(见  [标题编号.]) 
7.3.2. 短延时(见  [标题编号.]) 
7.4. 内核定时器(见  [标题编号.]) 
7.4.1. 定时器  API(见  [标题编号.]) 
7.4.2. 内核定时器的实现(见  [标题编号.]) 
7.5. Tasklets 机制(见  [标题编号.]) 
7.6. 工作队列(见  [标题编号.]) 
7.6.1. 共享队列(见  [标题编号.]) 
7.7. 快速参考(见  [标题编号.]) 
7.7.1. 时间管理(见  [标题编号.]) 
7.7.2. 延迟(见  [标题编号.]) 
7.7.3. 内核定时器(见  [标题编号.]) 
7.7.4. Tasklets 机制(见  [标题编号.]) 
7.7.5. 工作队列(见  [标题编号.]) 
8. 分配内存(见  [标题编号.]) 
8.1. kmalloc 的真实故事(见  [标题编号.]) 
8.1.1. flags 参数(见  [标题编号.]) 
8.1.2. size 参数(见  [标题编号.]) 
8.2. 后备缓存(见  [标题编号.]) 
8.2.1. 一个基于  Slab 缓存的  scull: scullc(见  [标题编号.]) 
8.2.2. 内存池(见  [标题编号.]) 
8.3. get_free_page 和其友(见  [标题编号.]) 
8.3.1. 一个使用整页的  scull: scullp(见  [标题编号.]) 
8.3.2. alloc_pages 接口(见  [标题编号.]) 
8.3.3. vmalloc 和  其友(见  [标题编号.]) 
8.3.4. 一个使用虚拟地址的  scull : scullv(见  [标题编
8.4. 每-CPU 的变量(见  [标题编号.]) 
8.5. 获得大量缓冲(见  [标题编号.]) 
8.5.1. 在启动时获得专用的缓冲(见  [标题编号.]) 
8.6. 快速参考(见  [标题编号.]) 
9. 与硬件通讯(见  [标题编号.]) 
9.1. I/O 端口和  I/O  内存(见  [标题编号.]) 
9.1.1. I/O  寄存器和常规内存(见  [标题编号.]) 
9.2. 使用  I/O  端口(见  [标题编号.]) 
9.2.1. I/O 端口分配(见  [标题编号.]) 
9.2.2. 操作  I/O  端口(见  [标题编号.]) 
9.2.3. 从用户空间的  I/O  存取(见  [标题编号.]) 
9.2.4. 字串操作(见  [标题编号.]) 
9.2.5. 暂停  I/O(见  [标题编号.]) 
9.2.6. 平台依赖性(见  [标题编号.]) 
9.3. 一个  I/O  端口例子(见  [标题编号.]) 
9.3.1. 并口纵览(见  [标题编号.]) 
9.3.2. 一个例子驱动(见  [标题编号.]) 
9.4. 使用  I/O  内存(见  [标题编号.]) 
9.4.1. I/O 内存分配和映射(见  [标题编号.]) 
9.4.2. 存取  I/O  内存(见  [标题编号.]) 
9.4.3. 作为  I/O  内存的端口(见  [标题编号.]) 
9.4.4. 重用  short 为  I/O  内存(见  [标题编号.]) 
9.4.5. 在  1 MB 之下的  ISA  内存(见  [标题编号.]) 
9.4.6. isa_readb 和其友(见  [标题编号.]) 
9.5. 快速参考(见  [标题编号.]) 
10. 中断处理(见  [标题编号.]) 
10.1. 准备并口(见  [标题编号.]) 
10.2. 安装一个中断处理(见  [标题编号.]) 
10.2.1. /proc 接口(见  [标题编号.]) 
10.2.2. 自动检测  IRQ  号(见  [标题编号.]) 
10.2.3. 快速和慢速处理(见  [标题编号.]) 
10.2.4. 实现一个处理(见  [标题编号.]) 
10.2.5. 处理者的参数和返回值(见  [标题编号.]) 
10.2.6. 使能和禁止中断(见  [标题编号.]) 
10.3. 前和后半部(见  [标题编号.]) 
10.3.1. Tasklet 实现(见  [标题编号.]) 
10.3.2. 工作队列(见  [标题编号.]) 
10.4. 中断共享(见  [标题编号.]) 
10.4.1. 安装一个共享的处理者(见  [标题编号.]) 
10.4.2. 运行处理者(见  [标题编号.]) 
10.4.3. /proc 接口和共享中断(见  [标题编号.]) 
10.5. 中断驱动  I/O(见  [标题编号.]) 
10.5.1. 一个写缓存例子(见  [标题编号.]) 
10.6. 快速参考(见  [标题编号.]) 
11. 内核中的数据类型(见  [标题编号.]) 
11.1. 标准  C 类型的使用(见  [标题编号.]) 
11.2. 安排一个明确大小给数据项(见  [标题编号.]) 
11.3. 接口特定的类型(见  [标题编号.]) 
11.4. 其他移植性问题(见  [标题编号.]) 
11.4.1. 时间间隔(见  [标题编号.]) 
11.4.2. 页大小(见  [标题编号.]) 
11.4.3. 字节序(见  [标题编号.]) 
11.4.4. 数据对齐(见  [标题编号.]) 
11.4.5. 指针和错误值(见  [标题编号.]) 
11.5. 链表(见  [标题编号.]) 
11.6. 快速参考(见  [标题编号.]) 
12. PCI 驱动(见  [标题编号.]) 
12.1. PCI 接口(见  [标题编号.]) 
12.1.1. PCI 寻址(见  [标题编号.]) 
12.1.2. 启动时间(见  [标题编号.]) 
12.1.3. 配置寄存器和初始化(见  [标题编号.]) 
12.1.4. MODULEDEVICETABLE 宏(见  [标题编号.]) 
12.1.5. 注册一个  PCI 驱动(见  [标题编号.]) 
12.1.6. 老式  PCI 探测(见  [标题编号.]) 
12.1.7. 使能  PCI  设备(见  [标题编号.]) 
12.1.8. 存取配置空间(见  [标题编号.]) 
12.1.9. 存取  I/O  和内存空间(见  [标题编号.]) 
12.1.10. PCI 中断(见  [标题编号.]) 
12.1.11. 硬件抽象(见  [标题编号.]) 
12.2. 回顾: ISA(见  [标题编号.]) 
12.2.1. 硬件资源(见  [标题编号.]) 
12.2.2. ISA 编程(见  [标题编号.]) 
12.2.3. 即插即用规范(见  [标题编号.]) 
12.3. PC/104 和  PC/104+(见  [标题编号.]) 
12.4. 其他的  PC 总线(见  [标题编号.]) 
12.4.1. MCA 总线(见  [标题编号.]) 
12.4.2. EISA 总线(见  [标题编号.]) 
12.4.3. VLB 总线(见  [标题编号.]) 
12.5. SBus(见  [标题编号.]) 
12.6. NuBus 总线(见  [标题编号.]) 
12.7. 外部总线(见  [标题编号.]) 
12.8. 快速参考(见  [标题编号.]) 
13. USB 驱动(见  [标题编号.]) 
13.1. USB 设备基础知识(见  [标题编号.]) 
13.1.1. 端点(见  [标题编号.]) 
13.1.2. 接口(见  [标题编号.]) 
13.1.3. 配置(见  [标题编号.]) 
13.2. USB 和  sysfs(见  [标题编号.]) 
13.3. USB 的  Urbs(见  [标题编号.]) 
13.3.1.  结构  struct urb(见  [标题编号.]) 
13.3.2. 创建和销毁  urb(见  [标题编号.]) 
13.3.3. 提交  urb(见  [标题编号.]) 
13.3.4. 完成  urb: 完成回调处理者(见  [标题编号.]) 
13.3.5. 取消  urb(见  [标题编号.]) 
13.4. 编写一个  USB 驱动(见  [标题编号.]) 
13.4.1. 驱动支持什么设备(见  [标题编号.]) 
13.4.2. 注册一个  USB 驱动(见  [标题编号.]) 
13.4.3. 提交和控制一个  urb(见  [标题编号.]) 
13.5. 无  urb 的  USB 传送(见  [标题编号.]) 
13.5.1. usb_bulk_msg 接口(见  [标题编号.]) 
13.5.2. usb_control_msg 接口(见  [标题编号.]) 
13.5.3. 使用  USB 数据函数(见  [标题编号.]) 
13.6. 快速参考(见  [标题编号.]) 
14. Linux 设备模型(见  [标题编号.]) 
14.1. Kobjects, Ksets 和  Subsystems (见  [标题编号.]) 
14.1.1. Kobject 基础(见  [标题编号.]) 
14.1.2. kobject 层次, kset,  和子系统(见  [标题编号.]) 
14.2. 低级  sysfs 操作(见  [标题编号.]) 
14.2.1. 缺省属性(见  [标题编号.]) 
14.2.2. 非缺省属性(见  [标题编号.]) 
14.2.3. 二进制属性(见  [标题编号.]) 
14.2.4. 符号连接(见  [标题编号.]) 
14.3. 热插拔事件产生(见  [标题编号.]) 
14.3.1. 热插拔操作(见  [标题编号.]) 
14.4. 总线,  设备,  和驱动(见  [标题编号.]) 
14.4.1. 总线(见  [标题编号.]) 
14.4.2. 设备(见  [标题编号.]) 
14.4.3. 设备驱动(见  [标题编号.]) 
14.5. 类(见  [标题编号.]) 
14.5.1. class_simple 接口(见  [标题编号.]) 
14.5.2. 完整的类接口(见  [标题编号.]) 
14.6. 集成起来(见  [标题编号.]) 
14.6.1. 添加一个设备(见  [标题编号.]) 
14.6.2. 去除一个设备(见  [标题编号.]) 
14.6.3. 添加一个驱动(见  [标题编号.]) 
14.6.4. 去除一个驱动(见  [标题编号.]) 
14.7. 热插拔(见  [标题编号.]) 
14.7.1. 动态设备(见  [标题编号.]) 
14.7.2. /sbin/hotplug 工具(见  [标题编号.]) 
14.7.3. 使用  /sbin/hotplug (见  [标题编号.]) 
14.8. 处理固件(见  [标题编号.]) 
14.8.1. 内核固件接口(见  [标题编号.]) 
14.8.2. 它如何工作(见  [标题编号.]) 
14.9. 快速参考(见  [标题编号.]) 
14.9.1. Kobjects结构(见  [标题编号.]) 
14.9.2. sysfs 操作(见  [标题编号.]) 
14.9.3. 总线,  设备,  和驱动(见  [标题编号.]) 
14.9.4. 类(见  [标题编号.]) 
14.9.5. 固件(见  [标题编号.]) 
15. 内存映射和  DMA (见  [标题编号.]) 
15.1. Linux 中的内存管理(见  [标题编号.]) 
15.1.1. 地址类型(见  [标题编号.]) 
15.1.2. 物理地址和页(见  [标题编号.]) 
15.1.3. 高和低内存(见  [标题编号.]) 
15.1.4. 内存映射和  struct page(见  [标题编号.]) 
15.1.5. 页表(见  [标题编号.]) 
15.1.6. 虚拟内存区(见  [标题编号.]) 
15.1.7. 进程内存映射(见  [标题编号.]) 
15.2. mmap 设备操作(见  [标题编号.]) 
15.2.1. 使用  remap_pfn_range(见  [标题编号.]) 
15.2.2. 一个简单的实现(见  [标题编号.]) 
15.2.3. 添加  VMA 的操作(见  [标题编号.]) 
15.2.4. 使用  nopage 映射内存(见  [标题编号.]) 
15.2.5. 重新映射特定  I/O  区(见  [标题编号.]) 
15.2.6. 重新映射  RAM(见  [标题编号.]) 
15.2.7. 重映射内核虚拟地址(见  [标题编号.]) 
15.3. 进行直接  I/O(见  [标题编号.]) 
15.3.1. 异步  I/O(见  [标题编号.]) 
15.4. 直接内存存取(见  [标题编号.]) 
15.4.1. 一个  DMA 数据传输的概况(见  [标题编号.]) 
15.4.2. 分配  DMA 缓冲(见  [标题编号.]) 
15.4.3. 总线地址(见  [标题编号.]) 
15.4.4. 通用  DMA 层(见  [标题编号.]) 
15.4.5. ISA 设备的  DMA(见  [标题编号.]) 
15.5. 快速参考(见  [标题编号.]) 
15.5.1. 介绍性材料(见  [标题编号.]) 
15.5.2. 实现  mmap(见  [标题编号.]) 
15.5.3. 实现直接  I/O(见  [标题编号.]) 
15.5.4. 直接内存存取(见  [标题编号.]) 
16. 块驱动(见  [标题编号.]) 
16.1. 注册(见  [标题编号.]) 
16.1.1. 块驱动注册(见  [标题编号.]) 
16.1.2. 磁盘注册(见  [标题编号.]) 
16.1.3. 在  sbull 中的初始化(见  [标题编号.]) 
16.1.4. 注意扇区大小(见  [标题编号.]) 
16.2. 块设备操作(见  [标题编号.]) 
16.2.1. open 和  release 方法(见  [标题编号.]) 
16.2.2. 支持可移出的介质(见  [标题编号.]) 
16.2.3. ioctl 方法(见  [标题编号.]) 
16.3. 请求处理(见  [标题编号.]) 
16.3.1. 对请求方法的介绍(见  [标题编号.]) 
16.3.2. 一个简单的请求方法(见  [标题编号.]) 
16.3.3. 请求队列(见  [标题编号.]) 
16.3.4. 请求的分析(见  [标题编号.]) 
16.3.5. 请求完成函数(见  [标题编号.]) 
16.4. 一些其他的细节(见  [标题编号.]) 
16.4.1. 命令预准备(见  [标题编号.]) 
16.4.2. 被标识的命令排队(见  [标题编号.]) 
16.5. 快速参考(见  [标题编号.]) 
17. 网络驱动(见  [标题编号.]) 
17.1. snull 是如何设计的(见  [标题编号.]) 
17.1.1. 分配  IP  号(见  [标题编号.]) 
17.1.2. 报文的物理传送(见  [标题编号.]) 
17.2. 连接到内核(见  [标题编号.]) 
17.2.1. 设备注册(见  [标题编号.]) 
17.2.2. 初始化每一个设备(见  [标题编号.]) 
17.2.3. 模块卸载(见  [标题编号.]) 
17.3. net_device 结构的详情(见  [标题编号.]) 
17.3.1. 全局信息(见  [标题编号.]) 
17.3.2. 硬件信息(见  [标题编号.]) 
17.3.3. 接口信息(见  [标题编号.]) 
17.3.4. 设备方法(见  [标题编号.]) 
17.3.5. 公用成员(见  [标题编号.]) 
17.4. 打开与关闭(见  [标题编号.]) 
17.5. 报文传送(见  [标题编号.]) 
17.5.1. 控制发送并发(见  [标题编号.]) 
17.5.2. 传送超时(见  [标题编号.]) 
17.5.3. 发散/汇聚  I/O(见  [标题编号.]) 
17.6. 报文接收(见  [标题编号.]) 
17.7. 中断处理(见  [标题编号.]) 
17.8. 接收中断缓解(见  [标题编号.]) 
17.9. 连接状态的改变(见  [标题编号.]) 
17.10. Socket 缓存(见  [标题编号.]) 
17.10.1. 重要成员变量(见  [标题编号.]) 
17.10.2. 作用于  socket 缓存的函数(见  [标题编号.]) 
17.11. MAC 地址解析(见  [标题编号.]) 
17.11.1. 以太网使用  ARP(见  [标题编号.]) 
17.11.2. 不考虑  ARP(见  [标题编号.]) 
17.11.3. 非以太网头部(见  [标题编号.]) 
17.12. 定制  ioctl  命令(见  [标题编号.]) 
17.13. 统计信息(见  [标题编号.]) 
17.14. 多播(见  [标题编号.]) 
17.14.1. 多播的内核支持(见  [标题编号.]) 
17.14.2. 典型实现(见  [标题编号.]) 
17.15. 几个其他细节(见  [标题编号.]) 
17.15.1. 独立于媒介的接口支持(见  [标题编号.]) 
17.15.2. ethtool 支持(见  [标题编号.]) 
17.15.3. netpoll(见  [标题编号.]) 
17.16. 快速参考(见  [标题编号.]) 
18. TTY 驱动(见  [标题编号.]) 
18.1. 一个小  TTY 驱动(见  [标题编号.]) 
18.1.1. 结构  struct termios(见  [标题编号.]) 
18.2. tty_driver 函数指针(见  [标题编号.]) 
18.2.1. open 和  close(见  [标题编号.]) 
18.2.2. 数据流(见  [标题编号.]) 
18.2.3. 其他缓冲函数(见  [标题编号.]) 
18.2.4. 无  read 函数?(见  [标题编号.]) 
18.3. TTY 线路设置(见  [标题编号.]) 
18.3.1. set_termios 函数(见  [标题编号.]) 
18.3.2. tiocmget 和  tiocmset(见  [标题编号.]) 
18.4. ioctls 函数(见  [标题编号.]) 
18.5. TTY 设备的  proc 和  sysfs 处理(见  [标题编号.]) 
18.6. tty_driver 结构的细节(见  [标题编号.]) 
18.7. tty_operaions 结构的细节(见  [标题编号.]) 
18.8. tty_struct 结构的细节(见  [标题编号.]) 
18.9. 快速参考(见  [标题编号.])
...展开收缩
综合评分:5(1位用户评分)
直接下载 开通VIP会员 免积分下载

评论共有1条

name
whvc__2014-05-17 14:55:00
很祥细,也很精练。

评论资源

您不能发表评论,可能是以下原因:

登录后才能评论

待评论资源
 

热门专辑

课程资源热门标签

VIP会员动态

关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

CSDN VIP年卡 4000万程序员的必选现在开通,立省522元
为了良好体验,不建议使用迅雷下载
下载
img

Linux设备驱动程序第三版

会员到期时间: 剩余下载个数: 剩余C币:593 剩余积分:786
为了良好体验,不建议使用迅雷下载
VIP下载

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP年卡
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img
资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
(仅够下载10个资源)
VIP年卡
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
下载
img
资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
VIP年卡
全站1200个资源免积分下载
C币充值开通VIP年卡
img
资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
VIP年卡
全站1200个资源免积分下载
为了良好体验,不建议使用迅雷下载
下载
下载

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可奖励20下载分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: