LDD3读书笔记(第17章 PCI设备驱动程序)

#include <linux/pci.h>
    这个头文件包含PCI寄存器的符号名称,以及若干厂商和设备ID值。
struct pci_dev;
    代表内核中PCI设备的结构体。
struct pci_driver;
    代表PCI驱动程序的结构体。所有的PCI驱动程序必须定义该结构体。
struct pci_device_id;
    描述该驱动程序所支持的PCI设备类型的结构体。
int pci_register_driver(struct pci_driver *drv);
int pci_module_init(struct pci_driver *drv);
void pci_unregister_driver(struct pci_driver *drv);
    从内核注册或者注销PCI驱动程序的函数。
struct pci_dev *pci_find_device(unsigned int vendor,unsigned int device,struct pci_dev *from);
struct pci_dev *pci_find_device_reverse(unsigned int vendor,unsigned int device,const struct pci_dev *from);
struct pci_dev *pci_find_subsys(unsigned int vendor,unsigned int device,unsigned int ss_vendor,unsigned int ss_device,const struct pci_dev *from);
struct pci_dev *pci_find_class(unsigend int class,struct pci_dev *from);
    在设备列表中查找具有特定签名或者属于某一特定类的设备的函数。如果没有找到,返回值为NULL。from被用来继续查找;在第一次调用函数时它必须为NULL,如果想要查找更多的设备,它必须指向前一个找到的设备。这些函数不建议使用,应该用pci_get_系列的函数代替。
struct pci_dev *pci_get_device(unsigned int vender,unsigned int device,struct pci_dev *from);
struct pci_dev *pci_get_subsys(unsigned int vender,unsigned int device,unsigned int ss_vendor,unsigned int ss_device,struct pci_dev *from);
struct pci_dev *pci_get_slot(struct pci_bus *bus,unsigned int dev);
    在设备列表中查找具有特定签名或者属于某一个特定类的设备的函数。如果没有找到,返回值为NULL。form被用来继续查找;在第一次调用函数时它必须为NULL,如果想要查找更多的设备,它必须指向前一个找到的设备。返回的结构体的引用计数被增加,在使用完该结构体之后,必须调用pci_dev_put函数。
int pci_read_config_byte(struct pci_dev *dev,int where,u8 *val);
int pci_read_config_word(struct pci_dev *dev,int where,u16 *val);
int pci_read_config_dword(struct pci_dev *dev,int where,u32 *val);
int pci_write_config_byte(struct pci_dev *dev,int where,u8 *val);
int pci_write_config_word(struct pci_dev *dev,int where,u16 *val);
int pci_write_config_dword(struct pci_dev *dev,int where,u32 *val);
    读取或者写入PCI配置寄存器的函数。尽管Linux内核处理了字节序的问题,但从单字节装配多字节值时,程序员必须小心处理字节序的问题。PCI总线是小头的。
int pci_enable_device(struct pci_dev *dev);
    激活一个PCI设备。
unsigned long pci_resource_start(struct pci_dev *dev,int bar);
unsigned long pci_resource_end(struct pci_dev *dev,int bar);
unsigned long pci_resource_flags(struct pci_dev *dev,int bar);
    处理PCI设备资源的函数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值