2016-07-21 11 views
0

Android 5.1.1のカーネル3.4でページキャッシュ内のダーティページを追跡しようとしています。私のデバイスは、プロセッサQualcomm Snapdragon S4 Pro APQ8064搭載のNexus 7 2013です。Linuxカーネルでmemcpy()が呼び出されたときはどうすれば追跡できますか?

私はプロセスが(1)そのバッファからページキャッシュに書き込むことができる、または(2)Mmapを使ってページキャッシュをその仮想アドレス空間に直接マッピングできることを知っています。 (1)では、一部の関数はgeneric_perform_writeのように呼び出されます。しかし、(2)では、プロセスはmemcpy()を使ってページキャッシュに書き込みますか?

さらに、カーネルソースコードには "memcpy"という定義がたくさんありますが、これは本当に混乱しています。どのようにプロセスがバッファを使用するのではなく、Mmapを使ってページキャッシュに書き込むときを追跡することができます。カーネルソースコードで定義されているmemcpyをどのように分類できますか?

もう1つ質問がありますが、書き戻し機能を調べると、ディスクに書き戻されたファイルが見つかりましたが、iノード番号は0になっています。私も実際にそのファイルと混同しています。私はinode番号が1から始まるはずだと思います。 ありがとうございました。

答えて

0

最も良い方法はプロファイリングであり、memcpyは完全にアーキテクチャ固有のものです。 あなたの問題には、mm/mmap.c -----> mmap_pgoff APIをチェックすることができます。

+0

ありがとうございます。しかし、私は最終的に "iov_iter_copy_from_user_atomic"でコピーを行うべきであることを発見しました。しかし、私はまだinode番号が0になってしまうのはなぜか混乱しています。 –

関連する問題