Commit 8501a2fb authored by Eric Sandeen's avatar Eric Sandeen Committed by Linus Torvalds

[PATCH] x86_64: x86_64 stack usage debugging

Applies to git & 2.6.17-rc6 after CONFIG_DEBUG_STACKOVERFLOW patch

uses same stack-zeroing mechanism as on i386 to discover maximum stack
excursions.
Signed-off-by: default avatarEric Sandeen <sandeen@sgi.com>
Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 4961f10e
...@@ -42,6 +42,15 @@ config DEBUG_STACKOVERFLOW ...@@ -42,6 +42,15 @@ config DEBUG_STACKOVERFLOW
This option will cause messages to be printed if free stack space This option will cause messages to be printed if free stack space
drops below a certain limit. drops below a certain limit.
config DEBUG_STACK_USAGE
bool "Stack utilization instrumentation"
depends on DEBUG_KERNEL
help
Enables the display of the minimum amount of free stack which each
task has ever had available in the sysrq-T and sysrq-P debug output.
This option will slow down process creation somewhat.
#config X86_REMOTE_DEBUG #config X86_REMOTE_DEBUG
# bool "kgdb debugging stub" # bool "kgdb debugging stub"
......
...@@ -73,8 +73,21 @@ static inline struct thread_info *stack_thread_info(void) ...@@ -73,8 +73,21 @@ static inline struct thread_info *stack_thread_info(void)
} }
/* thread information allocation */ /* thread information allocation */
#ifdef CONFIG_DEBUG_STACK_USAGE
#define alloc_thread_info(tsk) \
({ \
struct thread_info *ret; \
\
ret = ((struct thread_info *) __get_free_pages(GFP_KERNEL,THREAD_ORDER)); \
if (ret) \
memset(ret, 0, THREAD_SIZE); \
ret; \
})
#else
#define alloc_thread_info(tsk) \ #define alloc_thread_info(tsk) \
((struct thread_info *) __get_free_pages(GFP_KERNEL,THREAD_ORDER)) ((struct thread_info *) __get_free_pages(GFP_KERNEL,THREAD_ORDER))
#endif
#define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_ORDER) #define free_thread_info(ti) free_pages((unsigned long) (ti), THREAD_ORDER)
#else /* !__ASSEMBLY__ */ #else /* !__ASSEMBLY__ */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment