.owner = THIS_MODULE, //指向该驱动程序的模块所有者的批针。USB核心使用它来正确地对该USB驱动程序进行引用计数,使它不会在不合适的时刻被卸载掉,这个变量应该被设置为THIS_MODULE宏。
.name = "skeleton", //指向驱动程序名字的指针,在内核的所有USB驱动程序中它必须是唯一的,通常被设置为和驱动程序模块名相同的名字。
.probe = skel_probe, //这个是指向USB驱动程序中的探测函数的指针。当USB核心认为它有一个接口(usb_interface)可以由该驱动程序处理时,这个函数被调用。
.disconnect = skel_disconnect, //指向USB驱动程序中的断开函数的指针,当一个USB接口(usb_interface)被从系统中移除或者驱动程序正在从USB核心中卸载时,USB核心将调用这个函数。
.id_table = skel_table, //指向ID设备表的指针,这个表包含了一列该驱动程序可以支持的USB设备,如果没有设置这个变量,USB驱动程序中的探测回调函数就不会被调用。
};
//1、入口函数
static int __init usb_skel_init(void)
{
int result;
/* 驱动程序注册到USB子系统中*/
result = usb_register(&skel_driver);
if (result)
err("usb_register failed. Error number %d", result);
return result;
}
//2、出口函数
static void __exit usb_skel_exit(void)
{
/* 从子系统注销驱动程序 */
usb_deregister(&skel_driver);
}
//3、注册到内核
module_init(usb_skel_init);
module_exit(usb_skel_exit);
MODULE_LICENSE("GPL");