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