JavaScript is required to for searching.
跳过导航链接
退出打印视图
编写设备驱动程序     Oracle Solaris 10 1/13 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.  编译、装入、打包和测试驱动程序

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

24.  推荐的编码方法

第 4 部分附录

A.  硬件概述

SPARC 处理器问题

SPARC 数据对齐

SPARC 结构中的成员对齐

SPARC 字节排序

SPARC 寄存器窗口

SPARC 乘法和除法指令

x86 处理器问题

x86 字节排序

x86 体系结构手册

字节存储顺序

存储缓冲区

系统内存模型

全存储排序 (Total Store Ordering, TSO)

部分存储排序 (Partial Store Ordering, PSO)

总线体系结构

设备标识

支持的中断类型

总线特定信息

PCI 局部总线

PCI 地址域

PCI 配置地址空间

PCI 配置基址寄存器

PCI 内存地址空间

PCI I/O 地址空间

PCI 硬件配置文件

PCI Express

S 总线

S 总线物理地址空间

物理 S 总线地址

S 总线硬件配置文件

设备问题

时间关键型部分

延迟

内部顺序逻辑

中断问题

SPARC 计算机上的 PROM

Open Boot PROM 3

Forth 命令

遍历 PROM 设备树

映射设备

读取和写入

B.  Solaris DDI/DKI 服务汇总

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

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

E.  pci.conf 文件

索引

设备问题

本节介绍特殊设备的问题。

时间关键型部分

虽然在有了锁定原语所提供的同步和保护机制的情况下可以执行大多数驱动程序操作,但是对于某些设备而言,必须在没有中断的情况下按顺序发生一系列事件。函数 ddi_enter_critical(9F) 与锁定原语一起将请求系统尽可能保证不会抢占或中断当前线程。在进行对 ddi_exit_critical(9F) 的关闭调用之前,此保证将一直有效。有关详细信息,请参见 ddi_enter_critical(9F) 手册页。

延迟

许多芯片指定只能在指定间隔对其进行访问。例如, Zilog Z8530 SCC 具有 1.6 微秒的“写入恢复时间”。此规范意味着通过 8530 写入字符时,必须使用 drv_usecwait(9F) 强制延迟。在某些情况下,规范不会明确指示所需的延迟,因此必须根据经验来确定延迟。

请注意不要组合可能大量存在的设备部件的延迟,例如数以千计的 SCSI 磁盘驱动器。

内部顺序逻辑

具有内部顺序逻辑的设备会将多个内部寄存器映射到同一外部地址。各种内部顺序逻辑包括以下类型:

中断问题

请注意以下常见的与中断相关的问题: