NetBSD/sys/gdbscripts/kernhist

43 lines
1.0 KiB
Plaintext

# $NetBSD: kernhist,v 1.2 2016/05/12 00:35:10 mrg Exp $
# by mrg and skrll
define kernhist
dont-repeat
set $hist = (struct kern_history *)&$arg0
set $histf = $hist->f
set $histn = $hist->n
set $lcv = $histf
printf "Kernel history %s has %d entries (next free %d)\n", $hist->name, $histn, $histf
while (1)
set $e = $hist->e[$lcv]
set $fmt = $e.fmt
if ($fmt)
printf "%06lx.%06d ", $e.tv.tv_sec, $e.tv.tv_usec
printf "%s#%ld@%d: ", $e.fn, $e.call, $e.cpunum
printf "%s: %lx %lx %lx %lx\n", $fmt, $e.v[0], $e.v[1], $e.v[2], $e.v[3]
set $lcv = ($lcv + 1) % $histn
else
if ($histf == 0)
printf "No entries\n"
loop_break
end
# if fmt is NULL and hist->f isn't zero, skip back to
# the start of the list since it hasn't looped yet.
set $lcv = 0
end
if ($lcv == $histf)
loop_break
end
end
end
document kernhist
dump a kernel hist. eg, "kernhist usbhist". note that the format
is not expanded due to there being now way to pass a variable format
string to gdb's printf.
end