linux中断总结

linux中断总结

ID:36591141

大小:136.00 KB

页数:22页

时间:2019-05-12

linux中断总结_第1页
linux中断总结_第2页
linux中断总结_第3页
linux中断总结_第4页
linux中断总结_第5页
资源描述:

《linux中断总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、1.Linux中断的注册与释放:在,,实现中断注册接口:intrequest_irq(unsignedintirq,irqreturn_t(*handler)(int,void*,structpt_regs*),unsignedlongflags,constchar*dev_name,void*dev_id);voidfree_irq(unsignedintirq,void*dev_id);函数参数说明unsignedintirq:所要注册的中断号irqreturn_t

2、(*handler)(int,void*,structpt_regs*):中断服务程序的入口地址。unsignedlongflags:与中断管理有关的位掩码选项,有三组值:1.SA_INTERRUPT:快速中断处理程序,当使用它的是后处理器上所有的其他中断都被禁用。2.SA_SHIRQ:该中断是在设备之间可共享的3.SA_SAMPLE_RANDOM:这个位表示产生的中断能够有贡献给/dev/random和/dev/urandom使用的加密池.(此处不理解)constchar*dev_name:设备描述,表示

3、那一个设备在使用这个中断。void*dev_id:用作共享中断线的指针.它是一个独特的标识,用在当释放中断线时以及可能还被驱动用来指向它自己的私有数据区(来标识哪个设备在中断)。这个参数在真正的驱动程序中一般是指向设备数据结构的指针.在调用中断处理程序的时候它就会传递给中断处理程序的void*dev_id。(这是我的理解)如果中断没有被共享,dev_id可以设置为NULL,但是使用这个项指向设备结构不管如何是个好主意.我们将在"实现一个处理"一节中看到dev_id的一个实际应用。中断号的查看可以使用下面的命

4、令:“cat/proc/interrupts”。/proc/stat记录了几个关于系统活动的低级统计量,包括(但是不限于)自系统启动以来收到的中断数.stat的每一行以一个文本字串开始,是该行的关键词;intr标志是我们在找的.第一个数是所有中断的总数,而其他每一个代表一个单个IRQ线,从中断0开始.所有的计数跨系统中所有处理器而汇总的.这个快照显示,中断号4已使用1次,尽管当前没有安装处理.如果你在测试的驱动请求并释放中断在每个打开和关闭循环,你可能发现/proc/stat比/proc/interrupt

5、s更加有用.以下是一个统计中断时间间隔的中断服务程序。irqreturn_tshort_interrupt(intirq,void*dev_id,structpt_regs*regs){staticlongmytime=0;staticinti=0;structnet_device*dev=(structnet_device*)dev_id;if(i==0){mytime=jiffies;}elseif(i<20){mytime=jiffies-mytime;printk("RequestonIRQ%dti

6、me%d",irq,mytime);mytime=jiffies;printk("Interrupton%s-----%d",dev->name,dev->irq);}i;returnIRQ_HANDLED;}这个函数实现的只是对两次发生中断的时间间隔的统计,时间单位是毫秒前言在前面分析了中断的基本原理后,就可以写一个内核中断程序来体验以下,也可以借此程序继续深入来了解内核中断的执行过程一.内核中断程序:我们还是来看一看成程序:在看程序之前,要熟悉如何进行模块编程,和了解module_pararm(

7、)的用法。如果不熟悉的话请大家看,module_param()的学习和Linux内核模块编程,在此不作解释。1.程序interrupt.c1/*2*filename:interrupt.c3*atuthor:john4*/5#include6#include7#include8#include910MODULE_LICENSE("GPL");11staticintirq;12ch

8、ar*interface;13staticirqreturn_tmyirq_handler(intirq,void*dev);1415staticint__initmyirq_init(void)16{17printk("themoduleisworking!");18printk("theirqisreadyforworking!");19if(request_irq(irq,myirq_handler

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。