Access the console device table with IRQ disabled

This commit is contained in:
Ruihan Li 2024-04-10 11:23:46 +08:00 committed by Tate, Hongliang Tian
parent e4fd51bc6f
commit bd8be26b30

View File

@ -28,7 +28,7 @@ pub fn register_device(name: String, device: Arc<dyn AnyConsoleDevice>) {
.get() .get()
.unwrap() .unwrap()
.console_device_table .console_device_table
.lock() .lock_irq_disabled()
.insert(name, device); .insert(name, device);
} }
@ -37,13 +37,17 @@ pub fn get_device(str: &str) -> Option<Arc<dyn AnyConsoleDevice>> {
.get() .get()
.unwrap() .unwrap()
.console_device_table .console_device_table
.lock() .lock_irq_disabled()
.get(str) .get(str)
.cloned() .cloned()
} }
pub fn all_devices() -> Vec<(String, Arc<dyn AnyConsoleDevice>)> { pub fn all_devices() -> Vec<(String, Arc<dyn AnyConsoleDevice>)> {
let console_devs = COMPONENT.get().unwrap().console_device_table.lock(); let console_devs = COMPONENT
.get()
.unwrap()
.console_device_table
.lock_irq_disabled();
console_devs console_devs
.iter() .iter()
.map(|(name, device)| (name.clone(), device.clone())) .map(|(name, device)| (name.clone(), device.clone()))