Labor04
semphr.h
Go to the documentation of this file.
1 /*
2  * FreeRTOS Kernel V10.0.0
3  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of
6  * this software and associated documentation files (the "Software"), to deal in
7  * the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9  * the Software, and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software. If you wish to use our Amazon
14  * FreeRTOS name, please do so in a fair use way that does not cause confusion.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
18  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
19  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22  *
23  * http://www.FreeRTOS.org
24  * http://aws.amazon.com/freertos
25  *
26  * 1 tab == 4 spaces!
27  */
28 
29 #ifndef SEMAPHORE_H
30 #define SEMAPHORE_H
31 
32 #ifndef INC_FREERTOS_H
33 #error "include FreeRTOS.h" must appear in source files before "include semphr.h"
34 #endif
35 
36 #include "queue.h"
37 
39 
40 #define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( uint8_t ) 1U )
41 #define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( uint8_t ) 0U )
42 #define semGIVE_BLOCK_TIME ( ( TickType_t ) 0U )
43 
44 
94 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
95 #define vSemaphoreCreateBinary( xSemaphore ) \
96  { \
97  ( xSemaphore ) = xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \
98  if( ( xSemaphore ) != NULL ) \
99  { \
100  ( void ) xSemaphoreGive( ( xSemaphore ) ); \
101  } \
102  }
103 #endif
104 
162 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
163 #define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )
164 #endif
165 
221 #if( configSUPPORT_STATIC_ALLOCATION == 1 )
222 #define xSemaphoreCreateBinaryStatic( pxStaticSemaphore ) xQueueGenericCreateStatic( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, NULL, pxStaticSemaphore, queueQUEUE_TYPE_BINARY_SEMAPHORE )
223 #endif /* configSUPPORT_STATIC_ALLOCATION */
224 
290 #define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueSemaphoreTake( ( xSemaphore ), ( xBlockTime ) )
291 
383 #if( configUSE_RECURSIVE_MUTEXES == 1 )
384 #define xSemaphoreTakeRecursive( xMutex, xBlockTime ) xQueueTakeMutexRecursive( ( xMutex ), ( xBlockTime ) )
385 #endif
386 
448 #define xSemaphoreGive( xSemaphore ) xQueueGenericSend( ( QueueHandle_t ) ( xSemaphore ), NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK )
449 
532 #if( configUSE_RECURSIVE_MUTEXES == 1 )
533 #define xSemaphoreGiveRecursive( xMutex ) xQueueGiveMutexRecursive( ( xMutex ) )
534 #endif
535 
625 #define xSemaphoreGiveFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueGiveFromISR( ( QueueHandle_t ) ( xSemaphore ), ( pxHigherPriorityTaskWoken ) )
626 
659 #define xSemaphoreTakeFromISR( xSemaphore, pxHigherPriorityTaskWoken ) xQueueReceiveFromISR( ( QueueHandle_t ) ( xSemaphore ), NULL, ( pxHigherPriorityTaskWoken ) )
660 
716 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
717 #define xSemaphoreCreateMutex() xQueueCreateMutex( queueQUEUE_TYPE_MUTEX )
718 #endif
719 
777 #if( configSUPPORT_STATIC_ALLOCATION == 1 )
778 #define xSemaphoreCreateMutexStatic( pxMutexBuffer ) xQueueCreateMutexStatic( queueQUEUE_TYPE_MUTEX, ( pxMutexBuffer ) )
779 #endif /* configSUPPORT_STATIC_ALLOCATION */
780 
781 
845 #if( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) )
846 #define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex( queueQUEUE_TYPE_RECURSIVE_MUTEX )
847 #endif
848 
918 #if( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_RECURSIVE_MUTEXES == 1 ) )
919 #define xSemaphoreCreateRecursiveMutexStatic( pxStaticSemaphore ) xQueueCreateMutexStatic( queueQUEUE_TYPE_RECURSIVE_MUTEX, pxStaticSemaphore )
920 #endif /* configSUPPORT_STATIC_ALLOCATION */
921 
998 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
999 #define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( ( uxMaxCount ), ( uxInitialCount ) )
1000 #endif
1001 
1083 #if( configSUPPORT_STATIC_ALLOCATION == 1 )
1084 #define xSemaphoreCreateCountingStatic( uxMaxCount, uxInitialCount, pxSemaphoreBuffer ) xQueueCreateCountingSemaphoreStatic( ( uxMaxCount ), ( uxInitialCount ), ( pxSemaphoreBuffer ) )
1085 #endif /* configSUPPORT_STATIC_ALLOCATION */
1086 
1099 #define vSemaphoreDelete( xSemaphore ) vQueueDelete( ( QueueHandle_t ) ( xSemaphore ) )
1100 
1114 #define xSemaphoreGetMutexHolder( xSemaphore ) xQueueGetMutexHolder( ( xSemaphore ) )
1115 
1125 #define xSemaphoreGetMutexHolderFromISR( xSemaphore ) xQueueGetMutexHolderFromISR( ( xSemaphore ) )
1126 
1137 #define uxSemaphoreGetCount( xSemaphore ) uxQueueMessagesWaiting( ( QueueHandle_t ) ( xSemaphore ) )
1138 
1139 #endif /* SEMAPHORE_H */
1140 
1141 
CLKSRCSEL_Val
#define CLKSRCSEL_Val
Definition: system_LPC17xx.c:297
__CORE_CLK
#define __CORE_CLK
Definition: system_LPC17xx.c:410
CLKOUTCFG_Val
#define CLKOUTCFG_Val
Definition: system_LPC17xx.c:307
OSC_CLK
#define OSC_CLK
Definition: system_LPC17xx.c:396
CCLKCFG_Val
#define CCLKCFG_Val
Definition: system_LPC17xx.c:302
PLL1CFG_Val
#define PLL1CFG_Val
Definition: system_LPC17xx.c:301
PCLKSEL1_Val
#define PCLKSEL1_Val
Definition: system_LPC17xx.c:305
PLL0CFG_Val
#define PLL0CFG_Val
Definition: system_LPC17xx.c:299
USBCLKCFG_Val
#define USBCLKCFG_Val
Definition: system_LPC17xx.c:303
SystemCoreClockUpdate
void SystemCoreClockUpdate(void)
Definition: system_LPC17xx.c:437
SCS_Val
#define SCS_Val
Definition: system_LPC17xx.c:296
SystemInit
void SystemInit(void)
Definition: system_LPC17xx.c:482
SemaphoreHandle_t
QueueHandle_t SemaphoreHandle_t
Definition: semphr.h:38
queue.h
PCLKSEL0_Val
#define PCLKSEL0_Val
Definition: system_LPC17xx.c:304
RTC_CLK
#define RTC_CLK
Definition: system_LPC17xx.c:397
PCONP_Val
#define PCONP_Val
Definition: system_LPC17xx.c:306
IRC_OSC
#define IRC_OSC
Definition: system_LPC17xx.c:398
SystemCoreClock
uint32_t SystemCoreClock
Definition: system_LPC17xx.c:431
QueueHandle_t
void * QueueHandle_t
Definition: queue.h:47
FLASHCFG_Val
#define FLASHCFG_Val
Definition: system_LPC17xx.c:323