プロセスcat /proc/modules
の詳細を説明しました。以下のモジュールは、4つのインスタンスがあることを示しています。
poe_isr 3046 4 - Live 0xc37e1000 (O)
どういう意味ですか?これらのインスタンスの使用量を表示するにはどうすればよいですか?モジュールにインスタンスがゼロで表示され、アクティブな場合はどういう意味ですか?モジュールがロードされていませんが、まだ有効ですか?
adcmods 1565 0 - Live 0xc37dd000 (P)
ベストアンサー1
カウンターです。カーネル API を使用して増減できます。
いつ増やすかはモジュールの責任です。たとえば、somefs
カーネルにモジュールがある場合、待機動作は、パーティションがマウントされたときにこのカウンタをインクリメントし、アンマウント時somefs
に減少させることです。これにより、somefs
パーティションがマウントされていても削除されませんsomefs
。
モジュール使用カウンタがゼロでない場合、rmmod
モジュールは失敗します。ただし、rmmod -f
強制モジュールの削除がカーネルにコンパイルされる場合はそうではありません。
したがって、重要な点は次のとおりです。
- カウンターを増減するのはモジュールの責任です。その後、複雑な一般的な参照トレースはありません。。
- ほとんどの場合、正常に動作しますが、必ずしもそうではありません。たとえば、
ipv6
このように動作するいくつかのダーティモジュールはカウンタを1に増やし、insmod
決して減少しません。したがって、ipv6
モジュールにコンパイルすると、決してrmmod
これを行うことはできません。一部のグラフィックカードドライバは、初期化を解除するルーチンがないため、同様の方法で動作します。開発者が誇りに思うモジュールはありません。 - その結果、モジュールを取り外すことができない場合、モジュールが正確に何を使用しているのかを判断する一般的な方法はありません。