关于共享中断号

SARA520 2010-03-09 11:09:05
共享中断号时,如何确定是哪个设备产生中断?

下面是我在网上找到的一些答案,但是回答的人也说不确定,所以在这里让高手给看看啊,谢谢
如下:
共享中断号时,所有共享该中断号的中断处理程序形成一个链表。
当有中断产生时,依次执行链表中的中断处理程序。
每个中断处理程序都检查自己对应的设备的状态寄存器,以确定是否是该设备产生中断。如果是,则处理该中断,并停止向下传递,否则什么都不做,继续执行下一个中断处理程序

...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hallowwar 2010-03-10
  • 打赏
  • 举报
回复
Mark and study.
deep_pro 2010-03-10
  • 打赏
  • 举报
回复
那个帖子里出现那么多高手,不知道为什么现在这么冷清

正确答案就是如此

int request_irq(unsigned int irq, irq_handler_t handler,
unsigned long irqflags, const char *devname, void *dev_id)
这个dev_id可以随便指定,最重要的作用是删除时区分共享中断上的每一个注册的处理函数,所以必须不同。
此外就是传递给中断处理函数handler,如果你有参数需要让中断处理函数知道,可以让dev_id指向一个自定义的结构。
不能靠dev_id区分驱动,request_irq传递进什么dev_id,中断处理函数就接收什么dev_id
谭海燕 2010-03-09
  • 打赏
  • 举报
回复
引用楼主 sara520 的回复:
共享中断号时,如何确定是哪个设备产生中断?

下面是我在网上找到的一些答案,但是回答的人也说不确定,所以在这里让高手给看看啊,谢谢
如下:
共享中断号时,所有共享该中断号的中断处理程序形成一个链表。
当有中断产生时,依次执行链表中的中断处理程序。
每个中断处理程序都检查自己对应的设备的状态寄存器,以确定是否是该设备产生中断。如果是,则处理该中断,并停止向下传递,否则什么都不做,继续执行下一个中断处理程序


差不多就是这个了


4,437

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧