中断处理例程的返回值

中断处理例程应当返回一个值指示是否真正处理了一个中断。如果处理例程发现设备确实需要处理, 应当返回 IRQ_HANDLED; 否则返回值 IRQ_NONE。以下宏可产生返回值:

IRQ_RETVAL( handled) /*若要处理中断,handled应是非零*/

有位网友在处理返回值是按惯例return 0;,导致了oops。吸取经验教训,我们应特别注意这种返回值,以下是有关中断处理例程的返回值的内核定义(#i nclude <linux/irqreturn.h> ),看了就知道 导致oops的原因了,以后应多多注意:

typedef int irqreturn_t;
# define IRQ_NONE    ( 0)
# define IRQ_HANDLED    ( 1)
# define IRQ_RETVAL( x)     ( ( x) ! = 0)

你可能感兴趣的:(中断处理例程的返回值)