2010-12-09 19 views
5

私は、ユーザプログラムとカーネルモジュールからなるプログラムを書いています。カーネルモジュールは、ユーザープログラムに "送信"するデータを収集する必要があります。これは/ procファイルを使って行う必要があります。さて、私はファイルを作成し、すべてが問題なく、インターネットで答えを読んでいる年齢を過ごしても、それを見つけることができません。どのように/ procファイルを読み書きしますかからカーネルスペース? procfileに提供されたwrite_procとread_procは、USER空間からのデータの読み書きに使用されますが、モジュールは/ procファイル自体を書き込めるようにする必要があります。カーネル空間からlinux/procファイルを読み書きするには?

答えて

9

これは動作しません。ユーザー空間プログラムがファイルを開くと、ファイルはケースバイケースでオンザフライで生成されます。それらのほとんどは、読み取り専用であり、共通のメカニズムによって生成された:

  • create_proc_read_entryのエントリを登録し
  • サプライファイルが読み込まれたときに呼び出される(慣例によりread_procと呼ばれる)コールバック関数
  • このコールバック関数提供されたバッファにデータを格納し、(通常は)proc_calc_metricsを呼び出して、ユーザー空間に提供されるファイルポインタなどを更新する必要があります。

あなた(カーネルの)はprocfsファイルに "書き込み"しませんが、userspaceが要求したときに結果を動的に提供します。

0

ユーザー空間に渡ってデータを取得する方法の1つは、seq_filesです。カーネルパラメータを設定(書き込み)するには、sys-fsノードを考慮する必要があります。

ありがとう、 ビジェイ

関連する問題