前不久看到这本书,《Writing Device Drivers: Tutorial》,有些知识项目上用的着,故从今天起翻译至我的blog,希望对自已与有兴趣者有所帮助,共勉之。
原书地址 http://alpha-supernova.dev.filibeto.org/lib/rel/4.0B/HTML/AA-Q7RPB-TE_html/TOC.html
编写设备驱动教程:
目录:
标题和版权页
关于这本书
读者
新的和更改的功能
第5章:使用漏斗(funnels)
第7章:使用内核线程相关的接口
第8章:编写一个磁盘设备驱动程序
附录B:磁盘设备驱动程序范例
书的范围
组织
相关文档
硬件文档
总线特定的设备驱动程序文档
操作系统概述文档
编程工具文档
系统管理文档
移植文档
参考页
读者评论
约定
关于这本书
读者
新的和更改的功能
第5章:使用漏斗(funnels)
第7章:使用内核线程相关的接口
第8章:编写一个磁盘设备驱动程序
附录B:磁盘设备驱动程序范例
书的范围
组织
相关文档
硬件文档
总线特定的设备驱动程序文档
操作系统概述文档
编程工具文档
系统管理文档
移植文档
参考页
读者评论
约定
第1部分:概述
1.设备驱动程序的概念
1.1收集信息
1.2设备驱动程序设计
1.3分配数据结构
1.4编写可移植的设备驱动程序
1.5检查设备驱动程序工具包交付流程
1.6注册设备中断处理程序的识别方法
第2部分:设备驱动程序和对称多处理
2.对称多处理器环境概述
2.1了解硬件同步相关问题
2.1.1原子
2.1.2对齐
2.1.3粒度
2.2了解极品锁定在对称多处理环境
2.3比较简单的锁,复杂的锁,和渠道
2.3.1简单的锁
2.3.2复杂的锁
2.3.3漏斗
2.4选择锁定方法
2.4.1谁有权访问特定资源
2.4.2防止对资源的访问虽然内核线程睡
2.4.3持有锁的时间长度
2.4.4执行速度
2.4.5代码块的大小
2.4.6锁定方法概要
2.5选择资源锁定在驱动程序
2.5.1只读资源
2.5.2设备控制状态寄存器地址
2.5.3驱动程序特定的全球资源
2.5.4系统特定的环球资源
2.5.5设备驱动程序的实例分析,以确定资源锁定
2.对称多处理器环境概述
2.1了解硬件同步相关问题
2.1.1原子
2.1.2对齐
2.1.3粒度
2.2了解极品锁定在对称多处理环境
2.3比较简单的锁,复杂的锁,和渠道
2.3.1简单的锁
2.3.2复杂的锁
2.3.3漏斗
2.4选择锁定方法
2.4.1谁有权访问特定资源
2.4.2防止对资源的访问虽然内核线程睡
2.4.3持有锁的时间长度
2.4.4执行速度
2.4.5代码块的大小
2.4.6锁定方法概要
2.5选择资源锁定在驱动程序
2.5.1只读资源
2.5.2设备控制状态寄存器地址
2.5.3驱动程序特定的全球资源
2.5.4系统特定的环球资源
2.5.5设备驱动程序的实例分析,以确定资源锁定
3使用简单的锁接口
3.1声明一个简单的锁结构
3.2初始化一个简单的锁
3.3断言资源上的独占访问
3.4释放此前声称的简单的锁
3.5试图获得一个简单的锁定
3.6终止一个简单的锁
3.7使用SPL接口用简单的锁
3.1声明一个简单的锁结构
3.2初始化一个简单的锁
3.3断言资源上的独占访问
3.4释放此前声称的简单的锁
3.5试图获得一个简单的锁定
3.6终止一个简单的锁
3.7使用SPL接口用简单的锁
4使用复杂的锁定界面
4.1声明一个复杂的锁数据结构
4.2初始化一个复杂的锁
4.3执行的访问操作复杂的锁
4.3.1断言一个复杂的锁
4.3.1.1断言复杂的锁具有只读访问权限
4.3.1.2断言写访问复杂的锁
4.3.2释放之前断言复杂的锁
4.3.3试图发出一个复杂的锁
4.3.3.1试图发出一个复杂的锁具有只读访问权限
4.3.3.2试图发出一个复杂的锁与写访问
4.4终止一个复杂的锁
4.1声明一个复杂的锁数据结构
4.2初始化一个复杂的锁
4.3执行的访问操作复杂的锁
4.3.1断言一个复杂的锁
4.3.1.1断言复杂的锁具有只读访问权限
4.3.1.2断言写访问复杂的锁
4.3.2释放之前断言复杂的锁
4.3.3试图发出一个复杂的锁
4.3.3.1试图发出一个复杂的锁具有只读访问权限
4.3.3.2试图发出一个复杂的锁与写访问
4.4终止一个复杂的锁
5使用漏斗
5.1确保漏斗不需要任何锁
5.2初始化设备开关表
5.1确保漏斗不需要任何锁
5.2初始化设备开关表
第3部分:设备驱动程序和内核线程
6设备驱动程序和多线程编程
6.1设备驱动程序使用内核线程的优点
6.2内核线程执行
6.3使用内核线程相关的问题
6.4内核线程操作
7使用内核线程相关的接口
7.1数据结构,内核线程接口使用
7.2启动一个内核线程
7.2.1启动一个内核线程在指定的入口点
7.2.2启动固定优先级的内核线程专用中断服务
7.3封锁(把睡觉)内核线程
7.3.1断言,目前关于内核线程阻塞,直到指定的事件发生
7.3.2使用对称多处理器睡眠接口
7.4解锁内核线程(觉醒)
7.5终端内核线程
7.6当前内核线程设置一个定时器
第4部分:磁盘设备驱动程序
8编写一个磁盘设备驱动程序
8.1磁盘设备名称
8.2磁盘布局
8.2.1磁盘几何
8.2.2磁盘分区
8.2.3定位分区的请求
8.3设备特定的结构
8.4打开和关闭设备
8.4.1开放接口
8.4.2 read_label的子程序
8.4.3密切接口
8.5读取和写入数据
8.5.1读写接口
8.5.2战略接口
8.5.3 minphys接口
8.6 IOCTL接口
8.6.1的DIOCGDINFO ioctl命令
8.6.2的DIOCGPART ioctl命令
8.6.3的DIOCSDINFO ioctl命令
8.6.4的DIOCWLABEL ioctl命令
8.6.5的DIOCWDINFO ioctl命令
8.6.6的DIOCGDEFPT ioctl命令
8.6.7的DIOCGCURPT ioctl命令
8.6.8的DEVGETINFO ioctl命令
8.6.9的DEVGETGEOM ioctl命令
8.7大小接口
8.8转储接口
第5部分:附录
总结表
A.1的头文件列表
A.2内核支持接口列表
A.3 ioctl命令
A.4的全局变量列表
A.5列表数据结构
A.6设备驱动程序的接口列表
A.7总线配置接口列表
B.磁盘设备驱动案例
6设备驱动程序和多线程编程
6.1设备驱动程序使用内核线程的优点
6.2内核线程执行
6.3使用内核线程相关的问题
6.4内核线程操作
7使用内核线程相关的接口
7.1数据结构,内核线程接口使用
7.2启动一个内核线程
7.2.1启动一个内核线程在指定的入口点
7.2.2启动固定优先级的内核线程专用中断服务
7.3封锁(把睡觉)内核线程
7.3.1断言,目前关于内核线程阻塞,直到指定的事件发生
7.3.2使用对称多处理器睡眠接口
7.4解锁内核线程(觉醒)
7.5终端内核线程
7.6当前内核线程设置一个定时器
第4部分:磁盘设备驱动程序
8编写一个磁盘设备驱动程序
8.1磁盘设备名称
8.2磁盘布局
8.2.1磁盘几何
8.2.2磁盘分区
8.2.3定位分区的请求
8.3设备特定的结构
8.4打开和关闭设备
8.4.1开放接口
8.4.2 read_label的子程序
8.4.3密切接口
8.5读取和写入数据
8.5.1读写接口
8.5.2战略接口
8.5.3 minphys接口
8.6 IOCTL接口
8.6.1的DIOCGDINFO ioctl命令
8.6.2的DIOCGPART ioctl命令
8.6.3的DIOCSDINFO ioctl命令
8.6.4的DIOCWLABEL ioctl命令
8.6.5的DIOCWDINFO ioctl命令
8.6.6的DIOCGDEFPT ioctl命令
8.6.7的DIOCGCURPT ioctl命令
8.6.8的DEVGETINFO ioctl命令
8.6.9的DEVGETGEOM ioctl命令
8.7大小接口
8.8转储接口
第5部分:附录
总结表
A.1的头文件列表
A.2内核支持接口列表
A.3 ioctl命令
A.4的全局变量列表
A.5列表数据结构
A.6设备驱动程序的接口列表
A.7总线配置接口列表
B.磁盘设备驱动案例