linux request_irq函数,request_irq中断注册函数参数说明

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

驱动程序在注册终端程序:1

2

3

4

5int (unsigned int irq,

irq_handler_t handler,

unsigned long flags,

const char *name,

void *dev)

参数解释:

Irq: 要分配的中断号.对某些设备而言,比如时钟或者键盘,这个值通常是预先确定的.而对于大多数其他设备来讲,这个值要么是可以通过探测获取,要么是通过编程动态获取.

Handler: handler是一个指针,指向处理这个中断的实际中断处理程序.只要os内核接收到中断,该函数就会被调用1typedef irqreturn_t (*irq_handler_t) (int, void *)

Flags:

中断处理程序标志,可以为0,也可能是下列一个或者多个标志的位掩码.定义在文件中.在这些标志中最重要的是

IRQF_DISABLE - 该标志被设置后,意味着内核在处理中断处理程序本身期间,要禁止所有的其他中断.如果不设置,中断处理程序可以与除本身之外的其他任何中断程序同时运行.多数中断处理程序不会设置该位的,因为禁止所有中断是一种野蛮行为. 这种用法留给希望快速执行的轻量级中断处理程序.

IRQF_SAMPLE_RANDOM -

要说明改标志,需要先对 内核熵池(entropy pool)进行解释#

Linux内核采用熵来描述数据的随机性。熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。在信息学中,熵被用来表征一个符号或系统的不确定性,熵越大,表明系统所含有用信息量越少,不确定度越大。

计算机本身是可预测的系统,因此,用计算机算法不可能产生真正的随机数。但是机器的环境中充满了各种各样的噪声,如硬件设备发生中断的时间,用户点击鼠标的时间间隔等是完全随机的,事先无法预测。Linux内核实现的随机数产生器正是利用系统中的这些随机噪声来产生高质量随机数序列。

内核维护了一个熵池用来收集来自设备驱动程序和其它来源的环境噪音。理论上,熵池中的数据是完全随机的,可以实现产生真随机数序列。为跟踪熵池中数据的随机性,内核在将数据加入池的时候将估算数据的随机性,这个过程称作熵估算。熵估算值描述池中包含的随机数位数,其值越大表示池中数据的随机性越好。

因此,有随机性质的 中断事件自然就成为了 内核熵池 的贡献方之一.通过设置 IRQF_SAMPLE_RANDOM 表明该设备可以对 entropy pool 产生贡献. 内核熵池 负责提供各种随机事件导出真正的随机数.如果指定了改标志,那么来自该设备的中断间隔时间 就会作为 熵 填充到 熵池. 如果你的设备以预知的速率产生中断(比如系统定时器),那么就不要设置这个标志.相反,有其他很多的硬件产生中断的速率是不可预知的,所以都能成为一种较好的熵源.

IRQF_TIMER -

改标志是特别为系统定时器的中断处理准备的

IRQF_SHARED -

表明可以在多个中断处理程序之间共享中断线.在同一个给定的线上注册的每个处理程序必须指定这个标志,否则在每条线上只能有一个处理程序.

Name:

与中断相关设备的ASCII文本表示.pc机器键盘中断对应的为”keyboard”.这些名字会被/proc/irq 和 /proc/interrupts 文件使用,以便和用户通信

第五个参数 dev 用于共享中短线.当一个中断处理程序需要释放时,dev将提供唯一的标识信息(cookie),以便从共享中短线的诸多中断处理程序中删除指定的那一个.如果无需共享中短线,该参数为null即可.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值