在C ++中获取Linux内核模块的详细信息

时间:2015-04-27 05:08:11

标签: c++ linux kernel-module

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

1 个答案:

答案 0 :(得分:1)

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

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

  • 服务退出代码未由内核保存,但会立即返回init_module()来电者作为错误编号(即modprobeinsmod工具)
  • 状态 - 没有这样的事情。最近的是state,但它是过渡性的,仅在加载时使用
  • type - Linux没有区分模块类型

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