From ccd83187fa1d762550be55bd4e582573169f97b1 Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 25 Oct 2015 22:10:00 +0100 Subject: [PATCH] Fixing Mutex and Semaphores for CMSIS RTOS --- src/gos/gos_cmsis.c | 14 ++++++++++---- src/gos/gos_cmsis.h | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/gos/gos_cmsis.c b/src/gos/gos_cmsis.c index 26a3f7f0..ad32d16d 100644 --- a/src/gos/gos_cmsis.c +++ b/src/gos/gos_cmsis.c @@ -32,14 +32,20 @@ void _gosDeinit(void) void gfxMutexInit(gfxMutex* pmutex) { - pmutex->id = osMutexCreate(&(pmutex->def)); + osMutexDef_t def; + def.mutex = pmutex->mutex; + + pmutex->id = osMutexCreate(&def); } void gfxSemInit(gfxSem* psem, semcount_t val, semcount_t limit) { - psem->id = osSemaphoreCreate(&(psem->def), limit); - while(val--) - osSemaphoreRelease(psem->id); + osSemaphoreDef_t def; + def.semaphore = psem->semaphore; + + (void)limit; + + psem->id = osSemaphoreCreate(&def, val); } void gfxSemDestroy(gfxSem* psem) diff --git a/src/gos/gos_cmsis.h b/src/gos/gos_cmsis.h index a0833c07..d263feb6 100644 --- a/src/gos/gos_cmsis.h +++ b/src/gos/gos_cmsis.h @@ -42,12 +42,12 @@ typedef osPriority threadpriority_t; #define HIGH_PRIORITY osPriorityHigh typedef struct gfxSem { - osSemaphoreDef_t def; + uint32_t semaphore[2]; osSemaphoreId id; } gfxSem; typedef struct gfxMutex { - osMutexDef_t def; + uint32_t mutex[4]; osMutexId id; } gfxMutex;