今天在写触摸屏驱动时在中断处理函数中使用disable_irq关中断发现在进入中断处理后内核就挂掉了,于是研究了一下才发现disable_irq关闭中断并等待中断处理完后返回, 而disable_irq_nosync立即返回. 在中断处理程序中应该使用disable_irq_nosync来关闭中断 先看一下disable_irq_nosync,内核代码中是这样解释的: /** * d...
Linux设备驱动,关于中断屏蔽有两个接口:disable_irq和disable_irq_nosync,该两接口使用场景如下: 1、disable_irq:在非中断处理函数中使用,会阻塞; 2、disable_irq_nosync:在中断处理函数中使用,不会阻塞;用于屏蔽相应中断; 一、为什么要屏蔽中断? 使能中断后,一旦触发中断,系统会进入中断处理函数;如果下一个中断触发...
synchronize_irq(irq); } 关闭中断并等待中断处理完后返回.从代码中可以看到, disable_irq先是调用了disable_irq_nosync, 然后检测desc->action是否为1. 在中断处理程序中, action是置1的, 所以进入synchronize_irq函数中. /** * synchronize_irq - wait for pending IRQ handlers (on other CPUs) * @irq: ...
关闭中断并等待中断处理完后返回.从代码中可以看到, disable_irq先是调用了disable_irq_nosync, 然后检测desc->action是否为1. 在中断处理程序中, action是置1的, 所以进入synchronize_irq函数中. /** * synchronize_irq - wait for pending IRQ handlers (on other CPUs) ...
void disable_irq_nosync(int irq); void enable_irq(int irq); 调用这些函数中的任何一个都会更新可编程中断控制器(PIC)中指定中断的掩码,因而,这样就可以在所有的处理器上禁止或者启动 IRQ。对这些函数的调用是可以嵌套的――如果 disable_irq 被成功调用两次,在 IRQ 真正重新打开之前,需要执行两次 enable_...
372 static int __disable_irq_nosync(unsigned int irq) 373 { 374 unsigned long flags; 375 struct irq_desc *desc = irq_get_desc_buslock(irq, &flags, IRQ_GET_DESC_ CHECK_GLOBAL); 376 377 if (!desc) 378 return -EINVAL; 379 __disable_irq(desc, irq, false); ...
)irq_handler_tirqreturn_t(2)flags2、free_irq()函数3、enable_irq()函数4、disable_irq()函数5、disable_irq_nosync()函数6、local_irq_disable()宏7、local_irq_enable()宏一、回顾裸机开发中:通用中断控制器(GIC)中断类 敷衍作笑谈2022-01-10 07:37:08 ...
disable_irq与disable_irq_nosync disable_ir 中断处理 按键驱动 linux设备驱动 转载 qq635f6f89e5645 2022-11-01 06:25:40 277阅读 DisablejavaScriptdisablejavascript后会怎么样 卸载重装!!!首先描述一下事情的经过,正常使用电脑,因为使用时间不连续,所以没有关机,电脑是睡眠状态。由于同学要我下载一个视频,这时候...
在全局范围内屏蔽某一个中断号(irq num)。该irq num对应的irq handler不会在任何一个CPU上执行。这个操作是通过设置中断控制器中的寄存器来对指定中断进行屏蔽,而其他未屏蔽的中断依然可以正常送往CPU。 代码语言:javascript 复制 413voiddisable_irq(unsigned int irq)414{415if(!__disable_irq_nosync(irq))416sy...