1# $NetBSD: msgbuf,v 1.2 2001/01/11 05:31:02 deberg Exp $ 2# 3# Copyright (c) 2000 The NetBSD Foundation, Inc. 4# All rights reserved. 5# 6# This code is derived from software contributed to The NetBSD Foundation 7# by John A. Hawkinson 8# 9# Redistribution and use in source and binary forms, with or without 10# modification, are permitted provided that the following conditions 11# are met: 12# 1. Redistributions of source code must retain the above copyright 13# notice, this list of conditions and the following disclaimer. 14# 2. Redistributions in binary form must reproduce the above copyright 15# notice, this list of conditions and the following disclaimer in the 16# documentation and/or other materials provided with the distribution. 17# 3. All advertising materials mentioning features or use of this software 18# must display the following acknowledgement: 19# This product includes software developed by the NetBSD 20# Foundation, Inc. and its contributors. 21# 4. Neither the name of The NetBSD Foundation nor the names of its 22# contributors may be used to endorse or promote products derived 23# from this software without specific prior written permission. 24# 25# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 26# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 27# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 29# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 30# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 31# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 32# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 33# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 34# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35# POSSIBILITY OF SUCH DAMAGE. 36# 37 38define msgbuf 39 set $bufx=*(long*)((char *)msgbufp+1*sizeof(long)) 40 set $bufr=*(long*)((char *)msgbufp+2*sizeof(long)) 41 set $bufs=*(long*)((char *)msgbufp+3*sizeof(long)) 42 43 printf "msgbufp %#x: bufx %d bufr %d bufs %d\n", msgbufp, $bufx, $bufr, $bufs 44 45# Dump the unread section 46# set $l = $bufx - $bufr 47# if ($l < 0) 48# set $l = $bufs - $bufr 49# end 50# set $p = (long)msgbufp+4*sizeof(long)+$bufr 51# set print elements $l 52# x/s $p 53 54# Dump the whole thing 55# Presume each section is null-terminated. Possibly bad presumption? 56 set $p = (long)msgbufp+4*sizeof(long)+$bufx 57 set $l = $bufs - $bufx 58 set print elements $l 59 printf "Dumping %#x length %d\n", $p, $l 60 # XXX (unsupported by gdb): printf "%.*s\n", $l, $p 61 printf "%s\n", $p 62 set $p = (long)msgbufp+4*sizeof(long) 63 set $l = $bufx 64 set print elements $l 65 printf "Dumping %#x length %d\n", $p, $l 66 # XXX (unsupported by gdb): printf "%.*s\n\n", $l, $p 67 printf "%s\n\n", $p 68end 69 70document msgbuf 71 Dump the kernel message buffer. 72end 73