Linux에서 연속적으로 캐시된 페이지를 할당할 때 예외 페이지를 처리하는 방법

Linux에서 연속적으로 캐시된 페이지를 할당할 때 예외 페이지를 처리하는 방법

연속적인 캐시 페이지를 할당하는 커널 모듈 코드가 있습니다. 나는 radix_tree_for_each_contig()를 사용합니다. 다음은 코드의 일부입니다.

radix_tree_for_each_contig(slot, tree_root, iter, index) {
struct page *page;
page = radix_tree_deref_slot(slot);
if (unlikely(!page)) 
     continue;
if (radix_tree_exceptional_entry(page))

위 코드에서는 radix_tree_deref_slot() 다음에 Exceptional_entry를 확인합니다. 최신 커널(4.x)에서 radix_tree_Exceptional_entry()는 0이 아닌 값을 반환하는 반면, 이전 커널 3.13.x의 동일한 코드는 0을 반환합니다.

그래서 내 질문은 캐시에 연속 페이지를 할당할 때 Exceptional_entry를 처리하는 방법입니다.

관련 정보