 |
mTower
|
28 #ifndef STACK_MACROS_H 29 #define STACK_MACROS_H 47 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) 50 #define taskCHECK_FOR_STACK_OVERFLOW() \ 53 if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack ) \ 55 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 62 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) 65 #define taskCHECK_FOR_STACK_OVERFLOW() \ 69 if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack ) \ 71 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 78 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) 80 #define taskCHECK_FOR_STACK_OVERFLOW() \ 82 const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack; \ 83 const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5; \ 85 if( ( pulStack[ 0 ] != ulCheckValue ) || \ 86 ( pulStack[ 1 ] != ulCheckValue ) || \ 87 ( pulStack[ 2 ] != ulCheckValue ) || \ 88 ( pulStack[ 3 ] != ulCheckValue ) ) \ 90 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 97 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) 99 #define taskCHECK_FOR_STACK_OVERFLOW() \ 101 int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack; \ 102 static const uint8_t ucExpectedStackBytes[] = { tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ 103 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ 104 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ 105 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, \ 106 tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE }; \ 109 pcEndOfStack -= sizeof( ucExpectedStackBytes ); \ 112 if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 ) \ 114 vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName ); \ 122 #ifndef taskCHECK_FOR_STACK_OVERFLOW 123 #define taskCHECK_FOR_STACK_OVERFLOW()