Module: xenomai-rpm
Branch: for-upstream
Commit: ea771aec61c399dc85e14d3de571cffaa5b9b1e7
URL:    
http://git.xenomai.org/?p=xenomai-rpm.git;a=commit;h=ea771aec61c399dc85e14d3de571cffaa5b9b1e7

Author: Philippe Gerum <r...@xenomai.org>
Date:   Sun Nov  7 16:08:22 2010 +0100

hal/generic: introduce rthal_synchronize_irq()

We need a service to wait for interrupts on all CPUs to drain for a
given IRQ line.

rthal_synchronize_irq() provides such service, based on the revised
ipipe_control_irq() routine available with recent I-pipe patches. When
older patches are detected, rthal_synchronize_irq() is a no-op.

---

 include/asm-generic/hal.h |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/include/asm-generic/hal.h b/include/asm-generic/hal.h
index 34f8ea1..b3927e4 100644
--- a/include/asm-generic/hal.h
+++ b/include/asm-generic/hal.h
@@ -171,6 +171,13 @@ typedef spinlock_t rthal_spinlock_t;
 #endif /* !__IPIPE_FEATURE_FASTPEND_IRQ */
 #define rthal_virtualize_irq(dom,irq,isr,cookie,ackfn,mode) \
     ipipe_virtualize_irq(dom,irq,isr,cookie,ackfn,mode)
+#ifdef __IPIPE_FEATURE_CONTROL_IRQ
+#define rthal_synchronize_irq(irq)     ipipe_control_irq(&rthal_domain, irq,  \
+                                                         
IPIPE_HANDLE_MASK|IPIPE_WIRED_MASK, \
+                                                         IPIPE_PASS_MASK)
+#else /* !__IPIPE_FEATURE_CONTROL_IRQ */
+#define rthal_synchronize_irq(irq)     do { } while(0)
+#endif /* !__IPIPE_FEATURE_CONTROL_IRQ */
 #define rthal_alloc_virq()             ipipe_alloc_virq()
 #define rthal_free_virq(irq)           ipipe_free_virq(irq)
 #define rthal_trigger_irq(irq)         ipipe_trigger_irq(irq)


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to