Eu tenho um código de módulo do kernel que aloca páginas de cache contíguas. Eu uso radix_tree_for_each_contig (). Aqui está o snippet parcial do código.
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))
Neste código acima, eu procuro por exception_entry após radix_tree_deref_slot (). No kernel mais recente (4.x), o radix_tree_exceptional_entry () retorna diferente de zero onde o mesmo código no kernel 3.13.x mais antigo fornece zero.
Então, minha pergunta é como lidar com exception_entry ao alocar páginas contíguas no cache?