c++ - 使用 C++ 获取 Linux 内核模块的详细信息

标签 c++ linux kernel-module

在Linux中,我需要获取所有驱动程序模块的详细信息(即服务退出代码、状态、类型等),我尝试读取/proc/modules。但它只给出了名称、尺寸和使用次数。我读到 modinfolib/modules/ 检索信息,但并非所有模块都包含所有信息。我可以从哪里可靠地获得这些详细信息。我正在使用 C++ 进行编码。

最佳答案

内核模块由 struct module 处理。您可以编写一个模块来从内核中获取该信息(并在另一个 /proc 文件中提供)或使用调试器从 /proc/kcore 读取原始内核内存。

但是,Linux 为每个模块保留的信息不符合您的需求:

  • 服务退出代码不会被内核保存,而是立即作为错误号返回给 init_module() 调用者(即 modprobeinsmod 工具)
  • 状态——没有这样的东西。最接近的是 state,但它是过渡性的,仅在加载期间使用
  • 类型——Linux 不区分模块类型

一般来说,您无法从 Linux 获取该详细信息。最有用的信息已在 /proc/modules 中提供。

关于c++ - 使用 C++ 获取 Linux 内核模块的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29887596/

相关文章:

linux - httpd.service 的作业失败

c++ - 使用可变修改类型实例化模板

c++ - 可组合的 C++ 函数装饰器

Linux - Kickstart 文件中的 "-y"参数选项

c++ - 在 C++ 中将文件从一个目录复制到另一个目录

c - KLM 和用户空间中的文件

c++ - 从枚举中获取所有值

c++ - boost_assert 一个参数类实现了某个方法

c - 如何在 Linux 内核模块的 sysfs 上存储数组?

c - 如何使用 netfilter 内核模块从 sk_buff 中读取数据?