没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
编写设备驱动程序
文件号码 E38873
2013 年 1 月
版权所有 © 1992, 2013, Oracle 和/或其附属公司。 保留所有权利。
本软件和相关文档是根据许可证协议提供的,该许可证协议中规定了关于使用和公开本软件和相关文档的各种限制,并受知识产权法的保护。除非在
许可证协议中明确许可或适用法律明确授权,否则不得以任何形式、任何方式使用、拷贝、复制、翻译、广播、修改、授权、传播、分发、展示、执
行、发布或显示本软件和相关文档的任何部分。除非法律要求实现互操作,否则严禁对本软件进行逆向工程设计、反汇编或反编译。
此文档所含信息可能随时被修改,恕不另行通知,我们不保证该信息没有错误。如果贵方发现任何问题,请书面通知我们。
如果将本软件或相关文档交付给美国政府,或者交付给以美国政府名义获得许可证的任何机构,必须符合以下规定:
U.S. GOVERNMENT END USERS:
Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S.
Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specic supplemental
regulations. As such, use, duplication, disclosure, modication, and adaptation of the programs, including any operating system, integrated software, any programs
installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to
the U.S. Government.
本软件或硬件是为了在各种信息管理应用领域内的一般使用而开发的。它不应被应用于任何存在危险或潜在危险的应用领域,也不是为此而开发
的,其中包括可能会产生人身伤害的应用领域。如果在危险应用领域内使用本软件或硬件,贵方应负责采取所有适当的防范措施,包括备份、冗余和
其它确保安全使用本软件或硬件的措施。对于因在危险应用领域内使用本软件或硬件所造成的一切损失或损害,Oracle Corporation 及其附属公司概不
负责。
Oracle 和 Java 是 Oracle 和/或其附属公司的注册商标。其他名称可能是各自所有者的商标。
Intel 和 Intel Xeon 是 Intel Corporation 的商标或注册商标。所有 SPARC 商标均是 SPARC International, Inc 的商标或注册商标,并应按照许可证的规定使
用。AMD、Opteron、AMD 徽标以及 AMD Opteron 徽标是 Advanced Micro Devices 的商标或注册商标。UNIX 是 The Open Group 的注册商标。
本软件或硬件以及文档可能提供了访问第三方内容、产品和服务的方式或有关这些内容、产品和服务的信息。对于第三方内容、产品和服务,Oracle
Corporation 及其附属公司明确表示不承担任何种类的担保,亦不对其承担任何责任。对于因访问或使用第三方内容、产品或服务所造成的任何损
失、成本或损害,Oracle Corporation 及其附属公司概不负责。
130221@25097
目录
前言 ........................................................................................................................................................31
第 1 部分 针对 Oracle Solaris 平台设计设备驱动程序 ................................................................................. 37
1 Oracle Solaris 设备驱动程序概述 ....................................................................................................39
设备驱动程序基础知识 .................................................................................................................... 39
什么是设备驱动程序? ............................................................................................................ 39
什么是设备驱动程序入口点? ............................................................................................... 40
设备驱动程序入口点 ........................................................................................................................ 40
通用于所有驱动程序的入口点 ............................................................................................... 41
用于块设备驱动程序的入口点 ............................................................................................... 43
用于字符设备驱动程序的入口点 ........................................................................................... 44
用于 STREAMS 设备驱动程序的入口点 ............................................................................... 45
用于内存映射设备的入口点 ................................................................................................... 46
网络设备驱动程序入口点 ........................................................................................................ 47
用于 SCSI HBA 驱动程序的入口点 ........................................................................................ 47
用于 PC 卡驱动程序的入口点 ................................................................................................. 48
设备驱动程序设计注意事项 ........................................................................................................... 48
DDI/DKI 功能 ............................................................................................................................. 49
驱动程序上下文 ......................................................................................................................... 51
返回错误 ...................................................................................................................................... 51
动态内存分配 .............................................................................................................................. 52
热插拔 ........................................................................................................................................... 52
2 Oracle Solaris 内核和设备树 .............................................................................................................53
什么是内核? ..................................................................................................................................... 53
多线程执行环境 ......................................................................................................................... 55
3
虚拟内存 ...................................................................................................................................... 55
作为特殊文件的设备 ................................................................................................................. 55
DDI/DKI 接口 ............................................................................................................................. 55
设备树概述 .......................................................................................................................................... 56
设备树组件 .................................................................................................................................. 56
显示设备树 .................................................................................................................................. 58
将驱动程序绑定到设备 ............................................................................................................ 60
3 多线程 ...................................................................................................................................................63
锁定原语 .............................................................................................................................................. 63
驱动程序数据的存储类 ............................................................................................................ 63
互斥锁 ........................................................................................................................................... 64
读取器/写入器锁 ........................................................................................................................ 65
信号 ............................................................................................................................................... 65
线程同步 .............................................................................................................................................. 66
线程同步中的条件变量 ............................................................................................................ 66
cv_wait() 和 cv_timedwait() 函数 ........................................................................................ 67
cv_wait_sig() 函数 ................................................................................................................... 68
cv_timedwait_sig() 函数 ........................................................................................................ 69
选择锁定方案 ..................................................................................................................................... 69
潜在的锁定缺点 ......................................................................................................................... 70
线程无法接收信号 ..................................................................................................................... 70
4 属性 ........................................................................................................................................................73
设备属性 .............................................................................................................................................. 73
设备属性名称 .............................................................................................................................. 74
创建和更新属性 ......................................................................................................................... 74
查找属性 ...................................................................................................................................... 74
prop_op() 入口点 ....................................................................................................................... 75
5 管理事件和排队任务 .........................................................................................................................77
管理事件 .............................................................................................................................................. 77
事件介绍 ...................................................................................................................................... 77
使用 ddi_log_sysevent() 记录事件 ...................................................................................... 78
目录
编写设备驱动程序 • 2013 年 1 月4
定义事件特性 .............................................................................................................................. 80
排队任务 .............................................................................................................................................. 83
任务队列简介 .............................................................................................................................. 83
任务队列接口 .............................................................................................................................. 83
观察任务队列 .............................................................................................................................. 84
6 驱动程序自动配置 .............................................................................................................................87
驱动程序的装入和卸载 .................................................................................................................... 87
驱动程序必需的数据结构 ............................................................................................................... 88
modlinkage 结构 ......................................................................................................................... 88
modldrv 结构 ................................................................................................................................89
dev_ops 结构 ................................................................................................................................89
cb_ops 结构 .................................................................................................................................. 90
可装入驱动程序接口 ........................................................................................................................ 91
_init() 示例 ................................................................................................................................92
_fini() 示例 ................................................................................................................................93
_info() 示例 ................................................................................................................................93
设备配置概念 ..................................................................................................................................... 94
设备实例和实例编号 ................................................................................................................. 94
次要节点和次要设备号 ............................................................................................................ 95
probe() 入口点 ........................................................................................................................... 95
attach() 入口点 ......................................................................................................................... 97
detach() 入口点 ....................................................................................................................... 102
getinfo() 入口点 ..................................................................................................................... 103
使用设备 ID ...................................................................................................................................... 105
注册设备 ID ............................................................................................................................... 105
注销设备 ID ............................................................................................................................... 106
7 设备访问:程控 I/O ..........................................................................................................................107
设备内存 ............................................................................................................................................ 107
管理设备和主机字节序之间的差别 .................................................................................... 108
管理数据排序要求 ................................................................................................................... 108
ddi_device_acc_attr 结构 .................................................................................................... 108
映射设备内存 ............................................................................................................................ 109
映射设置示例 ............................................................................................................................ 109
目录
5
剩余605页未读,继续阅读
资源评论
scuhk
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功