void disable_irq(int irq); void disable_irq_nosync(int irq); void enable_irq(int irq)的区别

原创 2007年09月21日 14:37:00

调用这些函数中的任何一个都会更新可编程中断控制器(PIC)中指定中断的掩码,因而,这样就可以在所有的处理器上禁止或者启动 IRQ。对这些函数的调用是可以嵌套的――如果 disable_irq 被成功调用两次,在 IRQ 真正重新打开之前,需要执行两次 enable_irq 调用。从一个中断处理程序中调用这些函数是可以的,但是在处理某个 IRQ 时使能这个 IRQ,并不是一个好习惯。

首先enable_irq是使能IRQ.

disable_irq是禁止IRQ.不但会禁止给定的中断,而且也会等待当前正在执行的中断处理程序完成

 disable_irq_nosync 是立即返回的。这样,使用后者将会更快,但是可能会让你的驱动程序处于竞态下。

相关文章推荐

local_irq_disable

local_irq_disable仅仅是设置当前CPU的中断屏蔽位 disable_irq 是禁用全部cpu中断(只是当前irq) 如果你要禁止所有的中断该怎么办? 在2.6内...

互斥与同步——local_irq_enable与local_irq_disable

互斥与同步——local_irq_enable与local_irq_disable 内核版本:2.6.30 平台:arm 在单处理器不可抢占系统中,使用local_irq_enable和loca...

中断处理函数中不用disable_irq而用disable_irq_nosync原因

今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现在进入中断处理后内核就挂掉了,于是研究了一下才发现disable_irq关闭中断并等待中断处理完后返回, 而disable_ir...

中断处理函数中不用disable_irq而用disable_irq_nosync原因

今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现在进入中断处理后内核就挂掉了,于是研究了一下才发现disable_irq关闭中断并等待中断处理完后返回, 而disable_ir...

关于中断处理程序中的关中断函数disable_irq和disable_irq_nosync

disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 那么在中断处理程序中应该使用哪一个函数来关闭中断呢?在中的按键驱动中, 使用disable_i...

enable_irq_wake是如何起作用的

enable_irq_wake是如何起作用的 在linux kernel中,调用enable_irq_wake函数,可以将一个irq具有唤醒系统的功能,即把系统从低功耗模式中唤醒,如从suspend...
  • njuitjf
  • njuitjf
  • 2014年03月18日 18:57
  • 11401

unbalanced enable irq 问题的解决 以及共享的gpio中断引起的问题

最近在工作中使用irq时遇到如下问题,根据log显示应该是什么所谓的不平横问题,先前也没有仔细研究这个问题,只是定位到是enable_irq函数调用所致。 因为在项目中使用的中断是gpio中断,该中...

enable_irq_wake

键盘驱动初始化时加入enable_irq_wake,当按键中断来时,就可以唤醒贪睡的内核...

enable_irq_wake()

enable_irq_wake        2011-03-10 23:266075人阅读评论(1)收藏举报 工作 低功耗模式 实现你所有驱动的supend和resume函数.注册一个中断唤醒源...

IRQ和FIQ中断的区别

FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。 一般的中断控制器里我们可以配置与控制器相连的某个中...
  • csshuke
  • csshuke
  • 2014年09月08日 16:54
  • 401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:void disable_irq(int irq); void disable_irq_nosync(int irq); void enable_irq(int irq)的区别
举报原因:
原因补充:

(最多只允许输入30个字)