diff options
| author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2015-12-03 18:44:41 +0100 | 
|---|---|---|
| committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2015-12-03 18:44:41 +0100 | 
| commit | 225b3a3742ab60473503fdb707c6fe941a4bb88f (patch) | |
| tree | f74298b7e16fd96e9e0322143b3302a84c8fcfdd /src/test1/inc/FreeRTOS/Source/include/StackMacros.h | |
| parent | 3ec59138f18c8c622306455390aab69d0cf252a8 (diff) | |
| download | glutte-o-matic-225b3a3742ab60473503fdb707c6fe941a4bb88f.tar.gz glutte-o-matic-225b3a3742ab60473503fdb707c6fe941a4bb88f.tar.bz2 glutte-o-matic-225b3a3742ab60473503fdb707c6fe941a4bb88f.zip  | |
Add test1 example
Diffstat (limited to 'src/test1/inc/FreeRTOS/Source/include/StackMacros.h')
| -rw-r--r-- | src/test1/inc/FreeRTOS/Source/include/StackMacros.h | 180 | 
1 files changed, 180 insertions, 0 deletions
diff --git a/src/test1/inc/FreeRTOS/Source/include/StackMacros.h b/src/test1/inc/FreeRTOS/Source/include/StackMacros.h new file mode 100644 index 0000000..e011d1d --- /dev/null +++ b/src/test1/inc/FreeRTOS/Source/include/StackMacros.h @@ -0,0 +1,180 @@ +/*
 +    FreeRTOS V8.0.1 - Copyright (C) 2014 Real Time Engineers Ltd.
 +    All rights reserved
 +
 +    VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
 +
 +    ***************************************************************************
 +     *                                                                       *
 +     *    FreeRTOS provides completely free yet professionally developed,    *
 +     *    robust, strictly quality controlled, supported, and cross          *
 +     *    platform software that has become a de facto standard.             *
 +     *                                                                       *
 +     *    Help yourself get started quickly and support the FreeRTOS         *
 +     *    project by purchasing a FreeRTOS tutorial book, reference          *
 +     *    manual, or both from: http://www.FreeRTOS.org/Documentation        *
 +     *                                                                       *
 +     *    Thank you!                                                         *
 +     *                                                                       *
 +    ***************************************************************************
 +
 +    This file is part of the FreeRTOS distribution.
 +
 +    FreeRTOS is free software; you can redistribute it and/or modify it under
 +    the terms of the GNU General Public License (version 2) as published by the
 +    Free Software Foundation >>!AND MODIFIED BY!<< the FreeRTOS exception.
 +
 +    >>!   NOTE: The modification to the GPL is included to allow you to     !<<
 +    >>!   distribute a combined work that includes FreeRTOS without being   !<<
 +    >>!   obliged to provide the source code for proprietary components     !<<
 +    >>!   outside of the FreeRTOS kernel.                                   !<<
 +
 +    FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
 +    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 +    FOR A PARTICULAR PURPOSE.  Full license text is available from the following
 +    link: http://www.freertos.org/a00114.html
 +
 +    1 tab == 4 spaces!
 +
 +    ***************************************************************************
 +     *                                                                       *
 +     *    Having a problem?  Start by reading the FAQ "My application does   *
 +     *    not run, what could be wrong?"                                     *
 +     *                                                                       *
 +     *    http://www.FreeRTOS.org/FAQHelp.html                               *
 +     *                                                                       *
 +    ***************************************************************************
 +
 +    http://www.FreeRTOS.org - Documentation, books, training, latest versions,
 +    license and Real Time Engineers Ltd. contact details.
 +
 +    http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
 +    including FreeRTOS+Trace - an indispensable productivity tool, a DOS
 +    compatible FAT file system, and our tiny thread aware UDP/IP stack.
 +
 +    http://www.OpenRTOS.com - Real Time Engineers ltd license FreeRTOS to High
 +    Integrity Systems to sell under the OpenRTOS brand.  Low cost OpenRTOS
 +    licenses offer ticketed support, indemnification and middleware.
 +
 +    http://www.SafeRTOS.com - High Integrity Systems also provide a safety
 +    engineered and independently SIL3 certified version for use in safety and
 +    mission critical applications that require provable dependability.
 +
 +    1 tab == 4 spaces!
 +*/
 +
 +#ifndef STACK_MACROS_H
 +#define STACK_MACROS_H
 +
 +/*
 + * Call the stack overflow hook function if the stack of the task being swapped
 + * out is currently overflowed, or looks like it might have overflowed in the
 + * past.
 + *
 + * Setting configCHECK_FOR_STACK_OVERFLOW to 1 will cause the macro to check
 + * the current stack state only - comparing the current top of stack value to
 + * the stack limit.  Setting configCHECK_FOR_STACK_OVERFLOW to greater than 1
 + * will also cause the last few stack bytes to be checked to ensure the value
 + * to which the bytes were set when the task was created have not been
 + * overwritten.  Note this second test does not guarantee that an overflowed
 + * stack will always be recognised.
 + */
 +
 +/*-----------------------------------------------------------*/
 +
 +#if( configCHECK_FOR_STACK_OVERFLOW == 0 )
 +
 +	/* FreeRTOSConfig.h is not set to check for stack overflows. */
 +	#define taskFIRST_CHECK_FOR_STACK_OVERFLOW()
 +	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()
 +
 +#endif /* configCHECK_FOR_STACK_OVERFLOW == 0 */
 +/*-----------------------------------------------------------*/
 +
 +#if( configCHECK_FOR_STACK_OVERFLOW == 1 )
 +
 +	/* FreeRTOSConfig.h is only set to use the first method of
 +	overflow checking. */
 +	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()
 +
 +#endif
 +/*-----------------------------------------------------------*/
 +
 +#if( ( configCHECK_FOR_STACK_OVERFLOW > 0 ) && ( portSTACK_GROWTH < 0 ) )
 +
 +	/* Only the current stack state is to be checked. */
 +	#define taskFIRST_CHECK_FOR_STACK_OVERFLOW()														\
 +	{																									\
 +		/* Is the currently saved stack pointer within the stack limit? */								\
 +		if( pxCurrentTCB->pxTopOfStack <= pxCurrentTCB->pxStack )										\
 +		{																								\
 +			vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );	\
 +		}																								\
 +	}
 +
 +#endif /* configCHECK_FOR_STACK_OVERFLOW > 0 */
 +/*-----------------------------------------------------------*/
 +
 +#if( ( configCHECK_FOR_STACK_OVERFLOW > 0 ) && ( portSTACK_GROWTH > 0 ) )
 +
 +	/* Only the current stack state is to be checked. */
 +	#define taskFIRST_CHECK_FOR_STACK_OVERFLOW()														\
 +	{																									\
 +																										\
 +		/* Is the currently saved stack pointer within the stack limit? */								\
 +		if( pxCurrentTCB->pxTopOfStack >= pxCurrentTCB->pxEndOfStack )									\
 +		{																								\
 +			vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );	\
 +		}																								\
 +	}
 +
 +#endif /* configCHECK_FOR_STACK_OVERFLOW == 1 */
 +/*-----------------------------------------------------------*/
 +
 +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH < 0 ) )
 +
 +	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()																						\
 +	{																																	\
 +	static const uint8_t ucExpectedStackBytes[] = {	tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };	\
 +																																		\
 +																																		\
 +		/* Has the extremity of the task stack ever been written over? */																\
 +		if( memcmp( ( void * ) pxCurrentTCB->pxStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )			\
 +		{																																\
 +			vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );									\
 +		}																																\
 +	}
 +
 +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */
 +/*-----------------------------------------------------------*/
 +
 +#if( ( configCHECK_FOR_STACK_OVERFLOW > 1 ) && ( portSTACK_GROWTH > 0 ) )
 +
 +	#define taskSECOND_CHECK_FOR_STACK_OVERFLOW()																						\
 +	{																																	\
 +	int8_t *pcEndOfStack = ( int8_t * ) pxCurrentTCB->pxEndOfStack;																		\
 +	static const uint8_t ucExpectedStackBytes[] = {	tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE,		\
 +													tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE, tskSTACK_FILL_BYTE };	\
 +																																		\
 +																																		\
 +		pcEndOfStack -= sizeof( ucExpectedStackBytes );																					\
 +																																		\
 +		/* Has the extremity of the task stack ever been written over? */																\
 +		if( memcmp( ( void * ) pcEndOfStack, ( void * ) ucExpectedStackBytes, sizeof( ucExpectedStackBytes ) ) != 0 )					\
 +		{																																\
 +			vApplicationStackOverflowHook( ( TaskHandle_t ) pxCurrentTCB, pxCurrentTCB->pcTaskName );									\
 +		}																																\
 +	}
 +
 +#endif /* #if( configCHECK_FOR_STACK_OVERFLOW > 1 ) */
 +/*-----------------------------------------------------------*/
 +
 +#endif /* STACK_MACROS_H */
 +
  | 
