http://blog.sina.com.cn/s/blog_7aa3c69c0101qgg5.html
1. init
先来看模块初始化函数,它仅仅完成一个功能,那就是注册USB驱动:
static int __init usb_skel_init(void)
{
intresult;
result =usb_register(&skel_driver); /*正常注册应返回0*/
if(result)
err("usb_register failed. Error number %d", result);
return result;
}
其中,skel_driver如下:
static struct usb_driver skel_driver = {
.owner= THIS_MODULE,
.name= "skeleton",
.probe= skel_probe,
.disconnect = skel_disconnect,
.id_table= skel_table,
};
usb_driver:
struct usb_driver {
struct module *owner;
const char *name;
int(*probe) (struct usb_interface *intf, const struct usb_device_id *id); /*probe 指向函数到指针,即结构体中包含这个函数,下同*/
void(*disconnect) (struct usb_interface *intf);
int(*ioctl) (struct usb_interface *intf, unsigned int code, void *buf);
int(*suspend) (struct usb_interface *intf, pm_message_t message);
int(*resume) (struct usb_interface *intf);
const struct usb_device_id *id_table;
struct device_driver driver;
};
skeleton driver学习
最新推荐文章于 2024-02-26 16:41:43 发布