文档信息
前言
第 1 部分针对 Oracle Solaris 平台设计设备驱动程序
1. Oracle Solaris 设备驱动程序概述
2. Oracle Solaris 内核和设备树
3. 多线程
4. 属性
5. 管理事件和排队任务
6. 驱动程序自动配置
7. 设备访问:程控 I/O
8. 中断处理程序
9. 直接内存访问 (Direct Memory Access, DMA)
10. 映射设备和内核内存
11. 设备上下文管理
12. 电源管理
13. 强化 Oracle Solaris 驱动程序
14. 分层驱动程序接口 (Layered Driver Interface, LDI)
第 2 部分设计特定种类的设备驱动程序
15. 字符设备驱动程序
16. 块设备驱动程序
17. SCSI 目标驱动程序
18. SCSI 主机总线适配器驱动程序
19. 网络设备驱动程序
20. USB 驱动程序
21. SR-IOV 驱动程序
第 3 部分生成设备驱动程序
22. 编译、装入、打包和测试驱动程序
23. 调试、测试和调优设备驱动程序
24. 推荐的编码方法
第 4 部分附录
A. 硬件概述
B. Solaris DDI/DKI 服务汇总
C. 使设备驱动程序支持 64 位
64 位驱动程序设计简介
常规转换步骤
使用硬件寄存器的固定宽度类型
使用固定宽度的公共访问函数
检查并扩展派生类型的用法
检查 DDI 数据结构中更改的字段
buf 结构更改
ddi_dma_attr
ddi_dma_cookie 结构更改
csi_arq_status 结构更改
scsi_pkt 结构更改
检查 DDI 函数中更改的参数
getrbuf() 参数更改
drv_getparm() 参数更改
delay() 和 timeout() 参数更改
rmallocmap() 和 rmallocmap_wait() 参数更改
scsi_alloc_consistent_buf() 参数更改
uiomove() 参数更改
cv_timedwait() 和 cv_timedwait_sig() 参数更改
ddi_device_copy() 参数更改
ddi_device_zero() 参数更改
ddi_dma_mem_alloc() 参数更改
修改处理数据共享的例程
ioctl() 中的数据共享
devmap() 中的数据共享
mmap() 中的数据共享
检查 x86 平台上 64 位 Long 数据类型的结构
已知的 ioctl 接口
设备大小
D. 控制台帧缓存器驱动程序
E. pci.conf 文件
索引
本附录为要将设备驱动程序转换为支持 64 位内核的设备驱动程序编写人员提供信息。本附录还介绍了 32 位设备驱动程序和 64 位设备驱动程序之间的区别,并说明了将 32 位设备驱动程序转换为 64 位设备驱动程序的步骤。这些信息仅适用于常规字符设备驱动程序和块设备驱动程序。
本附录提供有关以下主题的信息: