+# Count the number of buffers in the buffer cache for which
+# bp->b_flags & $bufcount_match is non-0.
+#
+# @(#)bdump 7.1 (Berkeley) %G%
+
+set $bufcount_match=0x020000
+define bufcount
+
+ set $i = 0
+ set $num = 0
+
+ while ($i < 512)
+
+ set $bp = bufhash[$i].b_forw
+ while ($bp != bufhash[$i].b_back)
+ if ($bp->b_flags & $bufcount_match)
+ set $num++
+ end
+ set $bp = $bp->b_forw
+ end
+ # printf "bucket: %d cumulative %d\n", $i, $num
+ set $i++
+ end
+ printf "Number of buffers with flags & %x in hash table: %d\n", $bufcount_match, $num
+end
+
+# Dump the entire buffer cache.
+
+define bufdump
+
+ set $i = 0
+ set $num = 0
+
+ while ($i < 512)
+
+ set $bp = bufhash[$i].b_forw
+ while ($bp != bufhash[$i].b_back)
+ printf "bp=0x%x flags=0x%x vp=0x%x lblkno=0x%x blkno=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_blkno
+ set $num++
+ set $bp = $bp->b_forw
+ end
+ set $i++
+ end
+ printf "Number of buffers in hash table: %d\n", $num
+end
+
+# Dump the buffers in a particular hashbucket.
+# usage: dumpbucket bucketnumber
+define dumpbucket
+
+ set $num = 0
+ set $bp = bufhash[$arg0].b_forw
+ while ($bp != bufhash[$arg0].b_back)
+ printf "bp=0x%x flags=0x%x vp=0x%x lblkno=0x%x blkno=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_blkno
+ set $num++
+ set $bp = $bp->b_forw
+ end
+ printf "Number of buffers in bucket %d: %d\n", $arg0, $num
+end