| 1 | # Count the number of buffers in the buffer cache for which |
| 2 | # bp->b_flags & $bufcount_match is non-0. |
| 3 | # |
| 4 | # @(#)bdump 8.1 (Berkeley) %G% |
| 5 | |
| 6 | set $bufcount_match=0x020000 |
| 7 | define bufcount |
| 8 | |
| 9 | set $i = 0 |
| 10 | set $num = 0 |
| 11 | |
| 12 | while ($i < 512) |
| 13 | |
| 14 | set $bp = bufhash[$i].b_forw |
| 15 | while ($bp != bufhash[$i].b_back) |
| 16 | if ($bp->b_flags & $bufcount_match) |
| 17 | set $num++ |
| 18 | end |
| 19 | set $bp = $bp->b_forw |
| 20 | end |
| 21 | # printf "bucket: %d cumulative %d\n", $i, $num |
| 22 | set $i++ |
| 23 | end |
| 24 | printf "Number of buffers with flags & %x in hash table: %d\n", $bufcount_match, $num |
| 25 | end |
| 26 | |
| 27 | # Dump the entire buffer cache. |
| 28 | |
| 29 | define bufdump |
| 30 | |
| 31 | set $i = 0 |
| 32 | set $num = 0 |
| 33 | |
| 34 | while ($i < 512) |
| 35 | |
| 36 | set $bp = bufhash[$i].b_forw |
| 37 | while ($bp != bufhash[$i].b_back) |
| 38 | 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 |
| 39 | set $num++ |
| 40 | set $bp = $bp->b_forw |
| 41 | end |
| 42 | set $i++ |
| 43 | end |
| 44 | printf "Number of buffers in hash table: %d\n", $num |
| 45 | end |
| 46 | |
| 47 | # Dump the buffers in a particular hashbucket. |
| 48 | # usage: dumpbucket bucketnumber |
| 49 | define dumpbucket |
| 50 | |
| 51 | set $num = 0 |
| 52 | set $bp = bufhash[$arg0].b_forw |
| 53 | while ($bp != bufhash[$arg0].b_back) |
| 54 | 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 |
| 55 | set $num++ |
| 56 | set $bp = $bp->b_forw |
| 57 | end |
| 58 | printf "Number of buffers in bucket %d: %d\n", $arg0, $num |
| 59 | end |
| 60 | |
| 61 | # Dump the buffers on the empty and age queues |
| 62 | |
| 63 | define bdumpnew |
| 64 | |
| 65 | set $i = 0 |
| 66 | set $num = 0 |
| 67 | |
| 68 | while ($i < 4) |
| 69 | |
| 70 | printf "Queue %d\n", $i |
| 71 | set $bp = (struct buf *)bufqueues[$i].qe_next |
| 72 | while ($bp) |
| 73 | printf "bp=0x%x flags=0x%x vp=0x%x lbn=%d size=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_bufsize |
| 74 | set $num++ |
| 75 | set $bp = (struct buf *)$bp->b_freelist.qe_next |
| 76 | end |
| 77 | set $i++ |
| 78 | end |
| 79 | printf "Number of buffers in free lists: %d\n", $num |
| 80 | end |
| 81 | |
| 82 | define dumpchain |
| 83 | |
| 84 | set $bp = (struct buf *)$arg0 |
| 85 | while ($bp) |
| 86 | printf "bp=0x%x flags=0x%x bn=0x%x lbn=%d count=%d size=%d\n", $bp, $bp->b_flags, $bp->b_blkno, $bp->b_lblkno, $bp->b_bcount, $bp->b_bufsize |
| 87 | set $bp = (struct buf *)$bp->b_vnbufs.qe_next |
| 88 | end |
| 89 | end |
| 90 | |
| 91 | define dumpq |
| 92 | |
| 93 | set $num = 0 |
| 94 | |
| 95 | printf "Queue %d\n", $arg0 |
| 96 | set $bp = (struct buf *)bufqueues[$arg0].qe_next |
| 97 | while ($bp) |
| 98 | printf "bp=0x%x flags=0x%x vp=0x%x lbn=%d size=0x%x\n", $bp, $bp->b_flags, $bp->b_vp, $bp->b_lblkno, $bp->b_bufsize |
| 99 | set $num++ |
| 100 | set $bp = (struct buf *)$bp->b_freelist.qe_next |
| 101 | end |
| 102 | printf "Number of buffers on queue %d: %d\n", $arg0, $num |
| 103 | end |