summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_stack.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/subr_stack.c')
-rw-r--r--sys/kern/subr_stack.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/kern/subr_stack.c b/sys/kern/subr_stack.c
index 9b2be7b..47dd205 100644
--- a/sys/kern/subr_stack.c
+++ b/sys/kern/subr_stack.c
@@ -115,7 +115,8 @@ stack_sbuf_print(struct sbuf *sb, struct stack *st)
#ifdef KTR
void
-stack_ktr(u_int mask, const char *file, int line, struct stack *st, int cheap)
+stack_ktr(u_int mask, const char *file, int line, struct stack *st, u_int depth,
+ int cheap)
{
const char *name;
long offset;
@@ -136,12 +137,15 @@ stack_ktr(u_int mask, const char *file, int line, struct stack *st, int cheap)
ktr_tracepoint(mask, file, line, "#2 %p %p %p %p %p %p",
st->pcs[12], st->pcs[13], st->pcs[14], st->pcs[15],
st->pcs[16], st->pcs[17]);
- } else
- for (i = 0; i < st->depth; i++) {
+ } else {
+ if (depth == 0 || st->depth < depth)
+ depth = st->depth;
+ for (i = 0; i < depth; i++) {
stack_symbol(st->pcs[i], &name, &offset);
ktr_tracepoint(mask, file, line, "#%d %p at %s+%#lx",
i, st->pcs[i], (u_long)name, offset, 0, 0);
}
+ }
}
#endif
OpenPOWER on IntegriCloud