1*27dfcf53Smrg# $NetBSD: kernhist,v 1.2 2016/05/12 00:35:10 mrg Exp $ 297e7e795Smrg 397e7e795Smrg# by mrg and skrll 497e7e795Smrg 597e7e795Smrgdefine kernhist 697e7e795Smrg dont-repeat 797e7e795Smrg 897e7e795Smrg set $hist = (struct kern_history *)&$arg0 997e7e795Smrg set $histf = $hist->f 1097e7e795Smrg set $histn = $hist->n 1197e7e795Smrg set $lcv = $histf 1297e7e795Smrg 1397e7e795Smrg printf "Kernel history %s has %d entries (next free %d)\n", $hist->name, $histn, $histf 1497e7e795Smrg while (1) 15*27dfcf53Smrg set $e = $hist->e[$lcv] 16*27dfcf53Smrg set $fmt = $e.fmt 1797e7e795Smrg 1897e7e795Smrg if ($fmt) 19*27dfcf53Smrg printf "%06lx.%06d ", $e.tv.tv_sec, $e.tv.tv_usec 20*27dfcf53Smrg printf "%s#%ld@%d: ", $e.fn, $e.call, $e.cpunum 21*27dfcf53Smrg printf "%s: %lx %lx %lx %lx\n", $fmt, $e.v[0], $e.v[1], $e.v[2], $e.v[3] 2297e7e795Smrg set $lcv = ($lcv + 1) % $histn 2397e7e795Smrg else 2497e7e795Smrg if ($histf == 0) 2597e7e795Smrg printf "No entries\n" 2697e7e795Smrg loop_break 2797e7e795Smrg end 2897e7e795Smrg # if fmt is NULL and hist->f isn't zero, skip back to 2997e7e795Smrg # the start of the list since it hasn't looped yet. 3097e7e795Smrg set $lcv = 0 3197e7e795Smrg end 3297e7e795Smrg 3397e7e795Smrg if ($lcv == $histf) 3497e7e795Smrg loop_break 3597e7e795Smrg end 3697e7e795Smrg end 3797e7e795Smrgend 3897e7e795Smrgdocument kernhist 3997e7e795Smrgdump a kernel hist. eg, "kernhist usbhist". note that the format 4097e7e795Smrgis not expanded due to there being now way to pass a variable format 4197e7e795Smrgstring to gdb's printf. 4297e7e795Smrgend 43