Deleted Added
full compact
29c29
< * $FreeBSD: head/sys/kern/kern_ktr.c 69880 2000-12-12 00:43:50Z jhb $
---
> * $FreeBSD: head/sys/kern/kern_ktr.c 70035 2000-12-15 00:01:20Z jhb $
36a37
> #include "opt_ddb.h"
38a40
> #include <sys/param.h>
39a42
> #include <sys/cons.h>
48a52,53
> #include <ddb/ddb.h>
>
154a160,251
>
> #ifdef DDB
>
> struct tstate {
> int cur;
> int first;
> };
> static struct tstate tstate;
> static int db_ktr_verbose;
> static int db_mach_vtrace(void);
>
> DB_COMMAND(tbuf, db_mach_tbuf)
> {
>
> tstate.cur = (ktr_idx - 1) & (KTR_ENTRIES - 1);
> tstate.first = -1;
> if (strcmp(modif, "v") == 0)
> db_ktr_verbose = 1;
> else
> db_ktr_verbose = 0;
> db_mach_vtrace();
>
> return;
> }
>
> DB_COMMAND(tall, db_mach_tall)
> {
> int c;
>
> db_mach_tbuf(addr, have_addr, count, modif);
> while (db_mach_vtrace()) {
> c = cncheckc();
> if (c != -1)
> break;
> }
>
> return;
> }
>
> DB_COMMAND(tnext, db_mach_tnext)
> {
>
> if (strcmp(modif, "v") == 0)
> db_ktr_verbose ^= 1;
> db_mach_vtrace();
> }
>
> static int
> db_mach_vtrace(void)
> {
> struct ktr_entry *kp;
>
> if (tstate.cur == tstate.first) {
> db_printf("--- End of trace buffer ---\n");
> return (0);
> }
> kp = &ktr_buf[tstate.cur];
>
> /* Skip over unused entries. */
> #ifdef KTR_EXTEND
> if (kp->ktr_desc[0] != '\0') {
> #else
> if (kp->ktr_desc != NULL) {
> #endif
> db_printf("%d: ", tstate.cur);
> if (db_ktr_verbose)
> db_printf("%4ld.%06ld ", kp->ktr_tv.tv_sec,
> kp->ktr_tv.tv_nsec / 1000);
> #ifdef KTR_EXTEND
> #ifdef SMP
> db_printf("cpu%d ", kp->ktr_cpu);
> #endif
> if (db_ktr_verbose)
> db_printf("%s.%d\t", kp->ktr_filename, kp->ktr_line);
> db_printf("%s", kp->ktr_desc);
> #else
> db_printf(kp->ktr_desc, kp->ktr_parm1, kp->ktr_parm2,
> kp->ktr_parm3, kp->ktr_parm4, kp->ktr_parm5);
> #endif
> db_printf("\n");
> }
>
> if (tstate.first == -1)
> tstate.first = tstate.cur;
>
> if (--tstate.cur < 0)
> tstate.cur = KTR_ENTRIES - 1;
>
> return (1);
> }
>
> #endif /* DDB */