ロードされたカーネルモジュールのベースアドレスとサイズを取得しますか?

ロードされたカーネルモジュールのベースアドレスとサイズを取得しますか?

ロードされたカーネルモジュールのベースアドレスとサイズを取得するには?

答え1

が使えるようです/proc/modules。これには、現在カーネルにロードされているすべてのモジュールに関する情報が含まれています。たとえば、

cat /proc/modules | grep i8k

結果は次のとおりです。

i8k 14696 0 - Live 0xffffffffa03b8000

どこ:

  1. 最初の列にはモジュール名が含まれます。
  2. 2番目の列はモジュールのメモリサイズ(バイト単位)を表します。
  3. 3番目の列には、現在ロードされているモジュールインスタンスの数が一覧表示されます。 0の値はアンロードされたモジュールを示します。
  4. 4 番目の列は、モジュールが実行する他のモジュールに依存しているかどうかを示し、他のモジュールを一覧表示します。
  5. 5番目の列には、モジュールのロード状態(LiveLoadingまたは)が一覧表示されますUnloading
  6. カーネル仮想アドレス空間内のモジュールのデフォルトメモリアドレス。

実行する場合:

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

結果は次の値になります。

i8k 14696 0xffffffffa03b8000

答え2

サイズ/sys

私は1つの値しか提供しないので、この選択肢が好きです。

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

住所の読み込み:pr_debug

有効にすると、pr_debugこの情報が表示され、モジュールパニックが発生した場合に便利ですinit_module

詳細については、次を参照してください。insmodを使用して挿入されたカーネルモジュールのアドレスを取得するには? |スタックオーバーフロー

関連情報