Linux-中断和中断处理
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-中断和中断处理的更多相关文章
- Linux中断 - ARM中断处理过程
一.前言 本文主要以ARM体系结构下的中断处理为例,讲述整个中断处理过程中的硬件行为和软件动作.具体整个处理过程分成三个步骤来描述: 1.第二章描述了中断处理的准备过程 2.第三章描述了当发生中的时候 ...
- 【linux kernel】 中断处理-中断上半部
欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:htt ...
- 【linux kernel】 中断处理-中断上半部【转】
转自:http://www.cnblogs.com/embedded-tzp/p/4451354.html 欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地 ...
- linux中断系统那些事之----中断处理过程【转】
转自:http://blog.csdn.net/xiaojsj111/article/details/14129661 以外部中断irq为例来说明,当外部硬件产生中断时,linux的处理过程.首先先说 ...
- 裸板中中断异常处理,linux中断异常处理 ,linux系统中断处理的API,中断处理函数的要求,内核中登记底半部的方式
1.linux系统中的中断处理 1.0裸板中中断异常是如何处理的? 以s5p6818+按键为例 1)按键中断的触发 中断源级配置 管脚功 ...
- Linux内核设计与实现 总结笔记(第七章)中断和中断处理
中断和中断处理 处理器的速度跟外围硬件设备的速度往往不再一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求. 然后专门等待回应的办法,如果专门等待回应,明显太慢.所以等待期间可以处理其他事务, ...
- linux中断与异常
看了<深入理解linux内核>的中断与异常,简单总结了下,如果有错误,望指正! 一 什么是中断和异常 异常又叫同步中断,是当指令执行时由cpu控制单元产生的,之所以称之为异常,是因为只有在 ...
- 13.linux中断处理程序
linux中断处理程序 一.中断处理流程 在linux内核代码中进入entry-armv.S目录: linux统一的入口:__irq svc. 进入了统一的入口之后,程序跳到irq_handler标号 ...
- Linux 中断详解 【转】
转自:http://blog.csdn.net/tiangwan2011/article/details/7891818 原文地址 http://www.yesky.com/20010813/1921 ...
- linux中断申请之request_threaded_irq
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21977330&id=3755609 在linux里,中断处理分 ...
随机推荐
- Spring学习之优缺点
Spring 1.Spring工作机制及为什么要用? Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.Spring既是一个AOP框架,也是一IOC容器. SpringFrame ...
- html 实现网址链接
<a href="http://acm.nyist.net/JudgeOnline/problemset.php">南工oj</a> HTML学习 < ...
- 类比的方法学习Performance_schema
引用自:http://www.javacoder.cn/?p=332 MySQL在5.6版本中包含了一个强大的特性——performance-schema,合理的使用这个数据库中的表,能为我们解决一些 ...
- JAVA并发,CountDownLatch使用
该文章转自:http://www.itzhai.com/the-introduction-and-use-of-a-countdownlatch.html CountDownLatch 1.类介绍 一 ...
- win7 gsoap与vs2010 c++创建Web Service
---恢复内容开始--- 之前曾经编写过简单的样例,很久没有碰过,发现已经全部忘记,如今又需要重新巩固一下. 首先是下载gsoap,无法访问官方下载页面,只能在网上搜索,找到一个2.8版本存入云盘以防 ...
- 常用CSS HACK
常用CSS HACK IE6 3像素bug和双边距bug一样的经典 现象: IE6下浮动元素和不浮动元素之间会有3px间隙(3px bug,div.float-left + div.float-non ...
- VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法]
VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] - tingya的专栏 - 博客频道 - CSDN.NET VIPS:基于视觉的页面分割算法[微软下一代搜索引擎核心分页算法] 分类 ...
- ubuntu使用crontab
crond服务通常被放在/etc/init.d/crond , 这样就可以在系统启动后自动启动crond服务. linux中的用户使用crontab命令来配置cron任务. crontab在/etc目 ...
- 基于mini2440的看门狗(裸机)
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生 ...
- 七日筑基——C#第一天(上)
从今天开始,介绍C#如何入门,其实我们学习任何语言的目标都是为了最终能把自己想像的东西做出来,所以在最开始学习的时候要定准方向,很多人在学习过程中学着学着就变味了.比如我之前有个学生,最开始学习编程的 ...