ARM Linux里面的中断向量表,是不是就是Linux系统的驱动部分,将ARM的中断向量,指向了Linux指定的中断处理函数
不是,Linux系统中中断向量表通过层层路径已经指向了一个总的中断处理函数(arm中的gic_handle_irq()),这是固定了的,这个固定的中断处理函数会在响应中断时根据中断号和设备号找到驱动中注册的中断处理函数。
具体过程是这样的,中断向量表__vector_start中定义的_vector_irq会找到irq_handler,且irq_handler是个汇编宏定义,会指向实质的中断处理函数handle_arch_irq而在系统初始化中对中断初始化会将全局handle_arch_irq指向一个C语言写的总的中断处理函数gic_handle_irq()过后gic_handle_irq()会根据驱动中注册中断时传进来的中断号,找到注册的中断处理函数进行相应的处理。