11 #ifndef FREERTOS_SEMPHR_H
12 #define FREERTOS_SEMPHR_H
16 #include "freertos/FreeRTOS.h"
25 typedef void* SemaphoreHandle_t;
27 SemaphoreHandle_t xSemaphoreCreateMutex(
void);
28 SemaphoreHandle_t xSemaphoreCreateRecursiveMutex(
void);
30 void vSemaphoreDelete (SemaphoreHandle_t xSemaphore);
32 BaseType_t xSemaphoreGive (SemaphoreHandle_t xSemaphore);
33 BaseType_t xSemaphoreTake (SemaphoreHandle_t xSemaphore,
34 TickType_t xTicksToWait);
35 BaseType_t xSemaphoreGiveRecursive (SemaphoreHandle_t xSemaphore);
36 BaseType_t xSemaphoreTakeRecursive (SemaphoreHandle_t xSemaphore,
37 TickType_t xTicksToWait);
39 #define vPortCPUInitializeMutex(m) mutex_init(m)
41 void vPortCPUAcquireMutex (portMUX_TYPE *mux);
42 void vPortCPUReleaseMutex (portMUX_TYPE *mux);
59 #define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U )
61 #define xSemaphoreCreateBinary() \
62 xQueueGenericCreate( ( UBaseType_t ) 1, \
63 semSEMAPHORE_QUEUE_ITEM_LENGTH, \
64 queueQUEUE_TYPE_BINARY_SEMAPHORE )
65 #define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) \
66 xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) )
68 #define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken ) \
69 xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), \
70 NULL, ( pxHigherPriorityTaskWoken ) )
72 #define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken ) \
73 xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), \
74 ( pxHigherPriorityTaskWoken ) )