cc3200/mpthreadport: Make mutex statically allocated.

Reduced the need for the FreeRTOS heap to allocate the mutex.
uheapq-ticks
Damien George 2016-05-31 17:28:53 +01:00
parent 0455755296
commit 27241293c4
2 changed files with 7 additions and 7 deletions

View File

@ -157,19 +157,16 @@ void mp_thread_finish(void) {
}
void mp_thread_mutex_init(mp_thread_mutex_t *mutex) {
*mutex = xSemaphoreCreateMutex();
if (*mutex == NULL) {
// error!
}
mutex->handle = xSemaphoreCreateMutexStatic(&mutex->buffer);
}
int mp_thread_mutex_lock(mp_thread_mutex_t *mutex, int wait) {
int ret = xSemaphoreTake(*mutex, wait ? portMAX_DELAY : 0);
int ret = xSemaphoreTake(mutex->handle, wait ? portMAX_DELAY : 0);
return ret == pdTRUE;
}
void mp_thread_mutex_unlock(mp_thread_mutex_t *mutex) {
xSemaphoreGive(*mutex);
xSemaphoreGive(mutex->handle);
// TODO check return value
}

View File

@ -28,7 +28,10 @@
#include "FreeRTOS.h"
typedef SemaphoreHandle_t mp_thread_mutex_t;
typedef struct _mp_thread_mutex_t {
SemaphoreHandle_t handle;
StaticSemaphore_t buffer;
} mp_thread_mutex_t;
void mp_thread_init(void);
void mp_thread_gc_others(void);