14#include "freertos/FreeRTOS.h"
15#include "freertos/task.h"
24typedef void* SemaphoreHandle_t;
26SemaphoreHandle_t xSemaphoreCreateMutex(
void);
27SemaphoreHandle_t xSemaphoreCreateRecursiveMutex(
void);
29void vSemaphoreDelete (SemaphoreHandle_t xSemaphore);
31BaseType_t xSemaphoreGive (SemaphoreHandle_t xSemaphore);
32BaseType_t xSemaphoreTake (SemaphoreHandle_t xSemaphore,
33 TickType_t xTicksToWait);
34BaseType_t xSemaphoreGiveRecursive (SemaphoreHandle_t xSemaphore);
35BaseType_t xSemaphoreTakeRecursive (SemaphoreHandle_t xSemaphore,
36 TickType_t xTicksToWait);
38TaskHandle_t xSemaphoreGetMutexHolder(SemaphoreHandle_t xMutex);
40#define vPortCPUInitializeMutex(m) mutex_init(m)
42void vPortCPUAcquireMutex (portMUX_TYPE *mux);
43void vPortCPUReleaseMutex (portMUX_TYPE *mux);
60#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U )
62#define xSemaphoreCreateBinary() \
63 xQueueGenericCreate( ( UBaseType_t ) 1, \
64 semSEMAPHORE_QUEUE_ITEM_LENGTH, \
65 queueQUEUE_TYPE_BINARY_SEMAPHORE )
66#define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) \
67 xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) )
69#define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken ) \
70 xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), \
71 NULL, ( pxHigherPriorityTaskWoken ) )
73#define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken ) \
74 xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), \
75 ( pxHigherPriorityTaskWoken ) )
77#define xSemaphoreCreateCountingStatic( uxMaxCount, uxInitialCount, pxSemaphoreBuffer ) \
78 xQueueCreateCountingSemaphoreStatic( ( uxMaxCount ), ( uxInitialCount ), \
79 ( pxSemaphoreBuffer ) )
81#define uxSemaphoreGetCount( xSemaphore ) \
82 uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
Mutex for thread synchronization.