关于中断的代码,语法基础问题,下面这个函数return了个啥东西

在sys_irq_register函数下有一段代码是这样的

metal_interrupt_register_handler(plic, PLIC_EXT_IRQ(id), sys_irq_handler, (void*)irq_priv);

其中参数plic和irq_priv是结构体,PLIC_EXT_IRQ(id)是宏定义替换
sys_irq_handler是一个函数,定义为

static void sys_irq_handler(int id, void *priv)

关于metal_interrupt_register_handler函数的定义如下

__inline__ int metal_interrupt_register_handler(struct metal_interrupt *controller,
                                          int id,
                                          metal_interrupt_handler_t handler,
                                          void *priv_data)
{
    return controller->vtable->interrupt_register(controller, id, handler, priv_data);
}

其中controller->vtable->interrupt_register是结构体内的一个函数指针,定义如下

int (*interrupt_register)(struct metal_interrupt *controller, int id, metal_interrupt_handler_t isr, void *priv_data);

请教下metal_interrupt_register_handler这个函数到底干了些啥事。
gui谢da lao

看名字像注册中断函数
ARM代码相对于51机来说在中断处理上又封装了一层,51用interrupt x 关键字来指定中断处理,ARM用函数指针来指定中断处理函数