spinlock: use inline replace macro

reason:
we.avoid.use gcc express statement extension in spinlock, to enhance compatibility

Signed-off-by: hujun5 <hujun5@xiaomi.com>
This commit is contained in:
hujun5 2024-11-22 10:05:12 +08:00
parent 358261af19
commit 5e23c4a79b

View file

@ -633,19 +633,28 @@ irqstate_t spin_lock_irqsave(FAR volatile spinlock_t *lock)
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_SPINLOCK #ifdef CONFIG_SPINLOCK
# define spin_trylock_irqsave_wo_note(l, f) \ static inline_function
({ \ bool spin_trylock_irqsave_wo_note(FAR volatile spinlock_t *lock,
f = up_irq_save(); \ FAR irqstate_t *flags)
spin_trylock_wo_note(l) ? \ {
true : ({ up_irq_restore(f); false; }); \ *flags = up_irq_save();
})
if (!spin_trylock_wo_note(lock))
{
up_irq_restore(*flags);
return false;
}
return true;
}
#else #else
# define spin_trylock_irqsave_wo_note(l, f) \ static inline_function
({ \ bool spin_trylock_irqsave_wo_note(FAR volatile spinlock_t *lock,
(void)(l); \ FAR irqstate_t *flags)
f = up_irq_save(); \ {
true; \ *flags = up_irq_save();
}) return true;
}
#endif /* CONFIG_SPINLOCK */ #endif /* CONFIG_SPINLOCK */
/**************************************************************************** /****************************************************************************
@ -669,19 +678,28 @@ irqstate_t spin_lock_irqsave(FAR volatile spinlock_t *lock)
****************************************************************************/ ****************************************************************************/
#ifdef CONFIG_SPINLOCK #ifdef CONFIG_SPINLOCK
# define spin_trylock_irqsave(l, f) \ static inline_function
({ \ bool spin_trylock_irqsave(FAR volatile spinlock_t *lock,
f = up_irq_save(); \ FAR irqstate_t *flags)
spin_trylock(l) ? \ {
true : ({ up_irq_restore(f); false; }); \ *flags = up_irq_save();
})
if (!spin_trylock(lock))
{
up_irq_restore(*flags);
return false;
}
return true;
}
#else #else
# define spin_trylock_irqsave(l, f) \ static inline_function
({ \ bool spin_trylock_irqsave(FAR volatile spinlock_t *lock,
(void)(l); \ FAR irqstate_t *flags)
f = up_irq_save(); \ {
true; \ *flags = up_irq_save();
}) return true;
}
#endif /* CONFIG_SPINLOCK */ #endif /* CONFIG_SPINLOCK */
/**************************************************************************** /****************************************************************************