这个接口函数用来设定中断描述符中desc->irq_data.chip成员,具体代码如下: intirq_set_chip(unsignedintirq,structirq_chip*chip){unsignedlongflags;structirq_desc*desc=irq_get_desc_lock(irq,&flags,0);---(1)desc->irq_data.chip=chip;irq_put_desc_unlock(desc,flags);---(2)irq_reserve_irq(irq)...
handle、name,x86默认使用legacy irq chip 8259,当然我们用的是APIC。这个函数后面会重点分析。87}2.2...
来到这个接口函数,第一个问题就是:为何irq_set_chip接口函数使用irq_get_desc_lock来获取中断描述符,而irq_set_irq_type这个函数却需要irq_get_desc_buslock呢?其实也很简单,irq_set_chip不需要访问底层的irq chip(也就是interrupt controller),但是irq_set_irq_type需要。设定一个IRQ的trigger type最终要调用des...
来到这个接口函数,第一个问题就是:为何irq_set_chip接口函数使用irq_get_desc_lock来获取中断描述符,而irq_set_irq_type这个函数却需要irq_get_desc_buslock呢?其实也很简单,irq_set_chip不需要访问底层的irq chip(也就是interrupt controller),但是irq_set_irq_type需要。设定一个IRQ的trigger type最终要调用des...
你可以只提供thread_fn,内核会提供默认的上半部处理函数irq_default_primary_handler,该函数只是返回一个IRQ_WAKE_THREAD。发生中断时,系统会立刻调用 handler 函数,然后唤醒某个内核线程,内核线程再来执行thread_fn函数。 你也可以既提供handler函数,也提供thread_fn函数。等硬件中断到来,先执行handler函数,handler函数中...
(1)调用中断描述符的底层irq chip driver进行mask,ack等callback函数,进行interrupt flow control。 (2)调用该中断描述符上的action list中的specific handler(我们用这个术语来区分具体中断handler和high level的handler)。这个步骤不一定会执行,这是和中断描述符的当前状态相关,实际上,interrupt flow control是软件(设...
. pm = & smcdef_pm_ops , }, . probe = smcdef_probe , . remove = smcdef_remove , }; module_i2c_driver ( smcdef_driver ); MODULE_AUTHOR ( "smcdef" ); MODULE_DEION ( "IRQ test" ); MODULE_LICENSE ( "GPL" ); 在probe函数中通过request_thread_irq接口注册驱动的中断服务函数smcdef_eve...
(1)调用中断描述符的底层irq chip driver进行mask,ack等callback函数,进行interrupt flow control。 (2)调用该中断描述符上的action list中的specific handler(我们用这个术语来区分具体中断handler和high level的handler)。这个步骤不一定会执行,这是和中断描述符的当前状态相关,实际上,interrupt flow control是软件(设...
2003 中断处理函数等于handler 2004 线程中断处理器等于thread_fn 2005 中断动作标志等于irqflags 2006 设备名等于devname 2007 设备标识等于dev_id 2009 retval等于q_chip_pm_get - Enable power for an IRQ chip*@data: Pointer to interrupt specific data* Enable the power to the IRQ chip referenced by ...
The IRQ chip interface defines only two callbacks which are executed in non-atomic contex - irq_bus_lock/irq_bus_sync_unlock, so lets move PM runtime calls there. Tested-by: Tony Lindgren <t...@atomide.com> Tested-by: Austin Schuh <aus...@peloton-tech.com> ...