获取已加载内核模块的基地址和大小?

获取已加载内核模块的基地址和大小?

如何获取已加载内核模块的基地址和大小?

答案1

我认为你可以使用/proc/modules.它包含有关内核中当前加载的所有模块的信息。例如:

cat /proc/modules | grep i8k

结果可能是:

i8k 14696 0 - Live 0xffffffffa03b8000

在哪里:

  1. 第一列包含模块的名称。
  2. 第二列指模块的内存大小,以字节为单位。
  3. 第三列列出当前加载的模块实例数。零值表示已卸载的模块。
  4. 第四列说明该模块是否依赖于另一个模块才能运行,并列出了那些其他模块。
  5. 第五列列出了模块所处的负载状态:LiveLoadingUnloading
  6. 内核虚拟地址空间中模块的基内存地址。

如果你运行:

awk '$1 ~ /i8k/ { print $1, $2, $6 }' /proc/modules

结果可能是,您需要的值:

i8k 14696 0xffffffffa03b8000

答案2

尺码/sys

我喜欢这个替代方案,因为它只给出一个值:

cat /sys/module/<module-name>/coresize

加载地址于pr_debug

如果启用pr_debug,则存在该信息,并且如果模块在 处出现紧急情况,这可能会很有用init_module

详情请见:如何获取使用 insmod 插入的内核模块的地址? |堆栈溢出

相关内容