我有什么方法可以查询可以用来从模块中识别加载的Linux内核模块的ID或名称。
例如: 在sample.ko
中int id = get_module_id(???);
printk("%d", id);
目标是使用资源跟踪系统中的ID来识别哪些模块未能释放资源,因此只要它在实际系统中是唯一的,ID理论上可能是非唯一的。
此处的目标是尽量减少对单个组件的更改,因此“定义您自己的标识符”等解决方案将无效。
答案 0 :(得分:0)
如果每个模块版本差异很大,那么模块的大小可能足以满足您的需要:
[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
答案 1 :(得分:0)
您可以将模块名称用作键。
或者,您可以使用预处理器并使用文件名( __ FILE __ )作为键。虽然不能保证,但每个模块的文件名都是独一无二的。