 |
mTower
|
28 #ifndef STACK_MACROS_H 29 #define STACK_MACROS_H 32 #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. 51 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) 54 #define taskCHECK_FOR_STACK_OVERFLOW() \ 57 if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ 59 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 66 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) 69 #define taskCHECK_FOR_STACK_OVERFLOW() \ 73 if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \ 75 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 82 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) 84 #define taskCHECK_FOR_STACK_OVERFLOW() \ 86 const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \ 87 const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \ 89 if( ( pulStack[ 0 ] != ulCheckValue ) || \ 90 ( pulStack[ 1 ] != ulCheckValue ) || \ 91 ( pulStack[ 2 ] != ulCheckValue ) || \ 92 ( pulStack[ 3 ] != ulCheckValue ) ) \ 94 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 101 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) 103 #define taskCHECK_FOR_STACK_OVERFLOW() \ 105 int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \ 106 static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ 107 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 }; \ 113 pcEndOfStack -= sizeof( ucExpectedStackBytes ); \ 116 if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ 118 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 126 #ifndef taskCHECK_FOR_STACK_OVERFLOW 127 #define taskCHECK_FOR_STACK_OVERFLOW()