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