HBA(pm8001)的probe过程 之内核路径
来源:互联网 发布:java 启动openssl 编辑:程序博客网 时间:2024/06/05 04:17
参考:struct device_driver的probe的调用http://bbs.chinaunix.net/thread-2120664-1-1.html
弄了HBA驱动几个月了,现在把学习到的东西总结一下。
首先是关于HBA的probe过程。在kernel里面是怎么调用的,看下面:
module_init(pm8001_init)----->pm8001_init(void)----->pci_register_driver(&pm8001_pci_driver)-----> __pci_register_driver(struct pci_driver *drv, struct module *owner, const char *mod_name)----->driver_register(&drv->driver)----->
bus_add_driver(drv)----->driver_attach(drv)-----> __driver_attach(struct device *dev, void *data)----->driver_probe_device(drv, dev)----->
really_probe(dev, drv)----->dev->bus->probe(dev)(或者drv->probe(dev))。根据条件:if(dev->bus->probe),执行dev->bus->probe(dev),
由:
struct bus_type pci_bus_type = {
.name = "pci",
.match = pci_bus_match,
.uevent = pci_uevent,
.probe = pci_device_probe,
.remove = pci_device_remove,
.shutdown = pci_device_shutdown,
.dev_attrs = pci_dev_attrs,
.bus_attrs = pci_bus_attrs,
.drv_attrs = pci_drv_attrs,
.pm = PCI_PM_OPS_PTR,
};
dev->bus->probe(struct device *dev)----->pci_device_probe(struct device *dev)----->__pci_device_probe(struct pci_driver *drv, struct pci_dev *pci_dev)----->pci_call_probe(struct pci_driver *drv, struct pci_dev *dev, const struct pci_device_id *id)----->local_pci_probe(void *_ddi)----->ddi->drv->probe(ddi->dev, ddi->id)
由:
static struct pci_driver pm8001_pci_driver = {
.name = DRV_NAME,
.id_table = pm8001_pci_table,
.probe = pm8001_pci_probe,
.remove = pm8001_pci_remove,
.suspend = pm8001_pci_suspend,
.resume = pm8001_pci_resume,
.err_handler = &pm8001_err_handler,
};
ddi->drv->probe(ddi->dev, ddi->id)----->pm8001_pci_probe
以后的文章中会详细的分析pm8001_pci_probe的执行过程。
- HBA(pm8001)的probe过程 之内核路径
- 我的存储第一战:PM8001驱动分析(一)
- PowerPath只认识部分HBA路径的解决方法
- 存储的一些基本概念(HBA,LUN)
- 存储的一些基本概念(HBA、LUN)
- 存储的一些基本概念(HBA,LUN)
- 存储的一些基本概念(HBA,LUN)
- 存储的一些基本概念(HBA,LUN)
- linux-i2c驱动 之 i2c设备层的注册过程probe函数如何被调用分析
- 设备模型5之总线、设备、驱动(实例,简单演示probe过程)
- 关于struct device_driver结构中的probe探测函数的调用(内核版本:2.6.29)
- stmmac probe 过程
- usb设备probe过程
- stmmac probe 过程
- ffmpeg probe过程总结
- probe调用过程
- hba
- hba
- ASIHTTPRequest类库简介和使用说明
- 例题2——3
- DECLARE_DYNAMIC 和 DECLARE_DYNCREATE
- Visual C++数据库编程快速入门
- JAVA实现文件转移的方法
- HBA(pm8001)的probe过程 之内核路径
- ubuntu访问局域网windows共享目录
- 6078836
- PaaS 及 OpenShift架构简介
- Eclipse中代码编辑背景颜色修改
- Android 实现以太网口共享3G网卡连接外网
- 51单片机参考网址
- PeopleCode 发送邮件并给邮件添加附件
- 编程进阶练习1