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?

I also belived that you can avoid the #ifdef DOXYGEN_CPP.

-- 
                                            Gilles.

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

Reply via email to