ロードされたカーネルモジュールのベースアドレスとサイズを取得するには?
答え1
が使えるようです/proc/modules
。これには、現在カーネルにロードされているすべてのモジュールに関する情報が含まれています。たとえば、
cat /proc/modules | grep i8k
結果は次のとおりです。
i8k 14696 0 - Live 0xffffffffa03b8000
どこ:
- 最初の列にはモジュール名が含まれます。
- 2番目の列はモジュールのメモリサイズ(バイト単位)を表します。
- 3番目の列には、現在ロードされているモジュールインスタンスの数が一覧表示されます。 0の値はアンロードされたモジュールを示します。
- 4 番目の列は、モジュールが実行する他のモジュールに依存しているかどうかを示し、他のモジュールを一覧表示します。
- 5番目の列には、モジュールのロード状態(
Live
、Loading
または)が一覧表示されますUnloading
。 - カーネル仮想アドレス空間内のモジュールのデフォルトメモリアドレス。
実行する場合:
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を使用して挿入されたカーネルモジュールのアドレスを取得するには? |スタックオーバーフロー