gpt4 book ai didi

c - 基于 Ubuntu 的发行版缺少 modules.usbmap 和 modules.pcimap

转载 作者:太空狗 更新时间:2023-10-29 15:04:01 27 4
gpt4 key购买 nike

我一直在学习内核编程并参加了 Eudyptula challenge ,任务 5 要求我修改之前任务中的 hello world 模块,使其在插入 USB 键盘时自动加载,并在拔出键盘时自动卸载。

现在,为了它的缘故,我不会在这里发布我的代码,因为这将是这个任务的巨大破坏者,并且会破坏其他人的乐趣。基本上,它的作用是:

  1. 创建一个 struct usb_device_id 数组,其中一个条目将我的模块绑定(bind)到任何 usb 键盘
  2. 创建一个 struct usb_driver 并初始化适当的字段;特别是,它引用了我之前创建的 USB 设备 ID 表数组
  3. 使用宏 MODULE_DEVICE_TABLE 注册驱动程序。

注册/注销例程正在运行。当我手动加载和卸载模块时,我得到了预期的调试消息。

我将模块复制到 /lib/modules/$(uname -r) 并运行 depmod -a。该模块已添加到 modules.aliasmodules.dep,但是当我插入/拔出键盘时没有任何反应。

进一步的研究表明,我应该有一个由 depmod 生成的 modules.usbmap 文件,内核在其中保存设备和驱动程序之间的映射以供加载。我的文件夹树中的任何地方都没有这个文件。我也没有 modules.pcimap。我检查了内核配置以确保启用了可加载模块支持以及热插拔支持 - 它们是。

这是 Kubuntu 14.04,带有自编译的 3.16.0-rc5 内核。我错过了什么?我已经检查了内核配置并检查了最明显的选项。我有点被困在这里。有任何想法吗?

最佳答案

您可能遗漏了两件事:

1.) USB 键盘通常不仅是通用 USB 设备,而且是 HID 类设备。 Linux 将 USB HID 设备视为一个单独的子类。你有没有考虑到这一点?

2.) modules.usbmap 和 modules.pcimap 仅存在于一些旧版本的 module/pci/usb 实用程序中。在现代版本中,与过去那些文件中的信息等同的信息包含在 modules.alias 中。您的研究 Material 可能已经过时。

关于c - 基于 Ubuntu 的发行版缺少 modules.usbmap 和 modules.pcimap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24832032/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com