2016-09-16 14 views
3

私は組み込みシステム用のLinuxカーネルモジュールを開発しています。
システムにはプログラマブルロジック(PL)があり、ユーザー空間プロセスからアクセスする必要があります。configfsがmmapをサポートしていないのはなぜですか?

  • 実行時にPLが変更される可能性があります。

  • 私のモジュールは、プロセスが指定されたhwレジスタとページにアクセスすることを許可します。
    これらのマッピングは、(実行時に)myモジュールのconfigfsバインディングで設定されます。

  • すべてのマッピングは、アクセス可能なconfigfsのエントリを取得します。

プロセスが全ページをmmapすることを許可したいので、彼らはPLと直接通信できます。

しかしconfigfsはmmapをサポートしていません。

  • 理由はありますか?
  • Sysfsはmmapをサポートしていますので、configfsを使用しないでください。

ソリューションは、sysfsのに
を私configfsツリーを反映するだろうが、これはconfigfsを使用するには、全体の理由...任意のアイデアを破りますか?

答えて

1

configfssysfsの代わりではありません。実際、それはsysfsの反対であると見ることができます。

sysfsは、カーネルのオブジェクトのビューをファイルシステムインターフェイスを通して提供します。これは、オブジェクトを変更したり、それらのオブジェクトに対していくつかのアクションを実行するために使用できますが、そのためのものではありません。ここでの主なポイントは、sysfsで表される各オブジェクトがカーネルで作成され、破棄されることです。カーネルはsysfs表現のライフサイクルを制御し、sysfsはこれに関するすべてのウィンドウです。一方、ファイルシステムインタフェースを通じてカーネルオブジェクトを作成または変更する方法を提供します。それは基本的な違いです。ユーザー空間プロセスでは、configfs内にディレクトリを作成できます。そのアクションは、カーネル内でのコールバック実行と対応するカーネルオブジェクトの作成を引き起こします。ディレクトリ内のファイルは、さまざまなオブジェクトのコンポーネントの状態を表します。

これらの2つのケースでは、カーネルとユーザースペースプロセス間のデータ交換の性質上、configfsにmmapサポートを持つ必要はないと考えられます。

あなたのシステムの設計/アーキテクチャを見ることなく、あなたの場合に決定的なものを言うのは難しいです。あなたの説明から、sysfsが望ましい目標を達成するために必要なものであるかもしれません。アクセスが必要なすべてのオブジェクトは、カーネルから作成、変更、および破棄されます。モジュール内の既存のカーネル構造/オブジェクトへの設定や変更は、sysfsインターフェイスで行うことができます。それでは、モジュールにsysfsconfigfsの両方のインタフェースをそれぞれ固有の目的のために使用したいと思うかもしれません。物事をきれいにすると、それは悪いことではありません。

+0

私は両方のインターフェイスを使用するのは良いスタイルではないと思いました。しかし、configfsとsysfs上のすべてのアクセスに関連するすべてのものに対して設定を行うことは非常に魅力的です。ありがとう。 – drechsler

関連する問題