Skip to content

Commit 602a7a5

Browse files
committed
Remove From<PhysFrameRange> implementations for x86_64 FrameRange
1 parent 31a8d24 commit 602a7a5

File tree

3 files changed

+24
-32
lines changed

3 files changed

+24
-32
lines changed

src/bootinfo/mod.rs

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -42,26 +42,3 @@ impl BootInfo {
4242
extern "C" {
4343
fn _improper_ctypes_check(_boot_info: BootInfo);
4444
}
45-
46-
use x86_64::{
47-
structures::paging::{PhysFrame, PhysFrameRange},
48-
PhysAddr,
49-
};
50-
51-
impl From<FrameRange> for PhysFrameRange {
52-
fn from(range: FrameRange) -> Self {
53-
PhysFrameRange {
54-
start: PhysFrame::from_start_address(PhysAddr::new(range.start_addr())).unwrap(),
55-
end: PhysFrame::from_start_address(PhysAddr::new(range.end_addr())).unwrap(),
56-
}
57-
}
58-
}
59-
60-
impl From<PhysFrameRange> for FrameRange {
61-
fn from(range: PhysFrameRange) -> Self {
62-
FrameRange::new(
63-
range.start.start_address().as_u64(),
64-
range.end.start_address().as_u64(),
65-
)
66-
}
67-
}

src/frame_allocator.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use bootloader::bootinfo::{MemoryMap, MemoryRegion, MemoryRegionType};
22
use x86_64::structures::paging::{PhysFrame, PhysFrameRange};
3+
use super::{frame_range, phys_frame_range};
34

45
pub(crate) struct FrameAllocator<'a> {
56
pub memory_map: &'a mut MemoryMap,
@@ -16,7 +17,7 @@ impl<'a> FrameAllocator<'a> {
1617
&& next.region_type == MemoryRegionType::Usable
1718
&& !next.range.is_empty()
1819
{
19-
let frame = PhysFrameRange::from(region.range).end;
20+
let frame = phys_frame_range(region.range).end;
2021
region.range.end_frame_number += 1;
2122
iter.next().unwrap().range.start_frame_number += 1;
2223
return Some(frame);
@@ -37,7 +38,7 @@ impl<'a> FrameAllocator<'a> {
3738
continue;
3839
}
3940

40-
let frame = PhysFrameRange::from(region.range).start;
41+
let frame = phys_frame_range(region.range).start;
4142
region.range.start_frame_number += 1;
4243
return Some((frame, PhysFrame::range(frame, frame + 1)));
4344
}
@@ -53,7 +54,7 @@ impl<'a> FrameAllocator<'a> {
5354

5455
if let Some((frame, range)) = result {
5556
self.memory_map.add_region(MemoryRegion {
56-
range: range.into(),
57+
range: frame_range(range),
5758
region_type,
5859
});
5960
Some(frame)

src/main.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
#![no_std]
99
#![no_main]
1010

11-
use bootloader::bootinfo::BootInfo;
11+
use bootloader::bootinfo::{BootInfo, FrameRange};
1212
use core::panic::PanicInfo;
1313
use core::{mem, slice};
1414
use fixedvec::alloc_stack;
1515
use usize_conversions::usize_from;
1616
use x86_64::structures::paging::{Mapper, RecursivePageTable};
17-
use x86_64::structures::paging::{Page, PageTableFlags, PhysFrame, Size2MiB};
17+
use x86_64::structures::paging::{Page, PageTableFlags, PhysFrame, PhysFrameRange, Size2MiB};
1818
use x86_64::ux::u9;
1919
use x86_64::{PhysAddr, VirtAddr};
2020

@@ -157,31 +157,31 @@ fn load_elf(
157157
{
158158
let zero_frame: PhysFrame = PhysFrame::from_start_address(PhysAddr::new(0)).unwrap();
159159
frame_allocator.mark_allocated_region(MemoryRegion {
160-
range: PhysFrame::range(zero_frame, zero_frame + 1).into(),
160+
range: frame_range(PhysFrame::range(zero_frame, zero_frame + 1)),
161161
region_type: MemoryRegionType::FrameZero,
162162
});
163163
let bootloader_start_frame = PhysFrame::containing_address(bootloader_start);
164164
let bootloader_end_frame = PhysFrame::containing_address(bootloader_end - 1u64);
165165
let bootloader_memory_area =
166166
PhysFrame::range(bootloader_start_frame, bootloader_end_frame + 1);
167167
frame_allocator.mark_allocated_region(MemoryRegion {
168-
range: bootloader_memory_area.into(),
168+
range: frame_range(bootloader_memory_area),
169169
region_type: MemoryRegionType::Bootloader,
170170
});
171171
let kernel_start_frame = PhysFrame::containing_address(kernel_start.phys());
172172
let kernel_end_frame =
173173
PhysFrame::containing_address(kernel_start.phys() + kernel_size - 1u64);
174174
let kernel_memory_area = PhysFrame::range(kernel_start_frame, kernel_end_frame + 1);
175175
frame_allocator.mark_allocated_region(MemoryRegion {
176-
range: kernel_memory_area.into(),
176+
range: frame_range(kernel_memory_area),
177177
region_type: MemoryRegionType::Kernel,
178178
});
179179
let page_table_start_frame = PhysFrame::containing_address(page_table_start);
180180
let page_table_end_frame = PhysFrame::containing_address(page_table_end - 1u64);
181181
let page_table_memory_area =
182182
PhysFrame::range(page_table_start_frame, page_table_end_frame + 1);
183183
frame_allocator.mark_allocated_region(MemoryRegion {
184-
range: page_table_memory_area.into(),
184+
range: frame_range(page_table_memory_area),
185185
region_type: MemoryRegionType::PageTable,
186186
});
187187
}
@@ -282,3 +282,17 @@ pub extern "C" fn eh_personality() {
282282
pub extern "C" fn _Unwind_Resume() {
283283
loop {}
284284
}
285+
286+
fn phys_frame_range(range: FrameRange) -> PhysFrameRange {
287+
PhysFrameRange {
288+
start: PhysFrame::from_start_address(PhysAddr::new(range.start_addr())).unwrap(),
289+
end: PhysFrame::from_start_address(PhysAddr::new(range.end_addr())).unwrap(),
290+
}
291+
}
292+
293+
fn frame_range(range: PhysFrameRange) -> FrameRange {
294+
FrameRange::new(
295+
range.start.start_address().as_u64(),
296+
range.end.start_address().as_u64(),
297+
)
298+
}

0 commit comments

Comments
 (0)