2012-05-04 23 views
6

メジャーページフォルトハンドラがどこにあるのだろうか。Linuxカーネルのメジャーページフォルトハンドラ

私は、カーネルのページフォールトを最小限にするアルゴリズムを書いています。だから私はページ違反が起こるたびに何かを記録する必要があります。私は現在、ページフォールトをarch/x86/mm/fault_32.cのdo_page_fault(...)で記録しています。

しかし、マイナーページフォールトとフォールトフォールトフォールトはどちらもdo_page_fault(...)に行きます... マイナーページフォールトが常に発生し、アルゴリズムが混乱します。

メジャーなpage_faultが発生したときにのみ記録したいと思います。だから、カーネルのハッカーは、コードをどこに置くべきか教えてください。どのファイルとどの機能。ところで

、私はカーネル2.6.24をハッキングしています

はどうもありがとうございました! アルフレッド

答えて

7

handle_mm_fault関数がページフォルトを処理します。その戻り値は一連のフラグです。 VM_FAULT_MAJORが設定されている場合は、メジャーなページ違反です。カーネルはすべてのメジャーなページフォールトに対してperf_sw_event(PERF_COUNT_SW_PAGE_FAULT_MAJ, 1, 0, ...を呼び出します。

+0

ありがとう、David! perf_sw_eventにはどのファイルがありますか?私はgrepを試してみて、それを見つけられませんでした... –

+0

'kernel/perf_event.c' –

+0

ありがとう!すごいです! –