Go to the documentation of this file.
12 #ifndef __METAL_MUTEX__H__
13 #error "Include metal/mutex.h instead of metal/freertos/mutex.h"
16 #ifndef __METAL_FREERTOS_MUTEX__H__
17 #define __METAL_FREERTOS_MUTEX__H__
19 #include <metal/assert.h>
36 #define METAL_MUTEX_INIT(m) { NULL }
41 #define METAL_MUTEX_DEFINE(m) metal_mutex_t m = METAL_MUTEX_INIT(m)
46 mutex->
m = xSemaphoreCreateMutex();
53 vSemaphoreDelete(mutex->
m);
60 return xSemaphoreTake(mutex->
m, ( TickType_t ) 0 );
66 xSemaphoreTake(mutex->
m, portMAX_DELAY);
72 xSemaphoreGive(mutex->
m);
78 return (NULL == xSemaphoreGetMutexHolder(mutex->
m)) ? 0 : 1;
static void __metal_mutex_release(metal_mutex_t *mutex)
Definition: mutex.h:69
static int __metal_mutex_try_acquire(metal_mutex_t *mutex)
Definition: mutex.h:57
#define metal_assert(cond)
Assertion macro.
Definition: assert.h:21
struct k_sem metal_mutex_t
Definition: mutex.h:26
static int __metal_mutex_is_acquired(metal_mutex_t *mutex)
Definition: mutex.h:75
static void __metal_mutex_deinit(metal_mutex_t *mutex)
Definition: mutex.h:50
static void __metal_mutex_init(metal_mutex_t *mutex)
Definition: mutex.h:43
static void __metal_mutex_acquire(metal_mutex_t *mutex)
Definition: mutex.h:63