Jan Kiszka wrote: > Gilles Chanteperdrix wrote: >> Jan Kiszka wrote: >>> In case the user thinks rtdm_lock_get could be used like spin_lock or >>> messes up the IRQ protection for other reasons, catch this with a >>> XENO_BUGON. >>> >>> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> >>> --- >>> >>> include/rtdm/rtdm_driver.h | 8 ++++++++ >>> 1 files changed, 8 insertions(+), 0 deletions(-) >>> >>> diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h >>> index 058a9f8..fe42eea 100644 >>> --- a/include/rtdm/rtdm_driver.h >>> +++ b/include/rtdm/rtdm_driver.h >>> @@ -655,7 +655,15 @@ typedef unsigned long rtdm_lockctx_t; >>> * >>> * Rescheduling: never. >>> */ >>> +#ifdef DOXYGEN_CPP /* Beautify doxygen output */ >>> #define rtdm_lock_get(lock) rthal_spin_lock(lock) >>> +#else /* This is how it really works */ >>> +#define rtdm_lock_get(lock) \ >>> + do { \ >>> + XENO_BUGON(RTDM, rthal_local_irq_test()); \ >>> + rthal_spin_lock(lock); \ >>> + } while (0) >>> +#endif >> Why is it a problem to call rthal_spin_lock with irqs off? > > Did I messed it up again? I meant it is a problem to call it with irqs > *on*. Checking what rthal_local_irq_test() actually means... Hmm, I > still think it's correct. Maybe we should rename rthal_local_irq_test to > rthal_local_irq_enabled to clarify the usage.
Ok. Got it. So, maybe, what you want is: if (rthal_local_irq_test()) xnpod_lock_sched(); rthal_spin_lock ? -- Gilles. _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core