Skip to content

Commit 0f4dd1f

Browse files
committed
Test to ensure MemoryRegions are always frame aligned
1 parent 0c21032 commit 0f4dd1f

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ jobs:
6969
- name: Run api tests
7070
run: cargo test -p bootloader_api
7171
- name: Run bootloader common tests
72+
if: runner.os == 'Linux'
7273
run: cargo test -p bootloader-x86_64-common
7374
- name: Run integration tests
7475
run: cargo test -- --test-threads 1

common/src/legacy_memory_region.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,33 @@ mod tests {
389389
}]
390390
}
391391

392+
#[test]
393+
fn test_all_regions_frame_alligned() {
394+
let regions = create_single_test_region();
395+
let mut allocator = LegacyFrameAllocator::new(regions.into_iter());
396+
// allocate at least 1 frame
397+
allocator.allocate_frame();
398+
399+
let mut regions = [MaybeUninit::uninit(); 10];
400+
let kernel_slice_start = PhysAddr::new(0x50000);
401+
let kernel_slice_len = 0x0500;
402+
let ramdisk_slice_start = None;
403+
let ramdisk_slice_len = 0;
404+
405+
let kernel_regions = allocator.construct_memory_map(
406+
&mut regions,
407+
kernel_slice_start,
408+
kernel_slice_len,
409+
ramdisk_slice_start,
410+
ramdisk_slice_len,
411+
);
412+
413+
for region in kernel_regions.iter() {
414+
assert!(region.start % 0x1000 == 0);
415+
assert!(region.end % 0x1000 == 0);
416+
}
417+
}
418+
392419
#[test]
393420
fn test_kernel_and_ram_in_same_region() {
394421
let regions = create_single_test_region();

0 commit comments

Comments
 (0)