void move_native_irq(int irq) { struct irq_desc *desc = irq_to_desc(irq); int mask = 1; if (likely(!(desc->status & IRQ_MOVE_PENDING))) return; if (unlikely(desc->status & IRQ_DISABLED)) return; /* * If the irq is already in progress, it should be masked. * If we unmask it, we might cause an interrupt storm on RT. */ if (unlikely((desc->status & IRQ_INPROGRESS) || desc->forced_threads_active)) mask = 0; if (mask) desc->chip->mask(irq); move_masked_irq(irq); if (mask) desc->chip->unmask(irq); }
void move_native_irq(int irq) { struct irq_desc *desc = irq_to_desc(irq); if (likely(!(desc->status & IRQ_MOVE_PENDING))) return; if (unlikely(desc->status & IRQ_DISABLED)) return; desc->chip->mask(irq); move_masked_irq(irq); desc->chip->unmask(irq); }
void move_native_irq(int irq) { struct irq_desc *desc = irq_desc + irq; if (likely(!(desc->status & IRQ_MOVE_PENDING))) return; if (likely(!(desc->status & IRQ_DISABLED))) desc->chip->disable(irq); move_masked_irq(irq); if (likely(!(desc->status & IRQ_DISABLED))) desc->chip->enable(irq); }