"./drivers/usb/usb-skeleton.c"是内核提供给usb设备驱动开发者的海量存储usb设备的模板程序, 程序不长, 通用性却很强,十分经典, 深入理解这个文件可以帮助我们更好的理解usb子系统以及usb设备驱动框架, 写出更好的usb海量存储设备驱动。
匹配前
既然是一个usb设备驱动的模板,那么就少不了构造一个usb_driver对象并将其注册到内核中,
650 static struct usb_driver skel_driver = {651 .name = "skeleton",652 .probe = skel_probe,653 .disconnect = skel_disconnect,654 .suspend = skel_suspend,655 .resume = skel_resume,656 .pre_reset = skel_pre_reset,657 .post_reset = skel_post_reset,658 .id_table = skel_table,659 .supports_autosuspend = 1,660 };661 662 module_usb_driver(skel_driver);
关于这个对象的域,在上一篇已经解释了,这里,我们主要关心的是skel_table,它决定了这个驱动匹配到哪个设备,从下面的定义可以看出,这个驱动是按照device进行匹配的,
30 static const struct usb_device_id skel_table[] = { 31 { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) }, 32 { } /* Terminating entry */ 33 }; 34 MODULE_DEVICE_T