Linux中断处理程序

裸机中断:  1、有统一的入口,去中断向量表找对应中断

2、事先要注册中断处理程序

3、根据中断源的编号调用中断处理程序

linux系统中:1、也同样有统一入口,在irq_svc中 :①拿到产生中断源的编号

       ②根据中断号找到相应的irq_desc

    ③根据irp_desc找到事先注册好的中断处理程序去运行

与裸机不同就是linux系统更复杂一些,套入比裸机多的结构去查找处理程序。



linux中断处理程序设计:   1、注册中断:

使用request_irq函数用于注册中断

int  request_irq(unsigned  int  irq,void  (*handler)(int,void*,struct  pt_regs  *),

     unsigned  long  flags,

     const  char  *devname,

     void  *dev_id)

        返回0表示成功,或者返回一个错误码

unsigned  int  irq:中断号

void  (*handler)(int,void*,struct  pt_regs  *)中断处理函数

 unsigned  long  flags:中断管理有关的选项

const  char  *devname:设备名

   void  *dev_id:共享中断时使用

2、中断处理

第一:检查设备是否产生了中断

第二:清除中断产生标志

第三:相应的硬件操作

注意:①中断处理中不可以使用引起阻塞的函数

    ②中断处理中不可以使用引起调度的函数

3、注册处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值