linux中断申请函数flags

int request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id)

irqflags参数说明:

一、以下标志对应于linux/ioport.h中定义的IORESOURCE_IRQ_*来选择中断行行为。当在没有指定IRQF_TRIGGER的情况下请求中断时,设置应该假定为“已配置”,这可能是根据每个机器或固件初始化而设置的。

#define IRQF_TRIGGER_NONE 0x00000000
#define IRQF_TRIGGER_RISING 0x00000001 上升沿触发中断
#define IRQF_TRIGGER_FALLING 0x00000002 下降沿触发中断
#define IRQF_TRIGGER_HIGH 0x00000004 高电平触发中断
#define IRQF_TRIGGER_LOW 0x00000008 低电平触发中断
#define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)
#define IRQF_TRIGGER_PROBE 0x00000010

二、以下标志只被内核作为irq处理程序的一部分使用。

  • IRQF_SHARED -允许在多个设备之间共享irq
  • IRQF_PROBE_SHARED -当调用者期望发生共享不匹配时设置
    标记这个中断为定时器中断
  • IRQF_PERCPU -中断是每个cpu
  • IRQF_NOBALANCING -标志从irq平衡中排除这个中断
  • IRQF_IRQPOLL——中断用于轮询(只有在共享中断中首先注册的中断出于性能考虑)
    IRQF_ONESHOT -中断在hardirq处理结束后没有重新启用。
    用于线程中断,需要保持irq行禁用,直到线程处理程序已经运行。
  • IRQF_NO_SUSPEND -不要在挂起期间禁用IRQ。不能保证此中断将从挂起状态唤醒系统。
  • IRQF_FORCE_RESUME - Force enable it on resume即使设置了IRQF_NO_SUSPEND
    IRQF_NO_THREAD中断不能被线程化
  • IRQF_EARLY_RESUME -在系统评分期间早期恢复IRQ,而不是在设备恢复时间。
  • IRQF_COND_SUSPEND -如果IRQ与NO_SUSPEND用户共享,在挂起中断后执行这个中断处理程序。对于系统唤醒设备,用户需要在其中断处理程序中实现唤醒检测。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容