wutnewlib: Use OSCompareAndSwapAtomicEx for sbrk

This commit is contained in:
GaryOderNichts 2022-08-02 03:52:14 +02:00 committed by fincs
parent e81c3a159f
commit 42292fadc6
2 changed files with 4 additions and 4 deletions

View File

@ -6,7 +6,7 @@
#define MAX_LOCKS 16
static OSMutex sLibcLocks[MAX_LOCKS];
static uint32_t sLibcLockUsedMask = 0;
static volatile uint32_t sLibcLockUsedMask = 0;
static inline bool
__wut_is_lock_valid(int *lock)

View File

@ -14,17 +14,17 @@ void *
__wut_sbrk_r(struct _reent *r,
ptrdiff_t incr)
{
uint32_t oldSize, newSize;
uint32_t newSize;
uint32_t oldSize = sHeapSize;
do {
oldSize = sHeapSize;
newSize = oldSize + incr;
if (newSize > sHeapMaxSize) {
r->_errno = ENOMEM;
return (void *)-1;
}
} while (!OSCompareAndSwapAtomic(&sHeapSize, oldSize, newSize));
} while (!OSCompareAndSwapAtomicEx(&sHeapSize, oldSize, newSize, &oldSize));
return ((uint8_t *)sHeapBase) + oldSize;
}