1.中断

#中断使得硬件得以发出通知给处理器,本质上是一种电信号

#中断随时能够产生。内核随时会被打断

#不同设备的中断不同,每一个中断都通过一个唯一的数字标识。称为IRQ(中断请求)

2.中断处理程序

#响应中断的时候,内核会运行一个函数(中断处理程序或中断服务例程)

#在Linux中,中断程序为普通的C函数

3.上半部和下半部的对照

#中断处理分为两部分:上半部和下半部

#上半部:中断处理程序,接收到一个中断,立马运行

#下半部:同意稍后完毕的工作

4.注冊中断处理程序

#中断处理程序是硬件驱动程序的组成部分。假设设备使用中断。那么对应的驱动就注冊一个中断处理程序

#驱动程序通过request_irq()函数注冊一个中断处理程序,并激活给定的中断线

requset_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev)

1.中断处理程序标识

#第一个參数irq表示要分配的中断号

#第二个參数handler是一个指针。指向处理这个中断的实际中断处理程序

#第三个參数flags能够为0,也能够为:

-IRQF_DISABLED:该标志被设置后意味着处理中断处理程序本身之间期间中断全部其它中断

-IRQF_SAMPLE_RANDOM:此标志表明这个设备产生的中断对内核熵池有贡献,内核熵池负责从各种随机事件导出真正的随机数

-IRQF_TIMER:该标志是特别为系统定时器的中断处理准备的

-IRQF_SHARED:此标志表明能够在多个中断处理程序之间共享中断线

#第四个參数name是与中断相关的设备的ASCII文本表示

#第五个參数dev用于共享中断线

#request_irq()成功运行会返回0,假设返回非0,则有错误

#request_irq()函数可能会睡眠。因此。不能在中断上下文或其它不同意堵塞的代码中调用该函数

2.一个中断样例:

request_irq():

if(request_irq(irqn, my_interrupt, IRQF_SHARED, "my device", my_dev)){

printk(KEEN_ERR, "my_device: cannot register IRQ %d\n", irqn);

return -EIO;

}

3.释放中断处理程序

#卸载驱动程序时,须要注销对应的中断处理程序,并释放中断线。调用:

void free_irq(unsigned int irq, void *dev)

假设这条中断线不是共享的。则函数删除中断处理程序并禁用中断线

假设这条中断线是共享的,则仅仅删除*dev相应中断处理程序,仅仅要在删除了该中断线上的全部中断处理程序后。才会禁用中断线

5.编写中断处理程序

Linux-中断和中断处理的更多相关文章

  1. Linux中断 - ARM中断处理过程

    一.前言 本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作.具体整个处理过程分成三个步骤来描述: 1.第二章描述了中断处理的准备过程 2.第三章描述了当发生中的时候 ...

  2. 【linux kernel】 中断处理-中断上半部

        欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:htt ...

  3. 【linux kernel】 中断处理-中断上半部【转】

    转自:http://www.cnblogs.com/embedded-tzp/p/4451354.html 欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地 ...

  4. linux中断系统那些事之----中断处理过程【转】

    转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...

  5. 裸板中中断异常处理,linux中断异常处理 ,linux系统中断处理的API,中断处理函数的要求,内核中登记底半部的方式

    1.linux系统中的中断处理  1.0裸板中中断异常是如何处理的?     以s5p6818+按键为例          1)按键中断的触发        中断源级配置            管脚功 ...

  6. Linux内核设计与实现 总结笔记(第七章)中断和中断处理

    中断和中断处理 处理器的速度跟外围硬件设备的速度往往不再一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求. 然后专门等待回应的办法,如果专门等待回应,明显太慢.所以等待期间可以处理其他事务, ...

  7. linux中断与异常

    看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...

  8. 13.linux中断处理程序

    linux中断处理程序 一.中断处理流程 在linux内核代码中进入entry-armv.S目录: linux统一的入口:__irq svc. 进入了统一的入口之后,程序跳到irq_handler标号 ...

  9. Linux 中断详解 【转】

    转自:http://blog.csdn.net/tiangwan2011/article/details/7891818 原文地址 http://www.yesky.com/20010813/1921 ...

  10. linux中断申请之request_threaded_irq

    转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21977330&id=3755609 在linux里,中断处理分 ...

随机推荐

  1. Kafka主要参数详解

    原文档地址:http://kafka.apache.org/documentation.html  https://kafka.apache.org/08/documentation#configur ...

  2. zoj 2587 Unique Attack 最小割判定

    题目链接 让你判断最小割是否唯一. 判断方法是, 先求一遍最大流, 然后从源点dfs一次, 搜索未饱和边的数目. 从汇点dfs一次, 同样也是搜索未饱和边的数目, 看总和是否等于n. 如果等于n那么唯 ...

  3. 简单测试运行时类信息(RTTI),附详细例子

    新建一个单元文件,填写如下代码,然后保存为 ClassInfoUnit.pas,这里定义了一个结构,用来读取指定类的信息. unit ClassInfoUnit; interface uses Cla ...

  4. 使用tcpdump抓Android网络包

    1 抓包原理 tcpdump(需Root用户运行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其他数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1优点 1.手机数据包无遗漏 2. ...

  5. HDU 5737 Differencia(归并树)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5737 [题目大意] 给出两个序列a和b,要求实现两个操作: 1. 将a序列的一个区间中的所有数改成 ...

  6. Codeforces Beta Round #97 (Div. 2)

    A题求给出映射的反射,水题 #include <cstdio> int x,ans[105],n; int main(){ scanf("%d",&n); fo ...

  7. 【解决方法】You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE)

    出现场景: 正常调试是没有问题的,但是在Archive的时候,报出了这个错误. 问题详情: (null): URGENT: all bitcode will be dropped because ‘x ...

  8. hdoj 1052 Tian Ji -- The Horse Racing【田忌赛马】 【贪心】

    思路:先按从小到大排序, 然后从最快的開始比(如果i, j 是最慢的一端, flag1, flag2是最快的一端 ),田的最快的大于king的 则比較,如果等于然后推断,有三种情况: 一:大于则比較, ...

  9. 交换机VLAN研究

    这两天在研究openWRT的网络接口问题,涉及到了交换机的一些概念,主要是跟VLAN相关的,在此总结一下. VLAN在802.11Q中定义,802.11Q帧格式如下图所示: 交换机示意图如下图所示: ...

  10. VS2015操作Oracle数据需要做那些设置?

    1>在oracle网上下载:ODP.NET 2> 要根据自己的oracle 数据32bit/64bit,选择下载. 3> 根据提示配置tnsnames.ora文件. # alias ...