kernhist revision 1.1 1 1.1 mrg # $NetBSD: kernhist,v 1.1 2016/05/11 09:22:55 mrg Exp $
2 1.1 mrg
3 1.1 mrg # by mrg and skrll
4 1.1 mrg
5 1.1 mrg define kernhist
6 1.1 mrg dont-repeat
7 1.1 mrg
8 1.1 mrg set $hist = (struct kern_history *)&$arg0
9 1.1 mrg set $histf = $hist->f
10 1.1 mrg set $histn = $hist->n
11 1.1 mrg set $lcv = $histf
12 1.1 mrg
13 1.1 mrg printf "Kernel history %s has %d entries (next free %d)\n", $hist->name, $histn, $histf
14 1.1 mrg while (1)
15 1.1 mrg set $e = &$hist->e[$lcv]
16 1.1 mrg set $fmt = $e->fmt
17 1.1 mrg
18 1.1 mrg if ($fmt)
19 1.1 mrg printf "%06lx.%06d ", $e->tv.tv_sec, $e->tv.tv_usec
20 1.1 mrg printf "%s#%ld@%d: ", $e->fn, $e->call, $e->cpunum
21 1.1 mrg printf "%s: %lx %lx %lx %lx\n", $fmt, $e->v[0], $e->v[1], $e->v[2], $e->v[3]
22 1.1 mrg set $lcv = ($lcv + 1) % $histn
23 1.1 mrg else
24 1.1 mrg if ($histf == 0)
25 1.1 mrg printf "No entries\n"
26 1.1 mrg loop_break
27 1.1 mrg end
28 1.1 mrg # if fmt is NULL and hist->f isn't zero, skip back to
29 1.1 mrg # the start of the list since it hasn't looped yet.
30 1.1 mrg set $lcv = 0
31 1.1 mrg end
32 1.1 mrg
33 1.1 mrg if ($lcv == $histf)
34 1.1 mrg loop_break
35 1.1 mrg end
36 1.1 mrg end
37 1.1 mrg end
38 1.1 mrg document kernhist
39 1.1 mrg dump a kernel hist. eg, "kernhist usbhist". note that the format
40 1.1 mrg is not expanded due to there being now way to pass a variable format
41 1.1 mrg string to gdb's printf.
42 1.1 mrg end
43