您的位置:首页 > 产品设计 > UI/UE

request_irq()、free_irq()

2012-03-12 17:58 295 查看
request_irq()、free_irq()

这是驱动程序申请中断和释放中断的调用。在include/linux/sched.h里声明。

Request_irq()调用的定义:

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);

irq是要申请的硬件中断号。在Intel平台,范围0--15。Handler是向系统登记

的中断处理函数。这是一个回调函数,中断发生时,系统调用这个函数,传入的参

数包括硬件中断号,device id,寄存器值。Dev_id就是下面的request_irq时传递

给系统的参数dev_id。Irqflags是中断处理的一些属性。比较重要的有SA_INTERRUPT,

标明中断处理程序是快速处理程序(设置SA_INTERRUPT)还是慢速处理程序(不设置

SA_INTERRUPT)。快速处理程序被调用时屏蔽所有中断。慢速处理程序不屏蔽。还有

一个SA_SHIRQ属性,设置了以后运行多个设备共享中断。Dev_id在中断共享时会用

到。一般设置为这个设备的device结构本身或者NULL。中断处理程序可以用dev_id

找到相应的控制这个中断的设备,或者用irq2dev_map找到中断对应的设备。

Void free_irq(unsigned int irq,void *dev_id); 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struct null 平台