usbkbd.c浅析
2015-12-12 21:37
225 查看
先看入口函数usb_kbd_init
probe()调用简略过程:
/** 在入口函数中,只做了注册键盘驱动 一件事情。 */ static int __init usb_kbd_init(void) { /** 既然是注册驱动,那么底层一定会经过driver_register()这个函数。 优先会调用bus上提供的probe()函数(原理:请见我的另一篇博文) 如果bus没有提供probe()函数,那么就会调用驱动提供的probe()函数 usb总线: struct bus_type usb_bus_type = { .name = "usb", .match = usb_device_match, .uevent = usb_uevent, }; usb总线没有提供probe函数,那么就会调用驱动中提供的probe函数: static struct usb_driver usb_kbd_driver = { .name = "usbkbd", .probe = usb_kbd_probe, .disconnect = usb_kbd_disconnect, .id_table = usb_kbd_id_table, }; usb_kbd_probe()函数会被调用 */ int result = usb_register(&usb_kbd_driver);//注册usb键盘驱动 /** usb_register会调用usb_register_driver()函数向usb 核心注册一个usb接口驱动。 成功 返回 0 ,失败返回负数 */ if (result == 0) { printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"DRIVER_DESC "\n"); } return result; }
probe()调用简略过程:
相关文章推荐
- 和XP系统iis5.1交手的坎坷一路
- PL/SQL
- hdu2141 Can you find it? (二分查找)
- 黑马程序员——java多线程
- Python学习(一)变量
- hadoop2.x上的Hive-1.x 安装
- GTW likes gt(BC 模拟 or 优先队列)
- 51单片机串口通信的帧数据接收
- Objc运行时读取和写入plist文件遇到的问题
- 学习progressDialog
- Objc运行时读取和写入plist文件遇到的问题
- Objc运行时读取和写入plist文件遇到的问题
- powerdesigner奇淫技
- CSS.DIV网页样式与布局学习总结
- 单机搭建基于Hadoop的Spark环境
- 输入两数相乘-经典递归
- cftool的应用
- 循环相关函数range、enumerate、zip
- 论学习的重要性
- POJ-3100