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.  硬件概述

B.  Oracle Solaris DDI/DKI 服务汇总

模块函数

设备信息树节点 (dev_info_t) 函数

设备 (dev_t) 函数

属性函数

设备软件状态函数

内存分配和取消分配函数

内核线程控制和同步函数

任务队列管理函数

中断函数

程控 I/O 函数

直接内存访问 (Direct Memory Access, DMA) 函数

用户空间访问函数

用户进程事件函数

用户进程信息函数

用户应用程序内核和设备访问函数

与时间有关的函数

电源管理函数

故障管理函数

内核统计信息函数

内核日志记录和列显函数

缓存 I/O 函数

虚拟内存函数

设备 ID 函数

SCSI 函数

资源映射管理函数

系统全局状态

实用程序函数

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

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

E.  pci.conf 文件

索引

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

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

程控 I/O 函数

程控 I/O 函数包括:

ddi_dev_nregs()

返回设备的寄存器集数

ddi_dev_regsize()

返回设备寄存器的大小

ddi_regs_map_setup()

为寄存器地址空间设置映射

ddi_regs_map_free()

释放以前映射的寄存器地址空间

ddi_device_copy()

在设备寄存器之间复制数据

ddi_device_zero()

零填充设备

ddi_check_acc_handle()

检查数据访问句柄

ddi_get8()

从映射的内存、设备寄存器或 DMA 内存中读取一个 8 位数据

ddi_get16()

从映射的内存、设备寄存器或 DMA 内存中读取一个 16 位数据

ddi_get32()

从映射的内存、设备寄存器或 DMA 内存中读取一个 32 位数据

ddi_get64()

从映射的内存、设备寄存器或 DMA 内存中读取一个 64 位数据

ddi_put8()

向映射的内存、设备寄存器或 DMA 内存中写入一个 8 位数据

ddi_put16()

向映射的内存、设备寄存器或 DMA 内存中写入一个 16 位数据

ddi_put32()

向映射的内存、设备寄存器或 DMA 内存中写入一个 32 位数据

ddi_put64()

向映射的内存、设备寄存器或 DMA 内存中写入一个 64 位数据

ddi_rep_get8()

从映射的内存、设备寄存器或 DMA 内存中读取多个 8 位数据

ddi_rep_get16()

从映射的内存、设备寄存器或 DMA 内存中读取多个 16 位数据

ddi_rep_get32()

从映射的内存、设备寄存器或 DMA 内存中读取多个 32 位数据

ddi_rep_get64()

从映射的内存、设备寄存器或 DMA 内存中读取多个 64 位数据

ddi_rep_put8()

向映射的内存、设备寄存器或 DMA 内存中写入多个 8 位数据

ddi_rep_put16()

向映射的内存、设备寄存器或 DMA 内存中写入多个 16 位数据

ddi_rep_put32()

向映射的内存、设备寄存器或 DMA 内存中写入多个 32 位数据

ddi_rep_put64()

向映射的内存、设备寄存器或 DMA 内存中写入多个 64 位数据

ddi_peek8()

从某一位置慎重读取一个 8 位的值

ddi_peek16()

从某一位置慎重读取一个 16 位的值

ddi_peek32()

从某一位置慎重读取一个 32 位的值

ddi_peek64()

从某一位置慎重读取一个 64 位的值

ddi_poke8()

向某一位置慎重写入一个 8 位的值

ddi_poke16()

向某一位置慎重写入一个 16 位的值

ddi_poke32()

向某一位置慎重写入一个 32 位的值

ddi_poke64()

向某一位置慎重写入一个 64 位的值

可以始终使用上面列出的一般程控 I/O 函数,而不必使用下面的 memiopci_config 函数。但如果编译时已知访问类型,以下函数可作为备用函数。

ddi_io_get8()

从 I/O 空间的映射设备寄存器中读取一个 8 位数据

ddi_io_get16()

从 I/O 空间的映射设备寄存器中读取一个 16 位数据

ddi_io_get32()

从 I/O 空间的映射设备寄存器中读取一个 32 位数据

ddi_io_put8()

向 I/O 空间的映射设备寄存器中写入一个 8 位数据

ddi_io_put16()

向 I/O 空间的映射设备寄存器中写入一个 16 位数据

ddi_io_put32()

向 I/O 空间的映射设备寄存器中写入一个 32 位数据

ddi_io_rep_get8()

从 I/O 空间的映射设备寄存器中读取多个 8 位数据

ddi_io_rep_get16()

从 I/O 空间的映射设备寄存器中读取多个 16 位数据

ddi_io_rep_get32()

从 I/O 空间的映射设备寄存器中读取多个 32 位数据

ddi_io_rep_put8()

向 I/O 空间的映射设备寄存器中写入多个 8 位数据

ddi_io_rep_put16()

向 I/O 空间的映射设备寄存器中写入多个 16 位数据

ddi_io_rep_put32()

向 I/O 空间的映射设备寄存器中写入多个 32 位数据

ddi_mem_get8()

从内存空间的映射设备或 DMA 内存中读取一个 8 位数据

ddi_mem_get16()

从内存空间的映射设备或 DMA 内存中读取一个 16 位数据

ddi_mem_get32()

从内存空间的映射设备或 DMA 内存中读取一个 32 位数据

ddi_mem_get64()

从内存空间的映射设备或 DMA 内存中读取一个 64 位数据

ddi_mem_put8()

向内存空间的映射设备或 DMA 内存中写入一个 8 位数据

ddi_mem_put16()

向内存空间的映射设备或 DMA 内存中写入一个 16 位数据

ddi_mem_put32()

向内存空间的映射设备或 DMA 内存中写入一个 32 位数据

ddi_mem_put64()

向内存空间的映射设备或 DMA 内存中写入一个 64 位数据

ddi_mem_rep_get8()

从内存空间的映射设备或 DMA 内存中读取多个 8 位数据

ddi_mem_rep_get16()

从内存空间的映射设备或 DMA 内存中读取多个 16 位数据

ddi_mem_rep_get32()

从内存空间的映射设备或 DMA 内存中读取多个 32 位数据

ddi_mem_rep_get64()

从内存空间的映射设备或 DMA 内存中读取多个 64 位数据

ddi_mem_rep_put8()

向内存空间的映射设备或 DMA 内存中写入多个 8 位数据

ddi_mem_rep_put16()

向内存空间的映射设备或 DMA 内存中写入多个 16 位数据

ddi_mem_rep_put32()

向内存空间的映射设备或 DMA 内存中写入多个 32 位数据

ddi_mem_rep_put64()

向内存空间的映射设备或 DMA 内存中写入多个 64 位数据

pci_config_setup()

设置对 PCI 本地总线配置空间的访问

pci_config_teardown()

销毁对 PCI 本地总线配置空间的访问

pci_config_get8()

从 PCI 本地总线配置空间中读取一个 8 位数据

pci_config_get16()

从 PCI 本地总线配置空间中读取一个 16 位数据

pci_config_get32()

从 PCI 本地总线配置空间中读取一个 32 位数据

pci_config_get64()

从 PCI 本地总线配置空间中读取一个 64 位数据

pci_config_put8()

向 PCI 本地总线配置空间中写入一个 8 位数据

pci_config_put16()

向 PCI 本地总线配置空间中写入一个 16 位数据

pci_config_put32()

向 PCI 本地总线配置空间中写入一个 32 位数据

pci_config_put64()

向 PCI 本地总线配置空间中写入一个 64 位数据

表 B-4 过时的程控 I/O 函数

过时的函数
替代函数
ddi_getb()
ddi_get8()
ddi_getl()
ddi_get32()
ddi_getll()
ddi_get64()
ddi_getw()
ddi_get16()
ddi_io_getb()
ddi_io_get8()
ddi_io_getl()
ddi_io_get32()
ddi_io_getw()
ddi_io_get16()
ddi_io_putb()
ddi_io_put8()
ddi_io_putl()
ddi_io_put32()
ddi_io_putw()
ddi_io_put16()
ddi_io_rep_getb()
ddi_io_rep_get8()
ddi_io_rep_getl()
ddi_io_rep_get32()
ddi_io_rep_getw()
ddi_io_rep_get16()
ddi_io_rep_putb()
ddi_io_rep_put8()
ddi_io_rep_putl()
ddi_io_rep_put32()
ddi_io_rep_putw()
ddi_io_rep_put16()
ddi_map_regs()
ddi_regs_map_setup()
ddi_mem_getb()
ddi_mem_get8()
ddi_mem_getl()
ddi_mem_get32()
ddi_mem_getll()
ddi_mem_get64()
ddi_mem_getw()
ddi_mem_get16()
ddi_mem_putb()
ddi_mem_put8()
ddi_mem_putl()
ddi_mem_put32()
ddi_mem_putll()
ddi_mem_put64()
ddi_mem_putw()
ddi_mem_put16()
ddi_mem_rep_getb()
ddi_mem_rep_get8()
ddi_mem_rep_getl()
ddi_mem_rep_get32()
ddi_mem_rep_getll()
ddi_mem_rep_get64()
ddi_mem_rep_getw()
ddi_mem_rep_get16()
ddi_mem_rep_putb()
ddi_mem_rep_put8()
ddi_mem_rep_putl()
ddi_mem_rep_put32()
ddi_mem_rep_putll()
ddi_mem_rep_put64()
ddi_mem_rep_putw()
ddi_mem_rep_put16()
ddi_peekc()
ddi_peek8()
ddi_peekd()
ddi_peek64()
ddi_peekl()
ddi_peek32()
ddi_peeks()
ddi_peek16()
ddi_pokec()
ddi_poke8()
ddi_poked()
ddi_poke64()
ddi_pokel()
ddi_poke32()
ddi_pokes()
ddi_poke16()
ddi_putb()
ddi_put8()
ddi_putl()
ddi_put32()
ddi_putll()
ddi_put64()
ddi_putw()
ddi_put16()
ddi_rep_getb()
ddi_rep_get8()
ddi_rep_getl()
ddi_rep_get32()
ddi_rep_getll()
ddi_rep_get64()
ddi_rep_getw()
ddi_rep_get16()
ddi_rep_putb()
ddi_rep_put8()
ddi_rep_putl()
ddi_rep_put32()
ddi_rep_putll()
ddi_rep_put64()
ddi_rep_putw()
ddi_rep_put16()
ddi_unmap_regs()
ddi_regs_map_free()
inb()
ddi_io_get8()
inl()
ddi_io_get32()
inw()
ddi_io_get16()
outb()
ddi_io_put8()
outl()
ddi_io_put32()
outw()
ddi_io_put16()
pci_config_getb()
pci_config_get8()
pci_config_getl()
pci_config_get32()
pci_config_getll()
pci_config_get64()
pci_config_getw()
pci_config_get16()
pci_config_putb()
pci_config_put8()
pci_config_putl()
pci_config_put32()
pci_config_putll()
pci_config_put64()
pci_config_putw()
pci_config_put16()
repinsb()
ddi_io_rep_get8()
repinsd()
ddi_io_rep_get32()
repinsw()
ddi_io_rep_get16()
repoutsb()
ddi_io_rep_put8()
repoutsd()
ddi_io_rep_put32()
repoutsw()
ddi_io_rep_put16()