Compare commits

...

2 commits

Author SHA1 Message Date
hujun5
ec2f767d11
Merge 5e23c4a79b into 6485093277 2024-12-31 18:13:03 +08:00
hujun5
5e23c4a79b 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>
2024-11-25 21:03:39 +08:00

View file

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