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