usb_register 与 usb_regieter_dev
来源:互联网 发布:剑三雪河炮太捏脸数据 编辑:程序博客网 时间:2024/06/06 03:35
1、usb设备与驱动程序的匹配过程
a.先安装驱动,后插入设备
这种情况下,usb host controller完成对设备的枚举过程后,将设备的信息封装到一个usb_interface结构体中。usb core根据该结构体提供的设备信息(Vendor_id & Product_id)去遍历所有的驱动程序,找到支持该设备的驱动,并调用该驱动中的probe函数。最终将该驱动与设备关联,完成驱动程序的注册。
b.先插入设备,后安装驱动
在插入设备后,usb_host_controller已经完成对设备的枚举,usb core中已经存有描述该设备信息的结构体 usb_interface。驱动安装时,调用static int __init usb_skel_init(void)中的usb_register(skel_driver),将该驱动的相关信息(主要是id_table)提交给usb core,usb core根据提供的信息区遍历所有的设备,找到相关联的设备。再调用probe函数完成驱动的注册
2、usb_register()
usb_register(&skel_driver),这里只是将包含该驱动信息的skel_driver()结构体提交给usb core,以便usb core能够遍历该驱动程序
static struct usb_driver skel_driver = {
.name = "skeleton",
.probe = skel_probe,
.disconnect = skel_disconnect,
};
.name = "skeleton",
.probe = skel_probe,
.disconnect = skel_disconnect,
};
当该驱动与设备比配时,usb core能够调用skel_driver提供的probe函数
3、usb_register_dev()
当usb core成功的将设备和驱动程序关联上之后,调用驱动程序中的probe函数。probe函数再调用usb_register_dev(interface, &skel_class),获得次设备号,将usb驱动注册成字符设备驱动提供给用户程序。
0 0
- usb_register 与 usb_regieter_dev
- 8.1 usb_register 与 usb_regieter_dev
- 与
- 与
- “” 与 “”
- ##与#
- >> 与 > >
- :与::
- &与&&
- && 与 &
- [[与((
- >>与>>>
- *与++
- *与++
- ++与++
- ->与 .
- :与::
- & | 与&& ||
- QWidget,QMainWindow和QDialog的区别 .
- Hibernate懒加载分析
- 待学习
- 批量追加数据库(GDB,MDB,Shp)
- 单链表简单选择排序
- usb_register 与 usb_regieter_dev
- 遍历
- Hibernate数据过滤
- 关于table.LoadDataRow修改datable某一行的值
- Java基础之面向对象思想
- 千万级数据分页实现
- 【C++专题】static_cast, dynamic_cast, const_cast探讨
- oracle各软件产品的定价指南
- 设计模式之概述