/ /実行中のモジュール内のLinuxカーネルモジュールのファイル名を取得する - c、linux、linux-kernel、kernel-module

実行中のモジュール内でLinuxカーネルモジュールのkoファイル名を取得する - c、linux、linux-kernel、kernel-module

実行中のLinuxカーネルモジュール内で、そのファイルの完全なファイル名を簡単に判別する方法はありますか? .ko ファイル(すなわち: /lib/modules/$(uname -r)/kernel/drivers/mymodule.ko)を使用して、 procfsをトラバースすることなく代わりに、カーネルスペースコードで利用可能な内部構造/リストに頼っているだけですか?

回答:

回答№1の場合は3

いいえ。

まず、あなたのモジュールがカーネルにコンパイルされている可能性があります。したがって、ファイルパスはありません。

2番目:ファイルからのカーネルモジュールのロードはユーザー空間で行われます。カーネルはモジュールをデータバッファとして渡し、 init_module システムコール - 理論的には可能ですこのデータはファイルから全くロードされませんでした。 (例えば、ネットワークから、または圧縮されたアーカイブからモジュールをロードするモジュールローダーを想像することができます)。


回答№2については4

君は できない モジュールファイルへのパスを取得する カーネル内:カーネルはそれを保存しません。さらにカーネルはそのパスを知っていません。

カーネルモジュールをロードするための2つのsyscallがあります: init_module そして finit_module (どちらも kernel/module.c)。 最初のものは、モジュールイメージが存在するユーザ空間領域へのポインタを受け取ります(ユーザ空間はモジュールファイルをその領域に読み込まなければなりません)。 2番目のモジュールはモジュールのファイルへの記述子を受け入れますが、この記述子はファイルの読み込みコンテンツにのみ使用され、格納されません。