2015-02-06 43 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

相關問題