2015-02-06 2 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-мыши (с помощью инструментов hotplug для пользовательского пространства)? Прямо сейчас, я поместил файл hello_world.ko в/lib/modules/$ (uname -r) и запустил depmod -a.Как загрузить модуль (не драйвер), когда устройство USB подключено к

ответ

3

В современном Linux функциональность загрузки драйверов/модулей (или вызов любых других команд) при обнаружении нового оборудования обрабатывается udev. Вам нужно будет написать правило udev для вашего устройства, которое поручит ядру загрузить ваш модуль, когда ваше устройство будет обнаружено, и соответствующее событие произошло. Узнайте больше об этом here.

Смежные вопросы