From 408aaf687b75176825ad901ef0b42f72db55063a Mon Sep 17 00:00:00 2001 From: Pedro Henrique Penna Date: Sun, 11 Aug 2024 08:46:20 -0700 Subject: [PATCH] [ev] E: Fail Support for Event Manager Init --- src/event/manager.rs | 4 +++- src/event/mod.rs | 5 +++-- src/kcall/handler.rs | 4 +++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/event/manager.rs b/src/event/manager.rs index 269d1d2e..e0bb5353 100644 --- a/src/event/manager.rs +++ b/src/event/manager.rs @@ -732,7 +732,7 @@ fn exception_handler(info: &ExceptionInformation, _ctx: &ContextInformation) { } } -pub fn init(hal: &mut Hal) { +pub fn init(hal: &mut Hal) -> Result<(), Error> { let mut pending_interrupts: [LinkedList; usize::BITS as usize] = unsafe { mem::zeroed() }; for list in pending_interrupts.iter_mut() { @@ -804,4 +804,6 @@ pub fn init(hal: &mut Hal) { Err(e) => warn!("failed to register interrupt handler: {:?}", e), } } + + Ok(()) } diff --git a/src/event/mod.rs b/src/event/mod.rs index 8e7f7fbb..ae6f3019 100644 --- a/src/event/mod.rs +++ b/src/event/mod.rs @@ -18,6 +18,7 @@ use crate::hal::Hal; // Exports //================================================================================================== +use ::error::Error; pub use kcall::*; pub use manager::{ EventManager, @@ -28,6 +29,6 @@ pub use manager::{ // Standalone Functions //================================================================================================== -pub fn init(hal: &mut Hal) { - manager::init(hal); +pub fn init(hal: &mut Hal) -> Result<(), Error> { + manager::init(hal) } diff --git a/src/kcall/handler.rs b/src/kcall/handler.rs index 118929b3..b0237f5e 100644 --- a/src/kcall/handler.rs +++ b/src/kcall/handler.rs @@ -37,7 +37,9 @@ use ::sys::{ /// Kernel call handler. /// pub fn kcall_handler(mut hal: Hal, mut mm: VirtMemoryManager, mut pm: ProcessManager) { - event::init(&mut hal); + if let Err(e) = event::init(&mut hal) { + panic!("failed to initialize event manager: {:?}", e); + } loop { // Read kernel call arguments from the scoreboard.