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 /** * Release lock without preemption restoration _______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core