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