Fix RP2040 task lock acquire ordering

Add an acquire fence after the RP2040 recursive lock fast path because spin_try_lock_unsafe() does not provide acquire ordering when the lock is acquired immediately.

Signed-off-by: Old-Ding <ai.neo.ae86@gmail.com>
This commit is contained in:
Old-Ding 2026-06-29 23:43:01 +08:00
parent a50edad08b
commit f260c53d89

View file

@ -237,6 +237,11 @@ static inline void vPortRecursiveLock( BaseType_t xCoreID,
}
spin_lock_unsafe_blocking(pxSpinLock);
}
else
{
/* spin_try_lock_unsafe() does not provide acquire ordering on the fast path. */
__mem_fence_acquire();
}
configASSERT( ucRecursionCountByLock[ ulLockNum ] == 0 );
ucRecursionCountByLock[ ulLockNum ] = 1;
ucOwnedByCore[ xCoreID ][ ulLockNum ] = 1;