parisc,metag: Implement CONFIG_DEBUG_STACK_USAGE option
On parisc and metag the stack grows upwards, so for those we need to scan the stack downwards in order to calculate how much stack a process has used. Tested on a 64bit parisc kernel. Signed-off-by: Helge Deller <deller@gmx.de>
This commit is contained in:
parent
56649be9e6
commit
6c31da3464
|
@ -2870,10 +2870,18 @@ static inline unsigned long stack_not_used(struct task_struct *p)
|
||||||
unsigned long *n = end_of_stack(p);
|
unsigned long *n = end_of_stack(p);
|
||||||
|
|
||||||
do { /* Skip over canary */
|
do { /* Skip over canary */
|
||||||
|
# ifdef CONFIG_STACK_GROWSUP
|
||||||
|
n--;
|
||||||
|
# else
|
||||||
n++;
|
n++;
|
||||||
|
# endif
|
||||||
} while (!*n);
|
} while (!*n);
|
||||||
|
|
||||||
|
# ifdef CONFIG_STACK_GROWSUP
|
||||||
|
return (unsigned long)end_of_stack(p) - (unsigned long)n;
|
||||||
|
# else
|
||||||
return (unsigned long)n - (unsigned long)end_of_stack(p);
|
return (unsigned long)n - (unsigned long)end_of_stack(p);
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
extern void set_task_stack_end_magic(struct task_struct *tsk);
|
extern void set_task_stack_end_magic(struct task_struct *tsk);
|
||||||
|
|
|
@ -558,7 +558,7 @@ config DEBUG_KMEMLEAK_DEFAULT_OFF
|
||||||
|
|
||||||
config DEBUG_STACK_USAGE
|
config DEBUG_STACK_USAGE
|
||||||
bool "Stack utilization instrumentation"
|
bool "Stack utilization instrumentation"
|
||||||
depends on DEBUG_KERNEL && !IA64 && !PARISC && !METAG
|
depends on DEBUG_KERNEL && !IA64
|
||||||
help
|
help
|
||||||
Enables the display of the minimum amount of free stack which each
|
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.
|
task has ever had available in the sysrq-T and sysrq-P debug output.
|
||||||
|
|
Loading…
Reference in New Issue