aboutsummaryrefslogtreecommitdiff
path: root/nuttx/arch/arm/src/common/up_checkstack.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/arch/arm/src/common/up_checkstack.c')
-rw-r--r--nuttx/arch/arm/src/common/up_checkstack.c147
1 files changed, 0 insertions, 147 deletions
diff --git a/nuttx/arch/arm/src/common/up_checkstack.c b/nuttx/arch/arm/src/common/up_checkstack.c
deleted file mode 100644
index ac8d9e7b9..000000000
--- a/nuttx/arch/arm/src/common/up_checkstack.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
- * arch/arm/src/common/up_checkstack.c
- *
- * Copyright (C) 2011 Gregory Nutt. All rights reserved.
- * Author: Gregory Nutt <gnutt@nuttx.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- * used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- ****************************************************************************/
-
-/****************************************************************************
- * Included Files
- ****************************************************************************/
-
-#include <nuttx/config.h>
-
-#include <sys/types.h>
-#include <stdint.h>
-#include <sched.h>
-#include <debug.h>
-
-#include <nuttx/arch.h>
-
-#include "os_internal.h"
-
-#if defined(CONFIG_DEBUG) && defined(CONFIG_DEBUG_STACK)
-
-/****************************************************************************
- * Private Types
- ****************************************************************************/
-
-/****************************************************************************
- * Private Function Prototypes
- ****************************************************************************/
-
-/****************************************************************************
- * Global Functions
- ****************************************************************************/
-
-/****************************************************************************
- * Name: up_check_stack
- *
- * Description:
- * Determine (approximately) how much stack has been used be searching the
- * stack memory for a high water mark. That is, the deepest level of the
- * stack that clobbered some recognizable marker in the stack memory.
- *
- * Input Parameters:
- * None
- *
- * Returned value:
- * The estimated amount of stack space used.
- *
- ****************************************************************************/
-
-size_t up_check_tcbstack(FAR _TCB *tcb)
-{
- FAR uint32_t *ptr;
- size_t mark;
-
- /* The ARM uses a push-down stack: the stack grows toward lower addresses
- * in memory. We need to start at the lowest address in the stack memory
- * allocation and search to higher addresses. The first word we encounter
- * that does not have the magic value is the high water mark.
- */
-
- for (ptr = (FAR uint32_t *)tcb->stack_alloc_ptr, mark = tcb->adj_stack_size/4;
- *ptr == 0xDEADBEEF && mark > 0;
- ptr++, mark--);
-
- /* If the stack is completely used, then this might mean that the stack
- * overflowed from above (meaning that the stack is too small), or may
- * have been overwritten from below meaning that some other stack or data
- * structure overflowed.
- *
- * If you see returned values saying that the entire stack is being used
- * then enable the following logic to see it there are unused areas in the
- * middle of the stack.
- */
-
-#if 0
- if (mark + 16 > tcb->adj_stack_size/4)
- {
- int i, j;
-
- ptr = (FAR uint32_t *)tcb->stack_alloc_ptr;
- for (i = 0; i < tcb->adj_stack_size; i += 4*64)
- {
- for (j = 0; j < 64; j++)
- {
- int ch;
- if (*ptr++ == 0xDEADBEEF)
- {
- ch = '.';
- }
- else
- {
- ch = 'X';
- }
- up_putc(ch);
- }
- up_putc('\n');
- }
- }
-#endif
-
- /* Return our guess about how much stack space was used */
-
- return mark*4;
-}
-
-size_t up_check_stack(void)
-{
- return up_check_tcbstack((FAR _TCB*)g_readytorun.head);
-}
-
-size_t up_check_stack_remain(void)
-{
- return ((FAR _TCB*)g_readytorun.head)->adj_stack_size - up_check_tcbstack((FAR _TCB*)g_readytorun.head);
-}
-
-#endif /* CONFIG_DEBUG && CONFIG_DEBUG_STACK */