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.

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

Haven't tried recently, but so far doxygen pulled the whole definition
into its documents, and I don't when the BUGON to appear there.

Jan

-- 
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux

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

Reply via email to