1)ISR为什么不能又返回值?2)ISR 为什么不能传递参数?
为了实现最快的处理异常事件, 这些入出口已经由硬件来完成了.编译器不能更改.
中断是异步发生的,就是说从软件的角度来说,不知道中断什么时候发生,而且中断发生之后,ISR的调度并不是软件来完成,而是由硬件的中断控制器来完成的(通过直接修改PC跳转到ISR的入口或是去查找中断向量表)。可以这么理解,ISR在代码流中并没有确切的“调用者”,那么谁给它准备“参数”呢?谁又接收ISR的“返回值”呢?
本帖最后由 amarant 于 2011-05-23 09:26 编辑
回复 2# rodgerluo
asm处理的是进入退出IRQ吧。。ISR是在进入IRQ后处理的
ISR不是有返回值和参数的吗?
irqreturn_t xxx_isr(int irq, void *dev_id)
return IRQ_HANDLE;return IRQ_NONE;
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(4)
为了实现最快的处理异常事件, 这些入出口已经由硬件来完成了.编译器不能更改.
中断是异步发生的,就是说从软件的角度来说,不知道中断什么时候发生,而且中断发生之后,ISR的调度并不是软件来完成,而是由硬件的中断控制器来完成的(通过直接修改PC跳转到ISR的入口或是去查找中断向量表)。可以这么理解,ISR在代码流中并没有确切的“调用者”,那么谁给它准备“参数”呢?谁又接收ISR的“返回值”呢?
本帖最后由 amarant 于 2011-05-23 09:26 编辑
回复 2# rodgerluo
asm处理的是进入退出IRQ吧。。ISR是在进入IRQ后处理的
ISR不是有返回值和参数的吗?
irqreturn_t xxx_isr(int irq, void *dev_id)
return IRQ_HANDLE;
return IRQ_NONE;