首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >热插拔设备驱动模块的问题

热插拔设备驱动模块的问题
EN

Stack Overflow用户
提问于 2014-05-04 18:57:30
回答 2查看 236关注 0票数 1

我正在写一个模块,当你插入一个usb鼠标打印“你好世界”。当我插入鼠标,dmesg打印六次以下消息时,问题就来了:

7367.238560 helwor_mod:不同意符号module_layout的版本

这是我的密码

代码语言:javascript
复制
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/usb.h>
#include <linux/usb/input.h>
#include <linux/hid.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Isaac Lleida <isakyllr@opmbx.org>");
MODULE_VERSION("0.1");


static struct usb_device_id usb_mouse_id_table [] = {
    { USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,
            USB_INTERFACE_PROTOCOL_MOUSE) },
    { }
};
MODULE_DEVICE_TABLE(usb, usb_mouse_id_table);


static int mouse_probe(struct usb_interface *iface,
    const struct usb_device_id *id)
{
    pr_info("Hello World!");
    return 0;
}

static void mouse_disconnect(struct usb_interface *iface)
{
    pr_info("Bye World!");
}


static struct usb_driver mouse_driver = {
    .name  = "usbmouse",
    .probe = mouse_probe,
    .disconnect = mouse_disconnect,
    .id_table = usb_mouse_id_table,
};
module_usb_driver(mouse_driver);

static int __init hello_init(void)
{
    int res = 0;
    res = usb_register(&mouse_driver);

    if(res)
        pr_err("usb_register failed with error %d", res);
    return res;
}

static void __exit hello_exit(void)
{
    pr_debug("USB Mouse Removed...");
    usb_deregister(&mouse_driver);
}

我已经谷歌了整个下午,仍然不知道如何解决它。希望有人能帮我谢谢。

EN

回答 2

Stack Overflow用户

发布于 2014-05-05 01:35:58

这是相关的:layout version incompatibility

我敢打赌,用于编译模块的内核源代码(头)与运行的内核版本不同。

票数 0
EN

Stack Overflow用户

发布于 2014-05-12 11:43:52

问题解决了。产生此问题是因为设备由另一个驱动程序控制,并加载到系统中。只要卸载它并加载您的驱动模块。

很抱歉吉尔斯的离题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23484528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档