init.rs 526 B

12345678910111213141516171819202122
  1. use system_error::SystemError;
  2. use crate::arch::CurrentIrqArch;
  3. use super::{
  4. dummychip::dummy_chip_init, irqdesc::early_irq_init, irqdomain::irq_domain_manager_init,
  5. InterruptArch,
  6. };
  7. /// 初始化中断
  8. #[inline(never)]
  9. pub fn irq_init() -> Result<(), SystemError> {
  10. // todo: 通用初始化
  11. dummy_chip_init();
  12. irq_domain_manager_init();
  13. early_irq_init().expect("early_irq_init failed");
  14. // 初始化架构相关的中断
  15. unsafe { CurrentIrqArch::arch_irq_init() }?;
  16. return Ok(());
  17. }