编写设备驱动程序

程控 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()