Skip to content

Commit a1f61b1

Browse files
authored
Merge pull request #2485 from hermit-os/rm-BLANK
refactor(arch/paging): remove `PageTableEntryFlags::BLANK`
2 parents 56d863e + fd107e9 commit a1f61b1

2 files changed

Lines changed: 10 additions & 18 deletions

File tree

src/arch/aarch64/mm/paging.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,6 @@ bitflags! {
8080
}
8181

8282
impl PageTableEntryFlags {
83-
/// An empty set of flags for unused/zeroed table entries.
84-
/// Needed as long as empty() is no const function.
85-
const BLANK: PageTableEntryFlags = PageTableEntryFlags::empty();
86-
8783
pub fn present(&mut self) -> &mut Self {
8884
self.insert(PageTableEntryFlags::PRESENT);
8985
self
@@ -201,7 +197,7 @@ pub enum LargePageSize {}
201197
impl PageSize for LargePageSize {
202198
const SIZE: u64 = 2 * 1024 * 1024;
203199
const MAP_LEVEL: usize = 2;
204-
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::BLANK;
200+
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::empty();
205201
}
206202

207203
/// A 1 GiB page mapped in the L1Table.
@@ -210,7 +206,7 @@ pub enum HugePageSize {}
210206
impl PageSize for HugePageSize {
211207
const SIZE: u64 = 1024 * 1024 * 1024;
212208
const MAP_LEVEL: usize = 1;
213-
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::BLANK;
209+
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::empty();
214210
}
215211

216212
/// A memory page of the size given by S.
@@ -412,7 +408,7 @@ impl<L: PageTableLevel> PageTableMethods for PageTable<L> {
412408
page.flush_from_tlb();
413409
}
414410

415-
if flags == PageTableEntryFlags::BLANK {
411+
if flags == PageTableEntryFlags::empty() {
416412
// We already unmapped the page
417413
return;
418414
} else {
@@ -706,7 +702,7 @@ pub fn unmap<S: PageSize>(virtual_address: VirtAddr, count: usize) {
706702

707703
let range = get_page_range::<S>(virtual_address, count);
708704
let root_pagetable = unsafe { &mut *(L0TABLE_ADDRESS.as_mut_ptr::<PageTable<L0Table>>()) };
709-
root_pagetable.map_pages(range, PhysAddr::zero(), PageTableEntryFlags::BLANK);
705+
root_pagetable.map_pages(range, PhysAddr::zero(), PageTableEntryFlags::empty());
710706
}
711707

712708
pub unsafe fn init() {

src/arch/riscv64/mm/paging.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,6 @@ bitflags! {
6161

6262
#[allow(dead_code)]
6363
impl PageTableEntryFlags {
64-
/// An empty set of flags for unused/zeroed table entries.
65-
/// Needed as long as empty() is no const function.
66-
const BLANK: PageTableEntryFlags = PageTableEntryFlags::empty();
67-
6864
pub fn device(&mut self) -> &mut Self {
6965
self
7066
}
@@ -183,7 +179,7 @@ pub enum BasePageSize {}
183179
impl PageSize for BasePageSize {
184180
const SIZE: u64 = 4096;
185181
const MAP_LEVEL: usize = 0;
186-
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::BLANK;
182+
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::empty();
187183
}
188184

189185
/// A 2 MiB page mapped in the L2Table.
@@ -192,7 +188,7 @@ pub enum LargePageSize {}
192188
impl PageSize for LargePageSize {
193189
const SIZE: u64 = 2 * 1024 * 1024;
194190
const MAP_LEVEL: usize = 1;
195-
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::BLANK;
191+
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::empty();
196192
}
197193

198194
/// A 1 GiB page mapped in the L1Table.
@@ -201,7 +197,7 @@ pub enum HugePageSize {}
201197
impl PageSize for HugePageSize {
202198
const SIZE: u64 = 1024 * 1024 * 1024;
203199
const MAP_LEVEL: usize = 2;
204-
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::BLANK;
200+
const MAP_EXTRA_FLAG: PageTableEntryFlags = PageTableEntryFlags::empty();
205201
}
206202

207203
/// A memory page of the size given by S.
@@ -382,7 +378,7 @@ impl<L: PageTableLevel> PageTableMethods for PageTable<L> {
382378
let index = page.table_index::<L>();
383379
let flush = self.entries[index].is_present();
384380

385-
if physical_address.is_null() && flags == PageTableEntryFlags::BLANK {
381+
if physical_address.is_null() && flags == PageTableEntryFlags::empty() {
386382
// Clear PTE
387383
self.entries[index].unset();
388384
} else {
@@ -440,7 +436,7 @@ where
440436
let frame_layout = PageLayout::from_size(BasePageSize::SIZE as usize).unwrap();
441437
let frame_range = FrameAlloc::allocate(frame_layout).unwrap();
442438
let new_entry = PhysAddr::from(frame_range.start());
443-
self.entries[index].set(new_entry, PageTableEntryFlags::BLANK);
439+
self.entries[index].set(new_entry, PageTableEntryFlags::empty());
444440

445441
// trace!("new_entry {:#X}", new_entry);
446442

@@ -630,7 +626,7 @@ pub fn unmap<S: PageSize>(virtual_address: VirtAddr, count: usize) {
630626
}; */
631627
ROOT_PAGETABLE
632628
.lock()
633-
.map_pages(range, PhysAddr::zero(), PageTableEntryFlags::BLANK);
629+
.map_pages(range, PhysAddr::zero(), PageTableEntryFlags::empty());
634630
}
635631

636632
pub fn identity_map<S: PageSize>(phys_addr: PhysAddr) {

0 commit comments

Comments
 (0)