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 主机总线适配器驱动程序

主机总线适配器驱动程序介绍

SCSI 接口

SCSA HBA 接口

SCSA HBA 入口点汇总

SCSA HBA 数据结构

scsi_hba_tran() 结构

scsi_address 结构

scsi_device 结构

scsi_pkt 结构 (HBA)

按目标实例的数据

传输结构克隆

SCSA HBA 函数

HBA 驱动程序的相关性和配置问题

声明和结构

每个命令的结构

模块初始化入口点

_init() 入口点(SCSI HBA 驱动程序)

_fini() 入口点(SCSI HBA 驱动程序)

自动配置入口点

attach() 入口点(SCSI HBA 驱动程序)

detach() 入口点(SCSI HBA 驱动程序)

SCSA HBA 驱动程序入口点

目标驱动程序实例初始化

tran_tgt_init() 入口点

tran_tgt_probe() 入口点

tran_tgt_free() 入口点

资源分配

tran_init_pkt() 入口点

分配和初始化 scsi_pkt(9S) 结构

分配 DMA 资源

重新分配用于数据传送的 DMA 资源

tran_destroy_pkt() 入口点

tran_sync_pkt() 入口点

tran_dmafree() 入口点

命令传输

tran_start() 入口点

中断处理程序和命令完成

超时处理程序

功能管理

tran_getcap() 入口点

tran_setcap() 入口点

中止和重置管理

tran_abort() 入口点

tran_reset() 入口点

tran_bus_reset() 入口点

tran_reset_notify() 入口点

动态重新配置

SCSI HBA 驱动程序特定问题

安装 HBA 驱动程序

HBA 配置属性

scsi-reset-delay 属性

scsi-options 属性

按目标的 scsi-options

x86 目标驱动程序配置属性

排队支持

19.  网络设备驱动程序

20.  USB 驱动程序

21.  SR-IOV 驱动程序

第 3 部分生成设备驱动程序

22.  编译、装入、打包和测试驱动程序

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

24.  推荐的编码方法

第 4 部分附录

A.  硬件概述

B.  Oracle Solaris DDI/DKI 服务汇总

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

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

E.  pci.conf 文件

索引

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

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

SCSI HBA 驱动程序特定问题

本节介绍了特定于 SCSI HBA 驱动程序的问题。

安装 HBA 驱动程序

SCSI HBA 驱动程序的安装方式与叶驱动程序类似。请参见第 22 章。差别在于 add_drv(1M) 命令必须将驱动程序类指定为 SCSI,如:

# add_drv -m" * 0666 root root" -i'"pci1077,1020"' -c scsi isp

HBA 配置属性

连接 HBA 设备实例时,scsi_hba_attach_setup(9F) 会为该 HBA 实例创建许多 SCSI 配置属性。仅当没有现有同名属性附加到 HBA 实例时,才会创建特定属性。此限制可避免覆盖 HBA 配置文件中的任何缺省属性值。

HBA 驱动程序必须使用 ddi_prop_get_int(9F) 检索每个属性。然后,HBA 驱动程序会修改或接受这些属性的缺省值来配置其特定操作。

scsi-reset-delay 属性

scsi-reset-delay 属性是一个整数,用于指定由 SCSI 总线或 SCSI 设备造成的重置延迟的恢复时间(以毫秒为单位)。

scsi-options 属性

scsi-options 属性是一个整数,用于通过单独定义的位来指定多个选项:

按目标的 scsi-options

HBA 驱动程序可能支持以下格式的按目标的 scsi-options 功能:

target<n>-scsi-options=<hex value>

在此示例中,< n> 是指目标 ID。如果定义了按目标的 scsi-options 属性,则 HBA 驱动程序将使用该值,而不使用按 HBA 驱动程序实例的 scsi-options 属性。例如,如果仅需针对某个特定目标设备禁用同步数据传送,则该方法可提供更准确的控制。按目标的 scsi-options 属性可以在 driver.conf(4) 文件中定义。

以下示例说明了按目标的 scsi-options 属性定义,用于禁用目标设备 3 的同步数据传送:

target3-scsi-options=0x2d8

x86 目标驱动程序配置属性

某些 x86 SCSI 目标驱动程序(如 cmdk 磁盘驱动程序)使用以下配置属性:

如果使用 cmdk 样例驱动程序编写适用于 x86 平台的 HBA 驱动程序,则必须在 driver.conf(4) 文件中定义所有相应属性。


注 - 这些属性定义应仅显示在 HBA 驱动程序的 driver.conf(4) 文件中。HBA 驱动程序本身不应以任何方式检查或尝试解释这些属性。这些属性仅是建议性的,并且用作 cmdk 驱动程序的附件。不应以任何方式依赖这些属性。在将来的发行版中可能不会使用这些属性定义。


disk 属性可用于定义 cmdk 支持的磁盘类型。对于 SCSI HBA,disk 属性的唯一可能值是:

queue 属性用于定义磁盘驱动程序如何在执行 strategy(9E) 的过程中对传入请求的队列进行排序。以下是两个可能的值:

flow_control 属性用于定义如何将命令传输到 HBA 驱动程序。以下是三个可能的值:

以下示例是一个供 x86 HBA PCI 设备使用的 driver.conf(4) 文件,该设备设计用于 cmdk 样例驱动程序:

#
# config file for ISP 1020 SCSI HBA driver     
#
       flow_control="dsngl" queue="qsort" disk="scdk"
       scsi-initiator-id=7;