* Andy Lutomirski <luto@xxxxxxxxxx> wrote: > What I'd really like to see is an entirely different API. Maybe: > > typedef struct { > opaque, but probably includes: > int depth; /* 0 is root */ > void *table; > } ptbl_ptr; > > ptbl_ptr root_table = mm_root_ptbl(mm); > > set_ptbl_entry(root_table, pa, prot); > > /* walk tables */ > ptbl_ptr pt = ...; > ptentry_ptr entry; > while (ptbl_has_children(pt)) { > pt = pt_next(pt, addr); > } > entry = pt_entry_at(pt, addr); > /* do something with entry */ > > etc. > > Now someone can add a sixth level without changing every code path in > the kernel that touches page tables. Iteration based page table lookups would be neat. A sixth level is unavoidable on x86-64 I think - we'll get there in a decade or so? The sixth level will also use up the last ~8 bits of virtual memory available on 64-bit. Thanks, Ingo