Linux kernel 任何Linux内核模块的唯一或半唯一模块ID或名称

Linux kernel 任何Linux内核模块的唯一或半唯一模块ID或名称,linux-kernel,kernel-module,unique-key,Linux Kernel,Kernel Module,Unique Key,是否有任何方法可以让我查询一个ID或名称,该ID或名称可用于从模块中识别已加载的Linux内核模块 例: 在sample.ko内 int id = get_module_id(???); printk("%d", id); 目标是在资源跟踪系统中使用ID来识别哪些模块未能释放资源,因此,只要ID在实际系统中是唯一的,那么ID在理论上可能是非唯一的 这里的目标是最大限度地减少对单个组件的更改,因此“定义您自己的标识符”等解决方案将不起作用。如果每个模块版本都有足够大的差异,那么模块的大小可能足以

是否有任何方法可以让我查询一个ID或名称,该ID或名称可用于从模块中识别已加载的Linux内核模块

例: 在sample.ko内

int id = get_module_id(???);
printk("%d", id);
目标是在资源跟踪系统中使用ID来识别哪些模块未能释放资源,因此,只要ID在实际系统中是唯一的,那么ID在理论上可能是非唯一的


这里的目标是最大限度地减少对单个组件的更改,因此“定义您自己的标识符”等解决方案将不起作用。

如果每个模块版本都有足够大的差异,那么模块的大小可能足以满足您的需要:

[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

您可以使用模块名称作为密钥


或者,您可以使用预处理器并将文件名_FILE______)用作密钥。虽然不能保证每个模块的文件名都是唯一的。

这是一个有趣的想法,可能可行,但如何从该模块中轻松发现模块的大小?更好的做法是获取用于模块列的字符串,因为整个要点是记录分配,以便最终报告给用户。