【问题标题】:unique or semiunique module ID or Name for any Linux Kernel Module任何 Linux 内核模块的唯一或半唯一模块 ID 或名称
【发布时间】:2012-01-13 22:40:41
【问题描述】:

我有什么方法可以查询 ID 或名称,以便从模块中识别已加载的 Linux 内核模块。

例如: 在 sample.ko 中

int id = get_module_id(???);
printk("%d", id);

目标是使用资源跟踪系统中的 ID 来识别哪些模块未能释放资源,因此 ID 在理论上可能是非唯一的,只要它在实际系统中是唯一的。

这里的目标是尽量减少对单个组件的更改,因此“定义您自己的标识符”之类的解决方案将不起作用。

【问题讨论】:

    标签: linux-kernel kernel-module unique-key


    【解决方案1】:

    如果每个模块版本差异很大,则模块的大小可能足以满足您的目的:

    [wally@lenovotower ~]$ lsmod
    Module                  Size  Used by
    uvcvideo               51149  0 
    snd_usb_audio          85970  1 
    snd_usbmidi_lib        14807  1 snd_usb_audio
    snd_rawmidi            16204  1 snd_usbmidi_lib
    videodev               70682  1 uvcvideo
    media                   9214  2 uvcvideo,videodev
    vfat                    7031  0 
    fat                    37971  1 vfat
    

    【讨论】:

    • 这是一个有趣的想法,并且可能可行,但是如何从该模块中轻松发现模块的大小?更好的是获取用于“模块”列的字符串,因为重点是记录分配给用户的最终报告。
    【解决方案2】:

    您可以使用模块名称作为键。

    或者,您可以使用预处理器并使用文件名 (__FILE__) 作为键。虽然不能保证,但每个模块的文件名都是独一无二的。

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2012-04-11
      • 2013-12-17
      • 1970-01-01
      • 2012-08-14
      • 1970-01-01
      • 2016-05-31
      • 2023-03-14
      • 2020-06-27
      相关资源
      最近更新 更多