您好、欢迎来到现金彩票网!
当前位置:彩之网 > 中断机制 >

ARM Linux中断机制之中断的申请

发布时间:2019-06-12 09:11 来源:未知 编辑:admin

  每一条中断线都有一个底层硬件操作函数集struct irq_chip 。大多数控制方法都是重复的 ,基本上只要有中断响应 、 中断屏蔽 、 中断开启 、 中断触发类型设置等方法就可以满足要求了。其他各种方法基本上和这些相同。

  //对于共享中断 , 此特定值用来区分各中断,以便从共享中断线的诸多中断处理程序中删除指定的那一个。

  old_ptr = &desc->

  action;//获取中断处理例程单向链表上的第一个例程,如果它为NULL说明该中断线是第一次被触发。

  //如果该中断线上存在中断服务例程则让old_ptr指向该例程链表的尾部,以便加入新的服务例程

  可以看出只要外部中断设置了触发方式函数__irq_set_trigger()就会执行。

  如果指定的中断线不是共享的 , 那么 , 该函数删除处理程序的同时将禁用这条中断线 。 如果

  中断线是共享的,则仅删除 dev_id 所对应的处理程序,而这条中断线本身只有在删除了最

  后一个处理程序时才会被禁用。由此可以看出为什么惟一的 dev_ id 如此重要。对于共享的

  中断线,需要一个惟一的信息来区分其上面的多个处理程序,并让 free_irq() 仅仅删除指定

  的处理程序。如果 dev_id 非空,它都必须与需要删除的处理程序相匹配。非共享中断,该

  在单项链表中如果卸载了中间的一个还得将前一个和后一个连接起来。在这里用了一个小技巧。

  比如链表中有三个action,我们要卸载的是第二个,此时指针action_ptr中存放的是第一个action中的成员next的地址&action->

  next。

  //在函数free_irq中将函数__free_irq返回的中断处理例程结构体释放掉。

http://ando2.com/zhongduanjizhi/35.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有