当前位置: 技术问答>linux和unix
有没有能够禁用某个CPU的某条IRQ的内核函数?
来源: 互联网 发布时间:2017-05-07
本文导语: RT。。在多处理器机上,有 disable_irq(int irq) 能够屏蔽某条IRQ线,对所有CPU都起作用。 local_disable_irq() 能够禁止当前CPU的所有中断。 那么请教各位,有没有能够只针对当前CPU禁用某条IRQ线,而其它CPU依然能够接收这...
RT。。在多处理器机上,有
disable_irq(int irq) 能够屏蔽某条IRQ线,对所有CPU都起作用。
local_disable_irq() 能够禁止当前CPU的所有中断。
那么请教各位,有没有能够只针对当前CPU禁用某条IRQ线,而其它CPU依然能够接收这条IRQ线发来的中断的函数呢?
disable_irq(int irq) 能够屏蔽某条IRQ线,对所有CPU都起作用。
local_disable_irq() 能够禁止当前CPU的所有中断。
那么请教各位,有没有能够只针对当前CPU禁用某条IRQ线,而其它CPU依然能够接收这条IRQ线发来的中断的函数呢?
|
直接把中断亲和性设置到其他几个cpu
echo xxx > /proc/irq/iqrnumber/smp_affinity
驱动的话参考irq_set_affinity()的实现
echo xxx > /proc/irq/iqrnumber/smp_affinity
驱动的话参考irq_set_affinity()的实现
|
中断控制器可以将中断与特定的某个处理器捆绑,不过不清楚是否可以捆绑多个处理器,你需要查看具体中断控制器的资料。
|
或许你可以自己创建一个work_struct把它加到相应的cpu上
int queue_work_on( int cpu, struct workqueue_struct *wq, struct work_struct *work );
int queue_delayed_work_on( int cpu, struct workqueue_struct *wq,
struct delayed_work *dwork, unsigned long delay );
int queue_work_on( int cpu, struct workqueue_struct *wq, struct work_struct *work );
int queue_delayed_work_on( int cpu, struct workqueue_struct *wq,
struct delayed_work *dwork, unsigned long delay );