Go to the documentation of this file.
   29 #ifndef STACK_MACROS_H 
   30 #define STACK_MACROS_H 
   48 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH < 0 ) ) 
   51 #define taskCHECK_FOR_STACK_OVERFLOW()                                                              \ 
   54         if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack )                                       \ 
   56             vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );   \ 
   63 #if( ( configCHECK_FOR_STACK_OVERFLOW == 1 ) && ( portSTACK_GROWTH > 0 ) ) 
   66 #define taskCHECK_FOR_STACK_OVERFLOW()                                                              \ 
   70         if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack )                                  \ 
   72             vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );   \ 
   79 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) ) 
   81 #define taskCHECK_FOR_STACK_OVERFLOW()                                                              \ 
   83         const uint32_t * const pulStack = ( uint32_t * ) pxCurrentTCB->pxStack;                         \ 
   84         const uint32_t ulCheckValue = ( uint32_t ) 0xa5a5a5a5;                                          \ 
   86         if( ( pulStack[ 0 ] != ulCheckValue ) ||                                                \ 
   87             ( pulStack[ 1 ] != ulCheckValue ) ||                                                \ 
   88             ( pulStack[ 2 ] != ulCheckValue ) ||                                                \ 
   89             ( pulStack[ 3 ] != ulCheckValue ) )                                             \ 
   91             vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );   \ 
   98 #if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) ) 
  100 #define taskCHECK_FOR_STACK_OVERFLOW()                                                                                              \ 
  102     int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack;                                                                     \ 
  103     static const uint8_t ucExpectedStackBytes[] = { 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,     \ 
  107                                                     tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };   \ 
  110         pcEndOfStack -= sizeof( ucExpectedStackBytes );                                                                                 \ 
  113         if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )                   \ 
  115             vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );                                   \ 
  123 #ifndef taskCHECK_FOR_STACK_OVERFLOW 
  124 #define taskCHECK_FOR_STACK_OVERFLOW()