#[irq_handler]Expand description
中断处理器属性宏
将用户函数转换为标准中断处理器,自动生成正确的函数签名。
§要求
函数必须:
- 不能是
const、async或有泛型参数 - 必须有且仅有一个参数,类型为
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) - 参数名会被保留(如
irq、hwirq等),不会被强制修改