연속적인 캐시 페이지를 할당하는 커널 모듈 코드가 있습니다. 나는 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를 처리하는 방법입니다.