JavaScript is required to for searching.
跳过导航链接
退出打印视图
编写设备驱动程序     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

第 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.  编译、装入、打包和测试驱动程序

驱动程序开发摘要

驱动程序代码布局

头文件

源文件

配置文件

准备安装驱动程序

编译和链接驱动程序

模块相关性

编写硬件配置文件

安装、更新和删除驱动程序

将驱动程序复制到模块目录

使用 add_drv 安装驱动程序

更新驱动程序信息

删除驱动程序

装入和卸载驱动程序

驱动程序打包

驱动程序测试条件

配置测试

功能测试

错误处理

测试装入和卸载

压力、性能和互操作性测试

DDI/DKI 兼容性测试

安装和打包测试

测试特定类型驱动程序

测试磁带机

测试磁盘驱动程序

异步通信驱动程序

测试网络驱动程序

测试 SR-IOV 驱动程序

23.  调试、测试和调优设备驱动程序

24.  推荐的编码方法

第 4 部分附录

A.  硬件概述

B.  Oracle Solaris DDI/DKI 服务汇总

C.  使设备驱动程序支持 64 位

D.  控制台帧缓存器驱动程序

E.  pci.conf 文件

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

安装、更新和删除驱动程序

必须先将驱动程序已存在的信息通知系统,然后才能使用该驱动程序。必须使用 add_drv(1M) 实用程序来正确安装设备驱动程序。安装驱动程序之后,无需使用 add_drv 命令便可从内存中装入和卸载该驱动程序。

将驱动程序复制到模块目录

设备驱动程序模块的路径取决于以下三个条件:

设备驱动程序驻留在以下位置:

/platform/`uname -i`/kernel/drv
包含仅在特定平台上运行的 32 位驱动程序。
/platform/`uname -i`/kernel/drv/sparcv9

包含仅在基于 SPARC 的特定平台上运行的 64 位驱动程序。

/platform/`uname -i`/kernel/drv/amd64

包含仅在基于 x86 的特定平台上运行的 64 位驱动程序。

/platform/`uname -m`/kernel/drv

包含仅在特定平台系列上运行的 32 位驱动程序。

/platform/`uname -m`/kernel/drv/sparcv9

包含仅在基于 SPARC 的特定平台系列上运行的 64 位驱动程序。

/platform/`uname -m`/kernel/drv/amd64

包含仅在基于 x86 的特定平台系列上运行的 64 位驱动程序。

/usr/kernel/drv

包含与平台无关的 32 位驱动程序。

/usr/kernel/drv/sparcv9

包含基于 SPARC 的系统上与平台无关的 64 位驱动程序。

/usr/kernel/drv/amd64

包含基于 x86 的系统上与平台无关的 64 位驱动程序。

要安装 32 位驱动程序,必须将驱动程序及其配置文件复制到模块路径中的 drv 目录。例如,要将驱动程序复制到 /usr/kernel/drv,请键入:

$ su
# cp xx /usr/kernel/drv
# cp xx.conf /usr/kernel/drv

要安装 SPARC 驱动程序,请将驱动程序复制到模块路径中的 drv/sparcv9 目录。将驱动程序配置文件复制到模块路径中的 drv 目录。例如,要将驱动程序复制到 /usr/kernel/drv,应键入:

$ su
# cp xx /usr/kernel/drv/sparcv9
# cp xx.conf /usr/kernel/drv

要安装 64 位 x86 驱动程序,请将驱动程序复制到模块路径中的 drv/amd64 目录。将驱动程序配置文件复制到模块路径中的 drv 目录。例如,要将驱动程序复制到 /usr/kernel/drv,应键入:

$ su
# cp xx /usr/kernel/drv/amd64
# cp xx.conf /usr/kernel/drv

注 - 所有驱动程序配置文件 (.conf 文件)都必须放入模块路径中的 drv 目录。不能将 .conf 文件放入 drv目录的任何子目录。


使用 add_drv 安装驱动程序

使用 add_drv(1M) 命令可将驱动程序安装到系统中。如果驱动程序成功安装, add_drv 将运行 devfsadm(1M),以便在 /dev 目录中创建逻辑名称。

# add_drv xx

在本例中,设备将自身标识为 xx。设备的特殊文件具有缺省的拥有权和权限 (0600 root sys)。add_drv 命令也允许为设备指定其他名称(别名)。有关显式添加别名和设置文件权限的信息,请参见 add_drv(1M) 手册页。


注 - 请勿使用 add_drv 命令安装 STREAMS 模块。有关详细信息,请参见《STREAMS Programming Guide》


如果驱动程序创建了不表示终端设备(如磁盘、磁带或者端口)的次要节点,则可以修改 /etc/devlink.tab,以使 devfsadm/dev 中创建逻辑设备名称。另外,也可以通过安装驱动程序时运行的程序来创建逻辑名称。

更新驱动程序信息

使用 update_drv(1M) 命令可以通知系统对已安装的设备驱动程序所做的任何更改。缺省情况下,系统将会重新读取驱动程序配置文件,并重新装入驱动程序二进制模块。

删除驱动程序

要从系统中删除驱动程序,请使用 rem_drv(1M) 命令,然后从模块路径中删除驱动程序模块和配置文件。使用 add_drv(1M) 重新安装驱动程序之前,无法再使用该驱动程序。删除 SCSI HBA 驱动程序需要重新引导才能生效。