码迷,mamicode.com
首页 > 系统相关 > 详细

linux 中断

时间:2019-11-29 11:20:00      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:因此   lin   _id   smp   操作   不同的   res   不同   disable   

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 中断

标签:因此   lin   _id   smp   操作   不同的   res   不同   disable   

原文地址:https://www.cnblogs.com/yangjunhe460/p/11956011.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!