Skip to content

Commit d589851

Browse files
committed
fix warnings
1 parent 5ba4dca commit d589851

File tree

3 files changed

+13
-130
lines changed

3 files changed

+13
-130
lines changed

crates/arch-x86_64/src/vmm.rs

Lines changed: 10 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
//! User and kernel stack spaces are split into stacks with the size of [`VIRT_STACK_SIZE`].
2323
2424
use alloc::collections::BTreeMap;
25-
use core::{cmp::Ordering, ops::Range};
25+
use core::ops::Range;
2626

2727
use hyperion_log::*;
2828
use hyperion_mem::{
29-
from_higher_half, is_higher_half,
30-
pmm::{self, PageFrame},
29+
from_higher_half,
30+
pmm::{self},
3131
to_higher_half,
3232
vmm::{Handled, NotHandled, PageFaultResult, PageMapImpl, Privilege},
3333
};
@@ -36,12 +36,9 @@ use x86_64::{
3636
instructions::tlb,
3737
registers::control::{Cr3, Cr3Flags},
3838
structures::paging::{
39-
mapper::{
40-
MapToError, MappedFrame, MapperFlush, MapperFlushAll, TranslateResult, UnmapError,
41-
},
39+
mapper::{MapToError, MappedFrame, MapperFlush, MapperFlushAll},
4240
page_table::{FrameError, PageTableEntry},
43-
MappedPageTable, Mapper, OffsetPageTable, Page, PageSize, PageTable, PageTableFlags,
44-
PhysFrame, Size1GiB, Size2MiB, Size4KiB, Translate,
41+
Page, PageSize, PageTable, PageTableFlags, PhysFrame, Size1GiB, Size2MiB, Size4KiB,
4542
},
4643
PhysAddr, VirtAddr,
4744
};
@@ -141,7 +138,7 @@ fn page_fault_2mib(entry: &mut PageTableEntry, addr: VirtAddr) -> PageFaultResul
141138
}
142139

143140
fn page_fault_4kib(entry: &mut PageTableEntry, addr: VirtAddr) -> PageFaultResult {
144-
let mut frame;
141+
let frame;
145142
let mut flags = entry.flags();
146143

147144
if flags.contains(COW) {
@@ -172,10 +169,11 @@ fn alloc_table() -> PhysFrame {
172169
PhysFrame::<Size4KiB>::from_start_address(frame.physical_addr()).unwrap()
173170
}
174171

175-
fn free_table(f: PhysFrame) {
172+
// FIXME: vmm dealloc
173+
/* fn free_table(f: PhysFrame) {
176174
let frame = unsafe { PageFrame::new(f.start_address(), 1) };
177175
pmm::PFA.free(frame)
178-
}
176+
} */
179177

180178
//
181179

@@ -1033,7 +1031,7 @@ impl LockedPageMap {
10331031
};
10341032

10351033
let l1e = &l1[v_addr.p1_index()];
1036-
let phys = match l1e.frame() {
1034+
match l1e.frame() {
10371035
Ok(p) => p,
10381036
Err(FrameError::FrameNotPresent) => return None,
10391037
Err(FrameError::HugeFrame) => unreachable!("huge page at lvl 1"),
@@ -1311,108 +1309,3 @@ pub enum TryMapError<T: PageSize> {
13111309
AlreadyMapped,
13121310
NotMapped,
13131311
}
1314-
1315-
#[derive(Debug)]
1316-
pub enum TryUnmapError<T: PageSize> {
1317-
Overflow,
1318-
NotAligned,
1319-
MapToError(MapToError<T>),
1320-
WrongSize,
1321-
AlreadyMapped,
1322-
}
1323-
1324-
fn try_map_sized<T>(
1325-
table: &mut OffsetPageTable,
1326-
start: VirtAddr,
1327-
end: VirtAddr,
1328-
p_addr: PhysAddr,
1329-
flags: PageTableFlags,
1330-
) -> Result<(), TryMapError<T>>
1331-
where
1332-
T: PageSize,
1333-
for<'a> OffsetPageTable<'a>: Mapper<T>,
1334-
{
1335-
let Some(mapping_end) = start.as_u64().checked_add(T::SIZE - 1) else {
1336-
return Err(TryMapError::Overflow);
1337-
};
1338-
1339-
if mapping_end > end.as_u64() {
1340-
return Err(TryMapError::Overflow);
1341-
}
1342-
1343-
if !start.is_aligned(T::SIZE) || !p_addr.is_aligned(T::SIZE) {
1344-
return Err(TryMapError::NotAligned);
1345-
}
1346-
1347-
let page = Page::<T>::containing_address(start);
1348-
let frame = PhysFrame::<T>::containing_address(p_addr);
1349-
1350-
let result = unsafe {
1351-
table.map_to_with_table_flags(
1352-
page,
1353-
frame,
1354-
flags,
1355-
(flags & (PageTableFlags::PRESENT | PageTableFlags::USER_ACCESSIBLE))
1356-
| PageTableFlags::WRITABLE,
1357-
&mut Pfa,
1358-
)
1359-
};
1360-
1361-
if let Err(MapToError::PageAlreadyMapped(old_frame)) = result {
1362-
if old_frame == frame {
1363-
return Ok(());
1364-
}
1365-
}
1366-
1367-
result.map_err(|err| TryMapError::MapToError(err))?.flush();
1368-
1369-
/* hyperion_log::debug!("mapped 1GiB at 0x{:016x}", start);
1370-
crash_after_nth(10); */
1371-
1372-
Ok(())
1373-
}
1374-
1375-
fn try_unmap_sized<T>(
1376-
table: &mut OffsetPageTable,
1377-
start: VirtAddr,
1378-
_end: VirtAddr,
1379-
) -> Result<(), TryMapError<T>>
1380-
where
1381-
T: PageSize,
1382-
for<'a> OffsetPageTable<'a>: Mapper<T>,
1383-
{
1384-
let Some(_mapping_end) = start.as_u64().checked_add(T::SIZE - 1) else {
1385-
return Err(TryMapError::Overflow);
1386-
};
1387-
1388-
/* if mapping_end > end.as_u64() {
1389-
return Err(TryMapSizedError::Overflow);
1390-
} */
1391-
1392-
if !start.is_aligned(T::SIZE) {
1393-
return Err(TryMapError::NotAligned);
1394-
}
1395-
1396-
let page = Page::<T>::containing_address(start);
1397-
1398-
match table.unmap(page) {
1399-
Ok((_, ok)) => {
1400-
ok.flush();
1401-
Ok(())
1402-
}
1403-
Err(UnmapError::PageNotMapped) => {
1404-
// hyperion_log::debug!("already not mapped");
1405-
Ok(())
1406-
}
1407-
Err(UnmapError::ParentEntryHugePage) => Err(TryMapError::WrongSize),
1408-
Err(_err) => panic!("{_err:?}"),
1409-
}
1410-
}
1411-
1412-
fn v_addr_checked_add(addr: VirtAddr, rhs: u64) -> Option<VirtAddr> {
1413-
VirtAddr::try_new(addr.as_u64().checked_add(rhs)?).ok()
1414-
}
1415-
1416-
fn p_addr_checked_add(addr: PhysAddr, rhs: u64) -> Option<PhysAddr> {
1417-
PhysAddr::try_new(addr.as_u64().checked_add(rhs)?).ok()
1418-
}

crates/loader/src/lib.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use elf::{
2121
use elf_wrap::*;
2222
use hyperion_arch::{syscall, vmm::PageMap};
2323
use hyperion_log::*;
24-
use hyperion_mem::{is_higher_half, to_higher_half, vmm::PageMapImpl};
24+
use hyperion_mem::{is_higher_half, vmm::PageMapImpl};
2525
use hyperion_scheduler::{process, task, task::Process};
2626
use x86_64::{structures::paging::PageTableFlags, VirtAddr};
2727

@@ -111,7 +111,6 @@ impl<'a> Loader<'a> {
111111
let v_addr = VirtAddr::new(segment.p_vaddr)
112112
.align_down(align)
113113
.align_down(0x1000u64);
114-
let align_down_offs = segment.p_vaddr - v_addr.as_u64();
115114
let v_end = (VirtAddr::new(segment.p_vaddr) + segment.p_memsz).align_up(0x1000u64);
116115
let v_size = v_end - v_addr;
117116

@@ -152,9 +151,8 @@ impl<'a> Loader<'a> {
152151
unsafe { slice::from_raw_parts_mut(v_addr.as_mut_ptr(), v_size as usize) };
153152

154153
// fill segment_alloc with segment_data and pad the end with null bytes
155-
let (segment_alloc_align_pad, segment_alloc_virtual) =
156-
segment_alloc.split_at_mut(align_down_offs as usize);
157-
let (segment_alloc_data, segment_alloc_zeros) =
154+
let (_, segment_alloc_virtual) = segment_alloc.split_at_mut(align_down_offs as usize);
155+
let (segment_alloc_data, _) =
158156
segment_alloc_virtual.split_at_mut(segment_alloc_virtual.len().min(segment_data.len()));
159157

160158
// the rust compiler will convert these to u64 or even vectors
@@ -203,9 +201,7 @@ impl<'a> Loader<'a> {
203201
let v_addr = VirtAddr::new(segment.p_vaddr)
204202
.align_down(align)
205203
.align_down(0x1000u64);
206-
let align_down_offs = segment.p_vaddr - v_addr.as_u64();
207204
let v_end = (VirtAddr::new(segment.p_vaddr) + segment.p_memsz).align_up(0x1000u64);
208-
let v_size = v_end - v_addr;
209205
let flags = Self::flags(segment.p_flags);
210206

211207
// println!("remap as {flags:?}");

crates/scheduler/src/task.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -298,12 +298,6 @@ impl Process {
298298
}
299299

300300
pub fn free(&self, n_pages: usize, ptr: VirtAddr) -> Result<(), FreeErr> {
301-
let mut bitmap = self.allocs.bitmap();
302-
303-
let Some(palloc) = self.address_space.page_map.virt_to_phys(ptr) else {
304-
return Err(FreeErr::InvalidAddr);
305-
};
306-
307301
if !self
308302
.address_space
309303
.page_map

0 commit comments

Comments
 (0)