- 论坛徽章:
- 0
|
本帖最后由 鬼鬼一哈 于 2012-06-14 21:28 编辑
对一个pci驱动来讲,struct pci_driver {
char *name; 该驱动的名字
.............................其中的probe函数有自己来实现
const struct pci_device_id *id_table; 该驱动支持的所有设备
struct device_driver driver 这个是什么意思?
};
在PCI驱动注册中,先将给驱动中指向PCI总线,然后真正注册的是driver_register(struct device_driver driver);而非pci_driver,和上面一样的问题。
然后在总线上添加该struct device_driver driver驱动,驱动与设备匹配,如果匹配便进入really_probe(struct device *dev, struct device_driver *drv)然后进入到自己的probe函数。大体上就这个流程。。
#define to_pci_driver(drv) container_of(drv, struct pci_driver, driver)
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})对这个也不是很明白? |
|