Inline a bunch of functions in KernelMapper

This commit is contained in:
bjorn3
2025-10-26 18:53:05 +01:00
committed by Jeremy Soller
parent 85b5487b5b
commit e101629377
+7 -20
View File
@@ -1,4 +1,3 @@
use crate::cpu_set::LogicalCpuId;
use core::sync::{
atomic,
atomic::{AtomicU32, AtomicUsize, Ordering},
@@ -23,7 +22,11 @@ pub struct KernelMapper {
ro: bool,
}
impl KernelMapper {
fn lock_inner(current_processor: LogicalCpuId) -> bool {
pub fn lock() -> Self {
let mapper =
unsafe { PageMapper::current(TableKind::Kernel, crate::memory::TheFrameAllocator) };
let current_processor = crate::cpu_id();
loop {
match LOCK_OWNER.compare_exchange_weak(
NO_PROCESSOR,
@@ -42,26 +45,10 @@ impl KernelMapper {
let prev_count = LOCK_COUNT.fetch_add(1, Ordering::Relaxed);
atomic::compiler_fence(Ordering::Acquire);
prev_count > 0
}
pub unsafe fn lock_for_manual_mapper(
current_processor: LogicalCpuId,
mapper: crate::paging::PageMapper,
) -> Self {
let ro = Self::lock_inner(current_processor);
let ro = prev_count > 0;
Self { mapper, ro }
}
pub fn lock_manually(current_processor: LogicalCpuId) -> Self {
unsafe {
Self::lock_for_manual_mapper(
current_processor,
PageMapper::current(TableKind::Kernel, crate::memory::TheFrameAllocator),
)
}
}
pub fn lock() -> Self {
Self::lock_manually(crate::cpu_id())
}
pub fn get_mut(&mut self) -> Option<&mut crate::paging::PageMapper> {
if self.ro {
None