Using the modules crate::arch::x86_64::mm::{ paging, virtualmem } results in unexpected behavior, assuming I understand the intentions of the code correctly.
What I expect:
After a call to paging::unmap, or at the very least virtualmem::deallocate, I'll expect paging::get_page_table_entry::<BasePageSize> to return None.
Actual behavior:
After each of the above calls, paging::get_page_table_entry::<BasePageSize> returns Some(0) for the first page. If page count > 1, following pages will be mapped to a multiple of BasePageSize::SIZE.
To reproduce the issue and making sure, it is not a misunderstanding on my part, here is an example function I put into main.rs and call from main.rs:main (after initialization of course), producing the output shown below:
Using the modules
crate::arch::x86_64::mm::{ paging, virtualmem }
results in unexpected behavior, assuming I understand the intentions of the code correctly.What I expect:
After a call to
paging::unmap
, or at the very leastvirtualmem::deallocate
, I'll expectpaging::get_page_table_entry::<BasePageSize>
to returnNone
.Actual behavior:
After each of the above calls,
paging::get_page_table_entry::<BasePageSize>
returnsSome(0)
for the first page. If page count > 1, following pages will be mapped to a multiple ofBasePageSize::SIZE
.To reproduce the issue and making sure, it is not a misunderstanding on my part, here is an example function I put into main.rs and call from main.rs:main (after initialization of course), producing the output shown below:
Code:
Output: