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

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.  Oracle Solaris DDI/DKI 服务汇总

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

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

E.  pci.conf 文件

索引

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

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

SPARC 处理器问题

本节介绍了许多特定于 SPARC 处理器的主题,如数据对齐、字节排序、寄存器窗口以及浮点指令的可用性。有关特定于 x86 处理器主题的信息,请参见x86 处理器问题


注 - 驱动程序决不能执行浮点操作,因为内核中不支持这些操作。


SPARC 数据对齐

所有数量均必须使用标准 C 数据类型与其自然边界对齐:

通常,编译器会处理所有对齐问题。但是,驱动程序编写者可能更关心对齐,因为只有使用正确的数据类型才能访问设备。由于设备寄存器通常是通过指针引用来访问的,因此驱动程序必须确保在访问设备时正确对齐指针。

SPARC 结构中的成员对齐

由于 SPARC 处理器强加的数据对齐限制,因此,C 结构也具有对齐要求。结构对齐要求是由最严格对齐的结构组件强加的。例如,仅包含字符的结构没有对齐限制,而对于包含 long long 成员的结构,则必须对其结构进行设置,保证此成员在 64 位边界上对齐。

SPARC 字节排序

SPARC 处理器使用大尾数法进行字节排序。整数的最高有效字节 (most significant byte, MSB) 存储在该整数的最低地址上。最低有效字节存储在此处理器中字的最高地址上。例如,字节 63 是 64 位处理器的最低有效字节。

image:图中显示如何在大尾数法体系结构中对字节进行排序,即字节 0 是最高有效字节。

SPARC 寄存器窗口

SPARC 处理器使用寄存器窗口。每个寄存器窗口包含八个输入寄存器、八个局部寄存器、八个输出寄存器以及八个全局寄存器。输出寄存器是下一个窗口的输入寄存器。寄存器窗口的数量范围从 2 到 32,具体取决于处理器实现。

由于驱动程序通常是使用 C 语言编写的,因此编译器通常不会指明使用了寄存器窗口这一事实。但是,当调试驱动程序时,可能必须使用寄存器窗口。

SPARC 乘法和除法指令

版本 7 SPARC 处理器没有乘法或除法指令。 乘法和除法指令是在软件中模拟实现的。由于驱动程序可能在版本 7、版本 8 或者版本 9 处理器中运行,因此请避免进行大量整数乘除。相反,请使用按位向左和向右移位来以 2 的幂进行相乘和相除。

SPARC Architecture Manual, Version 9》介绍了有关 SPARC CPU 的更具体信息。《SPARC Compliance Definition》(版本 2.4)介绍了 SPARC V9 的应用程序二进制接口 (application binary interface, ABI) 的详细信息。本手册介绍了 32 位 SPARC V8 ABI 和 64 位 SPARC V9 ABI。可以从 SPARC International 的网站 http://www.sparc.com 上获取本文档。