|
@@ -109,6 +109,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
|
|
unsigned long *irqstack_end = (unsigned long *)cpu_pda(cpu)->irqstackptr;
|
|
unsigned long *irqstack_end = (unsigned long *)cpu_pda(cpu)->irqstackptr;
|
|
unsigned used = 0;
|
|
unsigned used = 0;
|
|
struct thread_info *tinfo;
|
|
struct thread_info *tinfo;
|
|
|
|
+ int graph = 0;
|
|
|
|
|
|
if (!task)
|
|
if (!task)
|
|
task = current;
|
|
task = current;
|
|
@@ -149,7 +150,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
|
|
break;
|
|
break;
|
|
|
|
|
|
bp = print_context_stack(tinfo, stack, bp, ops,
|
|
bp = print_context_stack(tinfo, stack, bp, ops,
|
|
- data, estack_end);
|
|
|
|
|
|
+ data, estack_end, &graph);
|
|
ops->stack(data, "<EOE>");
|
|
ops->stack(data, "<EOE>");
|
|
/*
|
|
/*
|
|
* We link to the next stack via the
|
|
* We link to the next stack via the
|
|
@@ -168,7 +169,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
|
|
if (ops->stack(data, "IRQ") < 0)
|
|
if (ops->stack(data, "IRQ") < 0)
|
|
break;
|
|
break;
|
|
bp = print_context_stack(tinfo, stack, bp,
|
|
bp = print_context_stack(tinfo, stack, bp,
|
|
- ops, data, irqstack_end);
|
|
|
|
|
|
+ ops, data, irqstack_end, &graph);
|
|
/*
|
|
/*
|
|
* We link to the next stack (which would be
|
|
* We link to the next stack (which would be
|
|
* the process stack normally) the last
|
|
* the process stack normally) the last
|
|
@@ -186,7 +187,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
|
|
/*
|
|
/*
|
|
* This handles the process stack:
|
|
* This handles the process stack:
|
|
*/
|
|
*/
|
|
- bp = print_context_stack(tinfo, stack, bp, ops, data, NULL);
|
|
|
|
|
|
+ bp = print_context_stack(tinfo, stack, bp, ops, data, NULL, &graph);
|
|
put_cpu();
|
|
put_cpu();
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(dump_trace);
|
|
EXPORT_SYMBOL(dump_trace);
|