Skip to main content

irq_handler

Attribute Macro irq_handler 

Source
#[irq_handler]
Expand description

中断处理器属性宏

将用户函数转换为标准中断处理器,自动生成正确的函数签名。

§要求

函数必须:

  • 不能是 constasync 或有泛型参数
  • 必须有且仅有一个参数,类型为 someboot::irq::IrqId
  • 无返回类型
  • 不应有显式的可见性声明(宏自动设为 pub

§示例

#[irq_handler]
fn my_irq_handler(irq: IrqId) {
    // 处理中断
    sparreal_kernel::os::irq::handle_irq(irq);
}

§生成代码

宏展开为:

#[unsafe(no_mangle)]
pub extern "Rust" fn _someboot_handle_irq(irq: someboot::irq::IrqId) {
    // 你的代码
}

§平台集成

该函数由 HAL 的 trap 处理代码自动调用:

  • AArch64: crates/somehal/src/arch/aarch64/trap.rs
  • LoongArch64: crates/somehal/src/arch/loongarch64/trap.rs

中断号随后通过 sparreal_kernel::os::irq::handle_irq() 分发到注册的处理函数。

§注意

  • 每个平台只能有一个全局中断入口(符号名固定为 _someboot_handle_irq
  • 参数名会被保留(如 irqhwirq 等),不会被强制修改