Em Ter, 2009-06-30 às 00:11 +0200, Jiri Slaby escreveu: > > pcap_adc_irq actually already runs from a workqueue (pcap_isr_work). > > Aha, thanks, there is a specific irq handler. Ok, sounds fair. > > But interrupts are disabled in pcap_isr_work anyway, Right. > so that > pcap_adc_irq shouldn't sleep, right? Or maybe I missed something again... No. Interrupts are enabled again before pcap_adc_irq() runs. pcap_isr_work() doesn't call pcap_adc_irq directly, it calls the irq_flow_handler, handle_simple_irq(), which needs to run with interrupts disabled. Interrupts are enabled again on handle_IRQ_event(), as pcap_adc_irq is requested _without_ IRQF_DISABLED. -- Daniel Ribeiro