From 32e21b3468f8459ec848f58908a558a56a124cc1 Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Mon, 20 May 2024 16:16:03 +0800 Subject: [PATCH] chore: entry: store `N_CPUS` --- kernel/src/entry.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/kernel/src/entry.rs b/kernel/src/entry.rs index f414475..d98a5d6 100644 --- a/kernel/src/entry.rs +++ b/kernel/src/entry.rs @@ -4,16 +4,21 @@ use crate::plat::timer::{Timer, TimerOps}; use crate::plat::trap::{Trap, TrapOps}; use crate::scheduler::SCHEDULER; use core::cell::Cell; +use core::sync::atomic::{AtomicUsize, Ordering}; use fdt::Fdt; use log::{debug, error, info, warn}; #[thread_local] pub static HART_ID: Cell = Cell::new(0); +pub static N_CPUS: AtomicUsize = AtomicUsize::new(1); + pub fn rust_main() -> ! { - let fdt_addr = crate::arch::FDT.load(core::sync::atomic::Ordering::Acquire); + let fdt_addr = crate::arch::FDT.load(Ordering::Acquire); let fdt = unsafe { Fdt::from_ptr(fdt_addr).unwrap() }; + N_CPUS.store(fdt.cpus().count(), Ordering::Release); + setup_console(&fdt); info!("Kernel Started");