x86: Unify save_stack_address() and save_stack_address_nosched()
Cleanup. Factor the common code in save_stack_address() and save_stack_address_nosched(). Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: Roland McGrath <roland@redhat.com> Cc: Arjan van de Ven <arjan@linux.intel.com> Cc: Vegard Nossum <vegard.nossum@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> LKML-Reference: <20100603193243.GA31534@redhat.com> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
This commit is contained in:
parent
147ec4d236
commit
018378c55b
1 changed files with 10 additions and 14 deletions
|
@ -23,13 +23,16 @@ static int save_stack_stack(void *data, char *name)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void save_stack_address(void *data, unsigned long addr, int reliable)
|
static void
|
||||||
|
__save_stack_address(void *data, unsigned long addr, bool reliable, bool nosched)
|
||||||
{
|
{
|
||||||
struct stack_trace *trace = data;
|
struct stack_trace *trace = data;
|
||||||
#ifdef CONFIG_FRAME_POINTER
|
#ifdef CONFIG_FRAME_POINTER
|
||||||
if (!reliable)
|
if (!reliable)
|
||||||
return;
|
return;
|
||||||
#endif
|
#endif
|
||||||
|
if (nosched && in_sched_functions(addr))
|
||||||
|
return;
|
||||||
if (trace->skip > 0) {
|
if (trace->skip > 0) {
|
||||||
trace->skip--;
|
trace->skip--;
|
||||||
return;
|
return;
|
||||||
|
@ -38,22 +41,15 @@ static void save_stack_address(void *data, unsigned long addr, int reliable)
|
||||||
trace->entries[trace->nr_entries++] = addr;
|
trace->entries[trace->nr_entries++] = addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void save_stack_address(void *data, unsigned long addr, int reliable)
|
||||||
|
{
|
||||||
|
return __save_stack_address(data, addr, reliable, false);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
save_stack_address_nosched(void *data, unsigned long addr, int reliable)
|
save_stack_address_nosched(void *data, unsigned long addr, int reliable)
|
||||||
{
|
{
|
||||||
struct stack_trace *trace = data;
|
return __save_stack_address(data, addr, reliable, true);
|
||||||
#ifdef CONFIG_FRAME_POINTER
|
|
||||||
if (!reliable)
|
|
||||||
return;
|
|
||||||
#endif
|
|
||||||
if (in_sched_functions(addr))
|
|
||||||
return;
|
|
||||||
if (trace->skip > 0) {
|
|
||||||
trace->skip--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (trace->nr_entries < trace->max_entries)
|
|
||||||
trace->entries[trace->nr_entries++] = addr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct stacktrace_ops save_stack_ops = {
|
static const struct stacktrace_ops save_stack_ops = {
|
||||||
|
|
Loading…
Add table
Reference in a new issue