The current API of RecursivePageTable, OffsetPageTable, and MappedPageTable encourages the creation of &mut PageTable references to the active page table hierarchy. This might be problematic because the page tables are also accessed by the hardware at the same time. The hardware might even modify the page table, e.g. set the accessed or dirty flags.
To avoid any semantic issues, it would be a good idea to also provide methods based on raw *mut PageTable pointers. We should also update the implementations to never create &mut references internally either. We might even want to use volatile operations...
See also phil-opp/blog_os#1202
The current API of
RecursivePageTable,OffsetPageTable, andMappedPageTableencourages the creation of&mut PageTablereferences to the active page table hierarchy. This might be problematic because the page tables are also accessed by the hardware at the same time. The hardware might even modify the page table, e.g. set theaccessedordirtyflags.To avoid any semantic issues, it would be a good idea to also provide methods based on raw
*mut PageTablepointers. We should also update the implementations to never create&mutreferences internally either. We might even want to use volatile operations...See also phil-opp/blog_os#1202