From 4f03eff015e6db169e7925b712a696321ea01178 Mon Sep 17 00:00:00 2001 From: lcy1996 <992195697@qq.com> Date: Wed, 31 Oct 2018 11:11:06 +0800 Subject: [PATCH] Use SpinNoIrqLock to replace the spin::mutex --- kernel/src/memory.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/kernel/src/memory.rs b/kernel/src/memory.rs index 23070e9..067f3c6 100644 --- a/kernel/src/memory.rs +++ b/kernel/src/memory.rs @@ -1,13 +1,14 @@ pub use arch::paging::*; use bit_allocator::{BitAlloc, BitAlloc4K, BitAlloc64K}; use consts::MEMORY_OFFSET; -use spin::{Mutex, MutexGuard}; +//use spin::{Mutex, MutexGuard}; use super::HEAP_ALLOCATOR; use ucore_memory::{*, paging::PageTable}; use ucore_memory::cow::CowExt; pub use ucore_memory::memory_set::{MemoryArea, MemoryAttr, MemorySet as MemorySet_, Stack}; use ucore_memory::swap::*; use process::processor; +use sync::{SpinNoIrqLock, SpinNoIrq, MutexGuard}; pub type MemorySet = MemorySet_; @@ -20,28 +21,28 @@ pub type FrameAlloc = BitAlloc64K; pub type FrameAlloc = BitAlloc4K; lazy_static! { - pub static ref FRAME_ALLOCATOR: Mutex = Mutex::new(FrameAlloc::default()); + pub static ref FRAME_ALLOCATOR: SpinNoIrqLock = SpinNoIrqLock::new(FrameAlloc::default()); } lazy_static! { - static ref ACTIVE_TABLE: Mutex> = Mutex::new(unsafe { + static ref ACTIVE_TABLE: SpinNoIrqLock> = SpinNoIrqLock::new(unsafe { CowExt::new(ActivePageTable::new()) }); } /// The only way to get active page table -pub fn active_table() -> MutexGuard<'static, CowExt> { +pub fn active_table() -> MutexGuard<'static, CowExt, SpinNoIrq> { ACTIVE_TABLE.lock() } // Page table for swap in and out lazy_static!{ - static ref ACTIVE_TABLE_SWAP: Mutex> = - Mutex::new(unsafe{SwapExt::new(ActivePageTable::new(), fifo::FifoSwapManager::default(), mock_swapper::MockSwapper::default())}); + static ref ACTIVE_TABLE_SWAP: SpinNoIrqLock> = + SpinNoIrqLock::new(unsafe{SwapExt::new(ActivePageTable::new(), fifo::FifoSwapManager::default(), mock_swapper::MockSwapper::default())}); } -pub fn active_table_swap() -> MutexGuard<'static, SwapExt>{ +pub fn active_table_swap() -> MutexGuard<'static, SwapExt, SpinNoIrq>{ ACTIVE_TABLE_SWAP.lock() }