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 마우스를 연결할 때 커널이이 모듈을로드하도록하려면 어떻게합니까? 지금 당장 hello_world.ko 파일을/lib/modules/$ (uname -r)에 넣고 depmod -a를 실행합니다.USB 장치가 연결되었을 때 모듈을로드하는 방법

답변

3

현대 리눅스에서 새로운 하드웨어가 감지 될 때마다 드라이버/모듈을로드하거나 다른 명령을 호출하는 기능은 udev으로 처리됩니다. 장치가 감지되어 해당 이벤트가 발생하면 커널에 모듈을로드하도록 지시하는 장치 용 udev 규칙을 작성해야합니다. 그것에 대해 자세히 알아보기 here.

관련 문제