pci_cfgrw 内核服务

用途

读取和写入 PCI 总线插槽配置寄存器。

语法

#include <sys/mdio.h>
int pci_cfgrw(bid, md, write_flag)
int bid;
struct mdio *md;
int write_flag;

描述

pci_cfgrw 内核服务提供了对 PCI 总线的配置寄存器的序列化访问。 为确保多处理器环境中的数据完整性,在访问配置寄存器之前需要锁定。 根据 write_flag 参数的值,对于由 姆斯拉标识的设备,将在偏移量 md_addr 处执行对配置寄存器的读或写操作。

pci_cfgrw 内核服务为内核扩展提供的服务与 MIOPCFGETMIOPCFPPUT ioctls 为应用程序提供的服务相同。 可从进程或中断环境中调用 pci_cfgrw 内核服务。

参数

描述
投标 指定总线标识。
md 用于指定 姆迪奥 结构的地址。 姆迪奥 结构中包含以下字段:
md_addr
要访问的配置寄存器的起始偏移量 (对于 PCI/PCI-X 为00xFF ,对于 PCI-E 为 0 到 0xFFF )。
md_data
指向数据缓冲区的指针。
md_size
md_incr 参数指定的大小项的数目。 对于 PCI/PCI-X ,最大大小为 256 字节; 对于 PCI-E ,最大大小为 4096。
md_incr
访问类型: MV_BYTEMV_WORDMV_SHORT
姆斯拉
设备号和功能号。
(设备号 * 8) + 功能。
写入标记 对于写入,设置为 1 ; 对于读取,设置为 0

返回值

返回 0 表示成功完成。

描述
ENOMEM 指示无法分配任何内存。
EINVAL 指示该总线,设备/功能或大小无效。
EPERM 指示平台不允许执行所请求的操作