我正在尝试熟悉 Linux 内核模块。所以我写了这个在usb上工作的最简单的模块。我不确定我错过了什么。正在加载模块。同样在 dmesg 我可以看到:
[27245.911387] usbcore: registered new interface driver testusb
[27245.911392] testusb: driver registered successfully
但是当我插入 USB 棒时,我的 testusb_probe 函数没有被调用。知道我哪里出错了。这是模块的代码:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/usb.h>
static int testusb_probe(struct usb_interface *interface, const struct usb_device_id *id)
{
printk("testusb: probe module\n");
return 0;
}
static void testusb_disconnect(struct usb_interface *interface)
{
printk("testusb: disconnect module\n");
}
static struct usb_driver testusb_driver = {
name: "testusb",
probe: testusb_probe,
disconnect: testusb_disconnect,
};
static int __init testusb_init(void)
{
int result;
result = usb_register(&testusb_driver);
if (result) {
printk("testusb: registering driver failed");
} else {
printk("testusb: driver registered successfully");
}
return result;
}
static void __exit testusb_exit(void)
{
usb_deregister(&testusb_driver);
printk("testusb: module deregistered");
}
module_init(testusb_init);
module_exit(testusb_exit);
MODULE_AUTHOR("Dal Chand");
MODULE_LICENSE("GPL");