2015-02-06 46 views
1
#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。如何在USB设备插入时加载模块(不是驱动程序)

回答

3

在现代Linux加载的驱动程序/模块(或调用任何其他命令)每当新的硬件检测由udev处理的功能。你将不得不为你的设备写一个udev规则,当你的设备被检测到并且相应的事件发生时,它将指示内核加载你的模块。阅读更多关于它here

相关问题