From ec6b436dc9afec0d39ce52c3e589a4e37bc1facd Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Sat, 24 Jan 2015 06:03:39 -0600 Subject: Add CONFIG_STACK_COLORATION that does the same thing as CONFIG_DEBUG_STACK but without enabling debug. From David Sidrane --- nuttx/arch/avr/src/at90usb/Make.defs | 4 ++++ nuttx/arch/avr/src/atmega/Make.defs | 4 ++++ nuttx/arch/avr/src/avr/up_checkstack.c | 8 +++++--- nuttx/arch/avr/src/avr/up_createstack.c | 4 ++-- nuttx/arch/avr/src/avr/up_dumpstate.c | 6 +++--- nuttx/arch/avr/src/avr/up_usestack.c | 2 +- nuttx/arch/avr/src/avr32/up_createstack.c | 6 +++--- nuttx/arch/avr/src/avr32/up_dumpstate.c | 6 +++--- nuttx/arch/avr/src/avr32/up_usestack.c | 2 +- nuttx/arch/avr/src/common/up_initialize.c | 2 +- 10 files changed, 27 insertions(+), 17 deletions(-) (limited to 'nuttx/arch/avr') diff --git a/nuttx/arch/avr/src/at90usb/Make.defs b/nuttx/arch/avr/src/at90usb/Make.defs index 249f345dc..a7e1526ac 100644 --- a/nuttx/arch/avr/src/at90usb/Make.defs +++ b/nuttx/arch/avr/src/at90usb/Make.defs @@ -58,6 +58,10 @@ ifeq ($(CONFIG_AVR_SPI),y) CMN_CSRCS += up_spi.c endif +ifeq ($(CONFIG_STACK_COLORATION),y) +CMN_CSRCS += up_checkstack.c +endif + ifeq ($(CONFIG_DEBUG_STACK),y) CMN_CSRCS += up_checkstack.c endif diff --git a/nuttx/arch/avr/src/atmega/Make.defs b/nuttx/arch/avr/src/atmega/Make.defs index 73377bd1a..e61ef3ecc 100644 --- a/nuttx/arch/avr/src/atmega/Make.defs +++ b/nuttx/arch/avr/src/atmega/Make.defs @@ -58,6 +58,10 @@ ifeq ($(CONFIG_AVR_SPI),y) CMN_CSRCS += up_spi.c endif +ifeq ($(CONFIG_STACK_COLORATION),y) +CMN_CSRCS += up_checkstack.c +endif + ifeq ($(CONFIG_DEBUG_STACK),y) CMN_CSRCS += up_checkstack.c endif diff --git a/nuttx/arch/avr/src/avr/up_checkstack.c b/nuttx/arch/avr/src/avr/up_checkstack.c index dd24e0c75..da7697be4 100644 --- a/nuttx/arch/avr/src/avr/up_checkstack.c +++ b/nuttx/arch/avr/src/avr/up_checkstack.c @@ -57,7 +57,7 @@ # undef CONFIG_DEBUG_STACK #endif -#if defined(CONFIG_DEBUG_STACK) +#if defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION) /**************************************************************************** * Public Data @@ -67,6 +67,8 @@ * Private Functions ****************************************************************************/ +static size_t do_stackcheck(uintptr_t alloc, size_t size); + /**************************************************************************** * Name: do_stackcheck * @@ -84,7 +86,7 @@ * ****************************************************************************/ -size_t do_stackcheck(uintptr_t alloc, size_t size) +static size_t do_stackcheck(uintptr_t alloc, size_t size) { FAR uint8_t *ptr; size_t mark; @@ -197,4 +199,4 @@ size_t up_check_intstack_remain(void) } #endif -#endif /* CONFIG_DEBUG_STACK */ +#endif /* CONFIG_DEBUG_STACK || CONFIG_STACK_COLORATION */ diff --git a/nuttx/arch/avr/src/avr/up_createstack.c b/nuttx/arch/avr/src/avr/up_createstack.c index 4b7df816b..ff3d26d01 100644 --- a/nuttx/arch/avr/src/avr/up_createstack.c +++ b/nuttx/arch/avr/src/avr/up_createstack.c @@ -120,7 +120,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype) * then create a zeroed stack to make stack dumps easier to trace. */ -#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK) +#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) tcb->stack_alloc_ptr = (uint32_t *)kumm_zalloc(stack_size); #else tcb->stack_alloc_ptr = (uint32_t *)kumm_malloc(stack_size); @@ -147,7 +147,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype) * water marks. */ -#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK) +#if (defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)) memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size); #endif diff --git a/nuttx/arch/avr/src/avr/up_dumpstate.c b/nuttx/arch/avr/src/avr/up_dumpstate.c index 78a8c50bf..1049c1fac 100644 --- a/nuttx/arch/avr/src/avr/up_dumpstate.c +++ b/nuttx/arch/avr/src/avr/up_dumpstate.c @@ -208,7 +208,7 @@ void up_dumpstate(void) lldbg("IRQ stack:\n"); lldbg(" base: %04x\n", istackbase); lldbg(" size: %04x\n", istacksize); -#ifdef CONFIG_DEBUG_STACK +#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION) lldbg(" used: %08x\n", up_check_intstack()); #endif @@ -237,7 +237,7 @@ void up_dumpstate(void) lldbg("User stack:\n"); lldbg(" base: %04x\n", ustackbase); lldbg(" size: %04x\n", ustacksize); -#ifdef CONFIG_DEBUG_STACK +#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION) lldbg(" used: %08x\n", up_check_tcbstack(rtcb)); #endif @@ -253,7 +253,7 @@ void up_dumpstate(void) lldbg("sp: %04x\n", sp); lldbg("stack base: %04x\n", ustackbase); lldbg("stack size: %04x\n", ustacksize); -#ifdef CONFIG_DEBUG_STACK +#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION) lldbg("stack used: %08x\n", up_check_tcbstack(rtcb)); #endif diff --git a/nuttx/arch/avr/src/avr/up_usestack.c b/nuttx/arch/avr/src/avr/up_usestack.c index cb19ed241..7113971a4 100644 --- a/nuttx/arch/avr/src/avr/up_usestack.c +++ b/nuttx/arch/avr/src/avr/up_usestack.c @@ -111,7 +111,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size) * that we can use later to test for high water marks. */ -#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK) +#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION)) memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size); #endif diff --git a/nuttx/arch/avr/src/avr32/up_createstack.c b/nuttx/arch/avr/src/avr32/up_createstack.c index 1d840819b..be5e37e7e 100644 --- a/nuttx/arch/avr/src/avr32/up_createstack.c +++ b/nuttx/arch/avr/src/avr32/up_createstack.c @@ -129,7 +129,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype) if (ttype == TCB_FLAG_TTYPE_KERNEL) { -#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK) +#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) tcb->stack_alloc_ptr = (uint32_t *)kmm_zalloc(stack_size); #else tcb->stack_alloc_ptr = (uint32_t *)kmm_malloc(stack_size); @@ -140,7 +140,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype) { /* Use the user-space allocator if this is a task or pthread */ -#if defined(CONFIG_DEBUG) && !defined(CONFIG_DEBUG_STACK) +#if defined(CONFIG_DEBUG) && !(defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) tcb->stack_alloc_ptr = (uint32_t *)kumm_zalloc(stack_size); #else tcb->stack_alloc_ptr = (uint32_t *)kumm_malloc(stack_size); @@ -169,7 +169,7 @@ int up_create_stack(FAR struct tcb_s *tcb, size_t stack_size, uint8_t ttype) * water marks. */ -#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK) +#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION) memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size); #endif diff --git a/nuttx/arch/avr/src/avr32/up_dumpstate.c b/nuttx/arch/avr/src/avr32/up_dumpstate.c index 55c4a7cba..6884a037d 100644 --- a/nuttx/arch/avr/src/avr32/up_dumpstate.c +++ b/nuttx/arch/avr/src/avr32/up_dumpstate.c @@ -185,7 +185,7 @@ void up_dumpstate(void) lldbg("IRQ stack:\n"); lldbg(" base: %08x\n", istackbase); lldbg(" size: %08x\n", istacksize); -#ifdef CONFIG_DEBUG_STACK +#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION) lldbg(" used: %08x\n", up_check_intstack()); #endif @@ -214,7 +214,7 @@ void up_dumpstate(void) lldbg("User stack:\n"); lldbg(" base: %08x\n", ustackbase); lldbg(" size: %08x\n", ustacksize); -#ifdef CONFIG_DEBUG_STACK +#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION) lldbg(" used: %08x\n", up_check_tcbstack(rtcb)); #endif @@ -230,7 +230,7 @@ void up_dumpstate(void) lldbg("sp: %08x\n", sp); lldbg("stack base: %08x\n", ustackbase); lldbg("stack size: %08x\n", ustacksize); -#ifdef CONFIG_DEBUG_STACK +#if defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION) lldbg("stack used: %08x\n", up_check_tcbstack(rtcb)); #endif diff --git a/nuttx/arch/avr/src/avr32/up_usestack.c b/nuttx/arch/avr/src/avr32/up_usestack.c index f606ff385..5c43c54d6 100644 --- a/nuttx/arch/avr/src/avr32/up_usestack.c +++ b/nuttx/arch/avr/src/avr32/up_usestack.c @@ -111,7 +111,7 @@ int up_use_stack(struct tcb_s *tcb, void *stack, size_t stack_size) * that we can use later to test for high water marks. */ -#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK) +#if (defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)) || defined(CONFIG_STACK_COLORATION) memset(tcb->stack_alloc_ptr, STACK_COLOR, stack_size); #endif diff --git a/nuttx/arch/avr/src/common/up_initialize.c b/nuttx/arch/avr/src/common/up_initialize.c index 630e5d405..92297d066 100644 --- a/nuttx/arch/avr/src/common/up_initialize.c +++ b/nuttx/arch/avr/src/common/up_initialize.c @@ -141,7 +141,7 @@ static void up_calibratedelay(void) * ****************************************************************************/ -#if defined(CONFIG_DEBUG_STACK) && CONFIG_ARCH_INTERRUPTSTACK > 3 +#if (defined(CONFIG_DEBUG_STACK) || defined(CONFIG_STACK_COLORATION)) && CONFIG_ARCH_INTERRUPTSTACK > 3 static inline void up_color_intstack(void) { uint8_t *ptr = (uint8_t *)&g_intstackalloc; -- cgit v1.2.3