linux 中断

Posted yangjunhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 中断相关的知识,希望对你有一定的参考价值。

local_irq_disable()和 local_irq_enable()都只能禁止和使能本地 CPU 内的中断, 因此,并不能解决 SMP 多 CPU 引发的竞态。因此,单独使用中断屏蔽通常不是一种值得推荐的避免竞态的方法,它适宜与自旋锁联合使用。与 local_irq_disable()不同的是,local_irq_save(flags)除了进行禁止中断的操作以外, 还保存目前 CPU 的中断位信息, local_irq_restore (flags) 进行的是与 local_irq_save(f lags)相反的操作。如果只是想禁止中断的底半部,应使用 local_bh_disable(), 使能被 local_bh_disable()禁止的底半部应该调用 local_bh_enable().

1,申请和释放中断

int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs), unsigned long irqflags, const char * devname, void *dev_id);void free_irq(unsigned int irq,void *dev_id);

2 ,使能和屏蔽中断

void disable_irq(int irq); //等待目前的中断处理完成

void disable_irq_nosync(int irq);   //立即返回

void enable_irq(int irq);

void local_irq_save(unsigned long flags); //屏蔽本 CPU 内的所有中断  

void local_irq_restore(unsigned long flags);//

void local_irq_disable(void);//屏蔽本 CPU 内的所有中断

void local_irq_enable(void);

 

以上是关于linux 中断的主要内容,如果未能解决你的问题,请参考以下文章

Linux设备树(四 中断)

Linux x86_64内核中断初始化

linux内核中断体系结构

linux中断处理函数

linux中断处理函数

linux中断管理