@ljs @vbabka Thanks to both. Yes, I remember to read about new/concurrent/RCU friendly VMA tree at #lwn some time ago, I try fit more letters in the triangle, on the other hand R-B tree is something which students know… but showing maple can be motivation to search for more modern data structures in their future projects, I mention user-space RCU, cuckoo hashing from Knot DNS as well as others.
struct radix_tree_root page_tree; /* radix tree of all pages */
Good catch, it seems to have gone in 4.17 kernel, when it has been renamed to
struct radix_tree_root i_pages;
and it has been changed to struct xarray
in 4.20. So this is evolution.
So it should be updated to be modern.
VPFN (virtual page frame number) and physical (P)PFN is used by me to distinguish what is view and meaning of address bits before and after MMU translation. It highlights that translation cares only about page sized frames no full addresses. It seems that it is not only mine local invention - used even on WikiBooks/The_Linux_Kernel/Memory.
The goal is to provide mainly an overall picture not details to start hacking and contributions to the kernel so if it is “roughly” appropriate is important. But if some students are attracted to contribute to Linux it would be great outcome. We have more students contributing to #NuttX which is lower bar for starting. But some have contributed drivers to Linux as well.