Index: sys/stack.h =================================================================== RCS file: /usr/repo/src/sys/sys/stack.h,v retrieving revision 1.1 diff -u -p -r1.1 stack.h --- sys/stack.h 3 Aug 2005 04:27:40 -0000 1.1 +++ sys/stack.h 28 Aug 2005 15:59:38 -0000 @@ -47,13 +47,13 @@ void stack_zero(struct stack *); void stack_print(struct stack *); void stack_sbuf_print(struct sbuf *, struct stack *); #ifdef KTR -void stack_ktr(u_int, const char *, int, struct stack *, int); -#define CTRSTACK(m, st, cheap) do { \ +void stack_ktr(u_int, const char *, int, struct stack *, u_int, int); +#define CTRSTACK(m, st, depth, cheap) do { \ if (KTR_COMPILE & (m)) \ - stack_ktr((m), __FILE__, __LINE__, st, cheap); \ + stack_ktr((m), __FILE__, __LINE__, st, depth, cheap); \ } while(0) #else -#define CTRSTACK(m, st, cheap) +#define CTRSTACK(m, st, depth, cheap) #endif /* MD Routine. */ Index: kern/subr_stack.c =================================================================== RCS file: /usr/repo/src/sys/kern/subr_stack.c,v retrieving revision 1.1 diff -u -p -r1.1 subr_stack.c --- kern/subr_stack.c 3 Aug 2005 04:27:39 -0000 1.1 +++ kern/subr_stack.c 28 Aug 2005 16:03:29 -0000 @@ -115,7 +115,8 @@ stack_sbuf_print(struct sbuf *sb, struct #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, 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 Index: kern/kern_lock.c =================================================================== RCS file: /usr/repo/src/sys/kern/kern_lock.c,v retrieving revision 1.91 diff -u -p -r1.91 kern_lock.c --- kern/kern_lock.c 3 Aug 2005 04:59:07 -0000 1.91 +++ kern/kern_lock.c 28 Aug 2005 16:31:21 -0000 @@ -168,7 +168,7 @@ lockmgr(lkp, flags, interlkp, td) { struct stack stack; /* XXX */ stack_save(&stack); - CTRSTACK(KTR_LOCK, &stack, 1); + CTRSTACK(KTR_LOCK, &stack, 0, 1); } #endif