2012-05-04 2 views
6

어디에서 주요 페이지 오류 처리기가 궁금합니다.리눅스 커널의 주요 페이지 오류 처리기

커널의 페이지 오류를 최소화하는 알고리즘을 작성했습니다. 따라서 페이지 폴트가 발생할 때마다 무언가를 기록해야합니다. 현재 페이지 폴트는 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

고마워요, 데이빗! perf_sw_event에 어떤 파일이 있습니까? grep을 시도해 보았지만 발견하지 못했습니다 ... –

+0

'kernel/perf_event.c' –

+0

정말 고마워요! 정말 끝내 준다! –