#include<linux/init.h>
#include<linux/module.h>
#include <linux/usb/input.h>
#include <linux/hid.h>
/*
* Version information
*/
#define DRIVER_VERSION ""
#define DRIVER_DESC "Hello World module"
#define DRIVER_LICENSE "GPL"
MODULE_LICENSE(DRIVER_LICENSE);
MODULE_AUTHOR(DRIVER_AUTHOR);
static void __exit hello_world_exit(void)
{
pr_debug("Bye!\n");
}
static int __init hello_world_init(void)
{
pr_debug("Hello, USB!");
return 0;
}
static struct usb_device_id usb_kbd_id_table[] = {
{ USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID,
USB_INTERFACE_SUBCLASS_BOOT,
USB_INTERFACE_PROTOCOL_KEYBOARD) },
{}
};
MODULE_DEVICE_TABLE(usb, usb_kbd_id_table);
module_init(hello_world_init);
module_exit(hello_world_exit);
当插入USB鼠标时(使用用户空间热插拔工具),如何让内核加载此模块?现在,我已将hello_world.ko文件放在/ lib / modules / $(uname -r)中并运行depmod -a。
答案 0 :(得分:3)
在现代Linux中,udev
处理检测到新硬件时加载驱动程序/模块(或调用任何其他命令)的功能。您必须为设备编写一个udev规则,该规则将指示内核在检测到设备并发生相应事件时加载模块。阅读更多相关信息here。