FreeRTOS + 0/1 examples
CodeScope will show references to vSemaphoreCreateBinary from the following samples and libraries:
Libraries
 
Symbols
loading...
Files
loading...

vSemaphoreCreateBinary macro

In many usage scenarios it is faster and more memory efficient to use a direct to task notification in place of a binary semaphore! http://www.freertos.org/RTOS-task-notifications.html This old vSemaphoreCreateBinary() macro is now deprecated in favour of the xSemaphoreCreateBinary() function. Note that binary semaphores created using the vSemaphoreCreateBinary() macro are created in a state such that the first call to 'take' the semaphore would pass, whereas binary semaphores created using xSemaphoreCreateBinary() are created in a state such that the the semaphore must first be 'given' before it can be 'taken'. Macro that implements a semaphore by using the existing queue mechanism. The queue length is 1 as this is a binary semaphore. The data size is 0 as we don't want to actually store any data - we just want to know if the queue is empty or full. This type of semaphore can be used for pure synchronisation between tasks or between an interrupt and a task. The semaphore need not be given back once obtained, so one task/interrupt can continuously 'give' the semaphore while another continuously 'takes' the semaphore. For this reason this type of semaphore does not use a priority inheritance mechanism. For an alternative that does use priority inheritance see xSemaphoreCreateMutex(). Example usage:
SemaphoreHandle_t xSemaphore = NULL; void vATask( void * pvParameters ) { // Semaphore cannot be used before a call to vSemaphoreCreateBinary (). // This is a macro so pass the variable in directly. vSemaphoreCreateBinary( xSemaphore ); if( xSemaphore != NULL ) { // The semaphore was created successfully. // The semaphore can now be used. } }

Syntax

#define vSemaphoreCreateBinary( xSemaphore ) \     { \     ( xSemaphore ) = xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \     if( ( xSemaphore ) != NULL ) \     { \     ( void ) xSemaphoreGive( ( xSemaphore ) ); \     } \     }

Arguments

xSemaphore

Handle to the created semaphore. Should be of type SemaphoreHandle_t.

Examples

vSemaphoreCreateBinary is referenced by 1 libraries and example projects.

References

LocationText
semphr.h:94
#define vSemaphoreCreateBinary( xSemaphore ) \
cmsis_os.c:759
vSemaphoreCreateBinary(sema);