Linux设备驱动编程中的中断与定时器处理

   所谓中断是指CPU在执行过程中,出现某些突发时间急待处理,CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回原程序被中断的位置并继续执行。

  中断分为(根据中断源来分):  内部中断(软件中断指令,溢出,除法错误等)【例如操作系统从用户态切换到内核态需借助CPU内部的软件中断】。

                            外部中断(中断源来自CPU外部,由外设提出请求)。

  中断分为(根据是否可屏蔽):  可屏蔽中断   不可屏蔽中断

  中断分为 (根据中断入口跳转方法的不同): 向量中断:采用向量中断的CPU通常为不同的中断分配不同的中断号,不同中断号的中断有不同的入口地址。

                                     非向量中断:多个中断共享一个地址。 (由软件判断中断标志来识别具体是哪个中断)。

   非向量中断服务程序典型结构:

                           irq_handler()

                          {

                           ...

                           int int_src=read_int_status();        //读硬件的中断相关寄存器

                           switch(int_src)                       //判断中断源

                           {

                            case DEV_A:

                                      dev_a_handler();

                                      break;

 

                            

                            case DEV_B:

                                      dev_b_handler();

                                      break;

                            ...

                           default:

                                      break;

 

                           }

                     ...

              }

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Linux设备驱动编程中的中断与定时器处理,布布扣,bubuko.com

Linux设备驱动编程中的中断与定时器处理

上一篇:Linux初学者实验环境之VMware字符界面安装Centos 6.5


下一篇:去除oracle中某字段中所有数据的空格(trim函数)