此外,还有一些locked版本的set接口API,定义为__irq_set_xxx,这些API的调用者应该已经持有保护irq desc的spinlock,因此,这些locked版本的接口没有中断描述符的spin lock进行操作。这些接口有自己特定的使用场合,这里也不详细描述了。 1、接口调用时机 kernel提供了若干的接口API可以让内核其他模块可以操作指定IRQ number的...
此外,还有一些locked版本的set接口API,定义为__irq_set_xxx,这些API的调用者应该已经持有保护irq desc的spinlock,因此,这些locked版本的接口没有中断描述符的spin lock进行操作。这些接口有自己特定的使用场合,这里也不详细描述了。 1、接口调用时机 kernel提供了若干的接口API可以让内核其他模块可以操作指定IRQ number的...
此外,还有一些locked版本的set接口API,定义为__irq_set_xxx,这些API的调用者应该已经持有保护irq desc的spinlock,因此,这些locked版本的接口没有中断描述符的spin lock进行操作。这些接口有自己特定的使用场合,这里也不详细描述了。 1、接口调用时机 kernel提供了若干的接口API可以让内核其他模块可以操作指定IRQ number的...
__irq_set_handler_locked(d->irq, handle_edge_irq); }else{ __raw_writel(val & ~mask, msm_chip->regs.int_edge); __irq_set_handler_locked(d->irq, handle_level_irq); }if((flow_type & IRQ_TYPE_EDGE_BOTH) == IRQ_TYPE_EDGE_BOTH) { msm_chip->both_edge_detect |= mask; msm_...
本节主要描述的是第一种,也就是控制CPU的中断。当进入high level handler的时候,CPU的中断是关闭的(硬件在进入IRQ processor mode的时候设定的)。 对于外设的specific handler,旧的内核(2.6.35版本之前)认为有两种:slow handler和fast handle。在request irq的时候,对于fast handler,需要传递IRQF_DISABLED的参数,确保...
rc = qpnpint_spmi_masked_write(d, QPNPINT_REG_SET_TYPE, &type, &mask, sizeof(type)); irq_set_handler_locked(d, flow_handler);return 0; return rc; }static int qpnpint_irq_set_wake(struct irq_data *d, unsigned int on)0 comments on commit 1b18af4 Please sign in to comment. ...
对于外设的specific handler,旧的内核(2.6.35版本之前)认为有两种:slow handler和fast handle。在request irq的时候,对于fast handler,需要传递IRQF_DISABLED的参数,确保其中断处理过程中是关闭CPU的中断,因为是fast handler,执行很快,即便是关闭CPU中断不会影响系统的性能。但是,并不是每一种外设中断的handler都是那么...
irq_set_chained_handler(IRQ_AUTO_6, psc_irq);irq_set_handler_data(IRQ_AUTO_6, (void*)0x60); } 开发者ID:01org,项目名称:KVMGT-kernel,代码行数:11,代码来源:psc.c 示例3: nmk_gpio_init_irq ▲点赞 3▼ staticintnmk_gpio_init_irq(struct nmk_gpio_chip *nmk_chip){ ...
* Invoking a kernel routine with interrupts locked may result in * interrupts being re-enabled for an unspecified period of time. If the * called routine blocks, interrupts will be re-enabled while another * thread executes, or while the system is idle. * * The "interrupt disable state" ...
/*申请一个新的中断,中断号对应的是11,中断处理函数是myhandler( ),中断类型是IRQF_ DISABLED,中断设备名是A_NEW_Device,设备编号是NULL(即不对应真实的设备)*/ result=request_irq(irq, irq_handler, IRQF_DISABLED, "A_New_Device", NULL);