linux中断之中断注册.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux中断之中断注册

linux 中断之 断注册 专业的linux 驱动开发离不开中断处理,在处理中断,首先要注册中断,在linux 下通过 request_irq 来注册中断的,不同内核版本,注册中断所需要的参数也不同,本文以 linux-2.6.34 为例,对比老版本进行说明。 request_irq()函数在include/linux/interrupt.h 中定义,原型为: static inline int __must_check request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev) 参数说明: unsigned int irq:注册中断服务程序对应的硬件中断号; irq_handler_t handler:注册的中断服务程序,函数指针,原型定义为:typedef irqreturn_t (*irq_handler_t)(int, void *); unsigned long flags:中断标志,表明中断程序的属性,注意,在新老内核中,相关 属性定义不同。具体参考后面的中断标志位说明; const char *name:与该中断相关联的名称,在/proc/interrupt 中可看到。 void *dev:中断服务程序的参数,可以为NULL,但在注册共享中断时,此参数不能 为NULL。 中断标志位 新版本中的IRQF_XXX 替代了老版本中的SA_XXX,主要标志包括以下: IRQF_DISABLED:快速中断标志,对应老版本中的SA_INTERRUPT 标志,表明在处 理本中断时屏蔽所有中断,而在没设置此标志位的程序中,都是开中断处理的,可以进行中 断嵌套。 IRQF_SAMPLE_RANDOM:用于随机数据产生; PDF 文件使用 pdfFactory Pro 试用版本创建 IRQF_SHARED:用于共享中断,设置此标志时,request_irq 最后一个参数dev 不能 为NULL,对应老版本内核的SA_SHIRQ; IRQF_PROBE_SHARED:探测共享中断; IRQF_TIMER: 用于定时中断; IRQF_PERCPU:Interrupt is per cpu IRQF_NOBALANCING:Flag to exclude this interrupt from irq balancing IRQF_IRQPOLL:Interrupt is used for polling(only the interrupt that is registered first in an shared interrupt is considered for performance reasons) IRQF_ONESHOT:Interrupt is not reenabled after the hardirq handler finished. Used by threaded interrupts which need to keep the irq line disabled until the threaded handler has been run. 注册中断 相关实现在kernel/irq/manage.c 中。

文档评论(0)

xxj1658888 + 关注
实名认证
内容提供者

教师资格证持证人

该用户很懒,什么也没介绍

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档