3

デバイス ラッピング ライブラリ (Linux) の効果的な単体テストを行うために、メモリ マップド デバイスを C でモックしたいと考えています。

これで、ファイル記述子をユーザー空間に入れることができることがわかりmmapました。これは、原則として、上記のデバイスのモックを表すことができます。

したがって、AFAICT、私の質問は次のようになります。ユーザー空間でmmap、適切なコールバックによって読み取りと書き込みが処理され、操作できるファイル記述子を作成することは可能ですか?

または、おそらくこれは解決済みの問題であり、フックできる既知のカーネル ドライバーがありますか?

4

1 に答える 1

2

これが Linux システムであることを考えると、ファイルが 1 つだけの非常に単純な FUSE ファイルシステムを実装できます。カーネルはそこからそれを処理できます。

主な問題は、カーネルがすべての書き込みをフラッシュするとは限らないことです。ただし、すべての未処理の書き込みをフラッシュするmsync()呼び出しがありますが、テスト対象のシステムはそれを呼び出しません。ただし、次を使用してファイル記述子を開くことで回避できると思いますO_DIRECT | O_DSYNC

于 2016-07-20T11:02:05.310 に答える