当前位置: 技术问答>linux和unix
在Linux驱动中如何开中断和关中断?
来源: 互联网 发布时间:2016-01-02
本文导语: 如果用Atmel 9200的一个IO端口做一个模拟单总线协议的程序,在Linux下面如何开中断和关中断呢? 谢谢! | 在linux驱动中,关开中断常使用: unsigned long flag; //辅助变量 ... local_irq_save(flag); ... l...
如果用Atmel 9200的一个IO端口做一个模拟单总线协议的程序,在Linux下面如何开中断和关中断呢? 谢谢!
|
在linux驱动中,关开中断常使用:
unsigned long flag; //辅助变量
...
local_irq_save(flag);
...
local_irq_restore(flag);
...
unsigned long flag; //辅助变量
...
local_irq_save(flag);
...
local_irq_restore(flag);
...
|
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 (*handler)(int irq, void *dev_id, struct pt_regs *regs),
unsigned long irqflags,
const char * devname,
void *dev_id);
这个是中断请求函数,不知道你说的开关中断是什么意思。
|
难道说的是:
#define cli() __asm__ __volatile__ ("cli"::)
#define sti() __asm__ __volatile__ ("sti"::)
?
#define cli() __asm__ __volatile__ ("cli"::)
#define sti() __asm__ __volatile__ ("sti"::)
?
|
应该有中断屏蔽寄存器的吧,查查手册
|
cli是关闭Linux中所有的中断相应,sti是开启。
如果是某些特定的中断控制,使用中断屏蔽寄存器即可
如果是某些特定的中断控制,使用中断屏蔽寄存器即可