kernhist revision 1.1
11.1Smrg# $NetBSD: kernhist,v 1.1 2016/05/11 09:22:55 mrg Exp $ 21.1Smrg 31.1Smrg# by mrg and skrll 41.1Smrg 51.1Smrgdefine kernhist 61.1Smrg dont-repeat 71.1Smrg 81.1Smrg set $hist = (struct kern_history *)&$arg0 91.1Smrg set $histf = $hist->f 101.1Smrg set $histn = $hist->n 111.1Smrg set $lcv = $histf 121.1Smrg 131.1Smrg printf "Kernel history %s has %d entries (next free %d)\n", $hist->name, $histn, $histf 141.1Smrg while (1) 151.1Smrg set $e = &$hist->e[$lcv] 161.1Smrg set $fmt = $e->fmt 171.1Smrg 181.1Smrg if ($fmt) 191.1Smrg printf "%06lx.%06d ", $e->tv.tv_sec, $e->tv.tv_usec 201.1Smrg printf "%s#%ld@%d: ", $e->fn, $e->call, $e->cpunum 211.1Smrg printf "%s: %lx %lx %lx %lx\n", $fmt, $e->v[0], $e->v[1], $e->v[2], $e->v[3] 221.1Smrg set $lcv = ($lcv + 1) % $histn 231.1Smrg else 241.1Smrg if ($histf == 0) 251.1Smrg printf "No entries\n" 261.1Smrg loop_break 271.1Smrg end 281.1Smrg # if fmt is NULL and hist->f isn't zero, skip back to 291.1Smrg # the start of the list since it hasn't looped yet. 301.1Smrg set $lcv = 0 311.1Smrg end 321.1Smrg 331.1Smrg if ($lcv == $histf) 341.1Smrg loop_break 351.1Smrg end 361.1Smrg end 371.1Smrgend 381.1Smrgdocument kernhist 391.1Smrgdump a kernel hist. eg, "kernhist usbhist". note that the format 401.1Smrgis not expanded due to there being now way to pass a variable format 411.1Smrgstring to gdb's printf. 421.1Smrgend 43