当前位置: 代码迷 >> 驱动开发 >> 中断的一个小疑点
  详细解决方案

中断的一个小疑点

热度:123   发布时间:2016-04-28 10:11:31.0
中断的一个小问题
static int __init s3c2440_interrupt_init(void)
{
     int ret;
int flags;
s3c2410_gpio_cfgpin(S3C2410_GPC5,S3C2410_GPC5_INP);  
  
       
        local_irq_save(flags);
// by sprife

        s3c2410_gpio_cfgpin( S3C2410_GPF5, S3C2410_GPF5_EINT5);
        s3c2410_gpio_pullup(S3C2410_GPF5,1);
// end
set_irq_type(S3C2440_IRQ5,/*IRQT_FALLING*/IRQT_LOW);
s3c2410_gpio_pullup(S3C2410_GPC5, 0);   
      
local_irq_restore(flags);

ret = request_irq(S3C2440_IRQ5, s3c2440_IRQ3_fun, SA_INTERRUPT, "S3C2440_IRQ5", NULL);
return 0;
}


请问在这个 初始化里面
 local_irq_save(flags);
local_irq_restore(flags);
这两个函数有什么意义吗?

我了解这两个函数的用法,但是在这个代码里面,感觉可有可无?
------解决方案--------------------
应该是防止初始化导致中断误触发,所以初始化完成后要恢复之前的中断标志
  相关解决方案