rust-osdev / rust-osdev/x86_64
Mutable references in page table implementation?
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 940
- Forks
- 157
- Avg merge
- 1d 10h
- Merged PRs (30d)
- 3
Description
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...
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the APIs and implementations of RecursivePageTable, OffsetPageTable, and MappedPageTable, then read the linked blog_os issue for context. Define the raw-pointer and volatile-access requirements, update all three implementations to avoid internal mutable references, and verify that the existing behavior remains intact.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100