From 96842ac2fdd941462a4dda7bab73b7dbc127d36b Mon Sep 17 00:00:00 2001 From: Dh2zZ <2567769508@qq.com> Date: Sat, 13 Aug 2022 22:31:51 +0800 Subject: [PATCH] multicore mutex --- os/src/main.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/os/src/main.rs b/os/src/main.rs index 208d256..87aa700 100644 --- a/os/src/main.rs +++ b/os/src/main.rs @@ -54,7 +54,7 @@ fn clear_bss() { } } -static BOOT_CORE_READY: AtomicBool = AtomicBool::new(false); +static BOOT_CORE_READY: Lazy<Mutex<bool>> = Lazy::new(|| Mutex::new(false)); static BOOT_COUNT: Lazy<Mutex<u32>> = Lazy::new(|| Mutex::new(0)); #[no_mangle] @@ -62,7 +62,7 @@ pub fn rust_main() -> ! { save_hartid(); // è¿™å¥è¯ä¹‹å‰ä¸èƒ½åŠ ä»»ä½•å‡½æ•°è°ƒç”¨ï¼Œå¦åˆ™a0的值会被覆盖 let hartid = get_hartid(); info!("Riscv hartid {} init ", hartid); - if BOOT_CORE_READY.load(Ordering::Acquire) { + if *BOOT_CORE_READY.lock() { // 如果BOOT_COREå·²ç»å‡†å¤‡å®Œæ¯•ï¼Œåˆ™å…¶ä»–æ ¸é€šè¿‡others_mainå¯åŠ¨ã€‚å¦åˆ™è¯´æ˜Žæ˜¯å¯åŠ¨æ ¸ï¼Œç›´æŽ¥fall through others_main(hartid); } @@ -88,7 +88,7 @@ pub fn rust_main() -> ! { // info!("core_freq is 0x{:X} ", core_f); // } - BOOT_CORE_READY.store(true, Ordering::Release); + *BOOT_CORE_READY.lock() = true; // wakeup_other_cores(hartid); task::run_tasks(); -- GitLab