【问题标题】:How to load a module (not a driver) when a USB device is plugged in插入 USB 设备时如何加载模块(不是驱动程序)
【发布时间】:2015-02-07 00:04:22
【问题描述】:
#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。

【问题讨论】:

    标签: c linux kernel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多