Go to the documentation of this file.
29 #ifndef STACK_MACROS_H
30 #define STACK_MACROS_H
33 #warning The name of this file has changed to stack_macros.h. Please update your code accordingly. This source file (which has the original name) will be removed in future released.
52 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) )
55 #define taskCHECK_FOR_STACK_OVERFLOW() \
58 if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \
60 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \
67 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) )
70 #define taskCHECK_FOR_STACK_OVERFLOW() \
74 if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \
76 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \
83 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )
85 #define taskCHECK_FOR_STACK_OVERFLOW() \
87 const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \
88 const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \
90 if( ( pulStack[ 0 ] != ulCheckValue ) || \
91 ( pulStack[ 1 ] != ulCheckValue ) || \
92 ( pulStack[ 2 ] != ulCheckValue ) || \
93 ( pulStack[ 3 ] != ulCheckValue ) ) \
95 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \
102 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) )
104 #define taskCHECK_FOR_STACK_OVERFLOW() \
106 int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \
107 static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \
108 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \
109 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \
110 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \
111 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE }; \
114 pcEndOfStack -= sizeof( ucExpectedStackBytes ); \
117 if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \
119 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \
127 #ifndef taskCHECK_FOR_STACK_OVERFLOW
128 #define taskCHECK_FOR_STACK_OVERFLOW()