A question about the softirq implementation in DDE Linux26
zhengda1936 at gmail.com
Mon Mar 1 13:32:22 CET 2010
On 10-3-1 下午5:58, Christian Helmuth wrote:
>> If you only consider about handling the softirq queue, I think it's easy, simply
>> using a lock to protect it explicitly, but it cannot solve the problem
>> completely. There should be many race conditions in other places. I implement
>> raw_local_irq_disable() and raw_local_irq_enable() with a lock, but there is
>> still a serious problem. Because of spin_lock_irqsave, there can be dead locks.
>> One example is in pcnet32_watchdog() and pcnet32_interrupt(). So I think we can
>> just let spin_lock_irqsave() become spin_lock(). After all, the interrupt
>> handling doesn't run in the real interrupt context any more, so I think there is
>> no reason to do spin_lock_irqsave() or spin_lock_irq().
> Sounds like my idea behind the current scheme. Thanks for your input
> on this.
I have one implementation and I sent it to the mailing list. Could you please
check if it works? If possible, try it on your DDE. It works for my pcnet32 driver.
More information about the l4-hackers