如何办网站,网站建设讯美,九江网站网站建设,小工程施工合同协议书参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为多个部分#xff1a;驱动加载部分、probe部分、open部分、urb回调函数处理部分。下文阴影部分为注解。一、 驱动加载部分static int __init usb_mouse_init(void){int retval usb_register(usb_mouse_…参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为多个部分驱动加载部分、probe部分、open部分、urb回调函数处理部分。下文阴影部分为注解。一、 驱动加载部分static int __init usb_mouse_init(void){int retval usb_register(usb_mouse_driver);//注册鼠标驱动if (retval 0)info(DRIVER_VERSION : DRIVER_DESC);return retval;}其中usb_mouse_driver的定义为static struct usb_driver usb_mouse_driver {.owner THIS_MODULE,.name usbmouse,.probe usb_mouse_probe,.disconnect usb_mouse_disconnect,.id_table usb_mouse_id_table,};假如注册成功的话将会调用usb_mouse_probe。那么什么时刻才算注册成功呢和其它驱动注册流程一样只有在其对应的“总线”上发觉匹配的“装备”才会调用probe。总线匹配的要领和细致总线有关如platform_bus_type中是判断驱动名称和平台装备名称能不能相似那如何确认usb总线的匹配要领呢Usb装备是注册在usb_bus_type总线下的。查看usb_bus_type的匹配要领。struct bus_type usb_bus_type {.name usb,.match usb_device_match,.hotplug usb_hotplug,