Linux_设备驱动程序之中断与时钟_模板

Linux_设备驱动程序之中断与时钟_模板

ID:43515598

大小:19.16 KB

页数:3页

时间:2019-10-09

Linux_设备驱动程序之中断与时钟_模板_第1页
Linux_设备驱动程序之中断与时钟_模板_第2页
Linux_设备驱动程序之中断与时钟_模板_第3页
资源描述:

《Linux_设备驱动程序之中断与时钟_模板》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Linux_设备驱动程序之中断与时钟_模板  2011-10-2519:14:56

2、  分类:Linux学习笔记

3、  标签:

4、举报

5、字号大中小 订阅“小涛哥,快醒醒,快醒醒..”小王使劲推着睡梦中的我,“你不是说今天要讲昨天有关的典型模板实例吗…”“啊?小姐啊,现在才早上8点,还让人睡觉不,别吵”我一头钻进被子里说。“不管,谁让你昨天不说完,还卖个小关子,害我昨天晚上都没睡好,想了一晚上…”我揉揉蒙蒙的眼说:“行,权当看在你渴求的心情上,但只此一次,下不为例,我还想好好睡懒觉呢..”昨天我们讲了有关中断方面的东西,鉴于小王你不太懂,我今天就专门拿出一章来说说前边中断的使用典型模版,你照抄

6、也方便不是:1)在中断分类中,我们说到了有关向量中断和非向量中断,向量中断就是入口地址不同,进不同的地址做不同的事。那非向量中断则是进同一地址,至于区分就放在了进去后用条件判断,请看下边的模板:irq_handler(){   ...   intint_src=read_int_status();  //读硬件的中断相关寄存器    switch(int_src) //判断中断源   {      caseDEV_A:          dev_a_handler();          break;     caseDEV_B:          dev_b_handler();   

7、       break;     ....     default:          break;  }}2)在底半部机制中,我们讲了tasklet,工作队列和软中断先来看tasklettasklet使用模版:voidxxx_do_tasklet(unsignedlong);DECLARE_TASKLET(XXX_tasklet,xxx_do_tasklet,0);voidxxx_do_tasklet(unsignedlong)  //中断处理底半部{   .....}irqreturn_txxx_interrupt(intirq,void*dev_id,structpt_regs*

8、regs) //中断处理顶半部{ ... tasklet_schedule(&xxx_tasklet);}int__initxxx_init(void)  //设备驱动模块加载函数{ .. result=request_irq(xxx_irq,xxx_interrupt,SA_INTERRUPT,"XXX",NULL); //申请中断 ...}void__exitxxx_exit(void)  //设备驱动卸载模块{ .. free_irq(xxx_irq,xxx_interrupt);  //释放中断 ..}工作队列模版:structwork_structxxx_wq;voidxxx_

9、do_work(unsignedlong);voidxxx_do_work(unsignedlong)  //中断处理底半部{   .....}irqreturn_txxx_interrupt(intirq,void*dev_id,structpt_regs*regs) //中断处理顶半部{ ... schedule_work(&xxx_wq);}intxxx_init(void)  //设备驱动模块加载函数{ .. result=request_irq(xxx_irq,xxx_interrupt,SA_INTERRUPT,"XXX",NULL); //申请中断 ... INIT_WOR

10、K(&xxx_wq,(void(*)(void*))xxx_do_work,NULL);   ...}void__exitxxx_exit(void)  //设备驱动卸载模块{ .. free_irq(xxx_irq,xxx_interrupt);  //释放中断 ..}3)在上节最后我还给你讲了有关中断共享的东西吧,小王,也把模版给你:irqreturn_txxx_interrupt(intirq,void*dev_id,structpt_regs*regs) //中断处理顶半部{ ... intstatus=read_int_status(); //获取终端源 if(!is_myin

11、t(dev_id,status)) //判断是否是本设备的中断 {    return IRQ_NONE://立即返回 } .. returnIRQ_HANDLED;}int__initxxx_init(void)  //设备驱动模块加载函数{ .. result=request_irq(xxx_irq,xxx_interrupt,SA_SHIRQ,"XXX",xxx_dev); //申请共享中断 ...}void__exitxxx

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

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

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