struct pci_driver{struct list_head node;char*name;conststruct pci_device_id*id_table;/* must be non-NULL for probe to be called */int(*probe)(struct pci_dev*dev,conststruct pci_device_id*id);/* New device inserted */void(*remove)(struct pci_dev*dev);/* Device removed (NULL if ...
PCI设备驱动程序在初始化过程中调用pci_register_driver(),使用一个指向描述该驱动程序结构(struct pci_driver)的指针: structpci_driver 定义 struct pci_driver { struct list_head node; constchar*name; const struct pci_device_id*id_table;int(*probe)(struct pci_dev *dev, const struct pci_device_id...
它直接调用了pci_module_init(),这个函数代码在Linux/drivers/net/eepro100.c中,并且把rtl8139_pci_driver(这个结构是在我们的驱动代码里定义的,它是驱动程序和PCI设备联系的纽带)的地址作为参数传给了它。rtl8139_pci_driver定义如下: staticstructpci_driver rtl8139_pci_driver ={ name: MODNAME, id_table: ...
int (*lock) (struct file *, int, struct file_lock *); ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *); ssize_t (*sendpage) (struct file *, struct page *...
static struct pci_driver demo_pci_driver = { name: demo_MODULE_NAME, /* 设备模块名称 */ id_table:demo_pci_tbl, /* 能够驱动的设备列表 */ probe:demo_probe; /* 查找并初始化设备 */ remove:demo_remove /* 卸载设备模块 */ /* ... */ ...
int __pci_register_driver(struct pci_driver *drv, struct module *owner, const char *mod_name) void pci_unregister_driver(struct pci_driver *drv) pci_module_init()//在一些驱动程序上作为__pci_register_driver别名 内核根据设备ID查询设备的驱动程序,这是一种探测机制。探测机制有两种方式:静态和动态...
1.1struct pci_driver 这个数据结构在文件/linux/pci.h里,这是Linux内核版本2.4之后为新型的PCI设备驱动程序所添加的,其中最主要的是用于识别设备的id_table结构,以及用于检测设备的函数probe( )和卸载设备的函数remove( )。 structpci_driver { struct list_head node; ...
2. PCI Local Bus 2.1 PCI总线组成 PCI总线(Peripheral Component Interconnect,外部设备互联),由Intel公司提出,其主要功能是连接外部设备; PCI Local Bus,PCI局部总线,局部总线技术是PC体系结构发展的一次变革,是在ISA总线和CPU总线之间增加的一级总线或管理层,可将一些高速外设,如图形卡、硬盘控制器等从ISA总线上卸...
如果对具体的硬件缺乏了解,建议先阅读上篇文章《Linux PCI驱动框架分析(一)》; 话不多说,直接开始。 2. 数据结构 PCI体系结构的拓扑关系如图所示,而图中的不同数据结构就是用于来描述对应的模块; Host Bridge连接CPU和PCI系统,由struct pci_host_bridge描述; ...
如果对具体的硬件缺乏了解,建议先阅读上篇文章《Linux PCI驱动框架分析(一)》; 话不多说,直接开始。 2. 数据结构 PCI体系结构的拓扑关系如图所示,而图中的不同数据结构就是用于来描述对应的模块; Host Bridge连接CPU和PCI系统,由struct pci_host_bridge描述; ...