;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Program: dump_block_counts ; Author: Bruce Ellis ; Date written: Sometime in January ; ; Synopsis: This guy dumps the block counts ; monitored by the load_block_counter ; program. ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .macro check ?l blbs r0,l $exit_s r0 l: .endm check .library /sys$library:lib.mlb/ .link /sys$system:sys.stb/ long=4 base=12 c_off=base saved_start=c_off c_off=c_off+long read_count=c_off c_off=c_off+long read_lengths=c_off c_off=c_off+ write_count=c_off c_off=c_off+long write_lengths=c_off c_off=c_off+ paging_ios=c_off c_off=c_off+long swap_ios=c_off c_off=c_off+long splits=c_off+ c_off=c_off+<2*long> data: .blkb c_off ;Data returned from block counter general_fmt: .ascid - /Read:!10UL Writes:!10UL Paging ios:!10UL Swapping ios:!5UL/ split_fmt: .ascid /Split ios on this disk: !10UL/ line_fmt: .ascid /!AD:!10UL!10UL!10UL!10UL!10UL/ pre_list: .ascii / 0 - 4/ pre_len=.-pre_list .ascii / 5 - 9/ .ascii / 10 - 14/ .ascii / 15 - 19/ .ascii / 20 - 24/ .ascii / 25 - 29/ .ascii / 30 - 34/ .ascii / 35 - 39/ .ascii / 40 - 44/ .ascii / 45 - 49/ .ascii / 50 - 54/ .ascii / 55 - 59/ .ascii / 60 - 64/ .ascii / 65 - 69/ .ascii / 70 - 75/ .ascii / 75 - 79/ .ascii / 80 - 85/ .ascii / 85 - 89/ .ascii / 90 - 94/ .ascii / 95 - 99/ .ascii / 100 - 104/ .ascii / 105 - 109/ .ascii / 110 - 114/ .ascii / 115 - 119/ .ascii / 120 - 124/ .ascii / 125 - 127/ buffer: .long 80 .address 10$ 10$: .blkb 80 nlines=25 read_header: .ascid /Breakdown of Reads by block size:/ write_header: .ascid /Breakdown of writes by block size:/ ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Program to format and dump block counts ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .entry dump_block_counts,^m<> $cmkrnl_s routin=return_counts check ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill general information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $fao_s ctrstr=general_fmt,outbuf=buffer,outlen=buffer,- p1=data+read_count- p2=data+write_count,p3=data+paging_ios,p4=swap_ios check pushal buffer calls #1,g^lib$put_output check movl #80,buffer ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill split io information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $fao_s ctrstr=split_fmt,outbuf=buffer,outlen=buffer,- p1=data+splits check pushal buffer calls #1,g^lib$put_output check ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill read header ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ movl #80,buffer pushal read_header calls #1,g^lib$put_output check ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill each line of read information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ movl #nlines,r5 moval pre_list,r3 moval data+read_lengths,r2 dump_read: $fao_s ctrstr=line_fmt,outbuf=buffer,outlen=buffer,p1=#10- p2=r3,p3=(r2),p4=4(r2),p5=8(r2),p6=12(r2),p7=16(r2) check pushal buffer calls #1,g^lib$put_output check addl #pre_len,r3 addl #4*5,r2 movl #80,buffer sobgtr r5,dump_read ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill last line of read information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $fao_s ctrstr=line_fmt,outbuf=buffer,outlen=buffer,p1=#10- p2=r3,p3=(r2),p4=4(r2),p5=8(r2),p6=#0,p7=#0 check pushal buffer calls #1,g^lib$put_output check ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill write header ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ pushal write_header calls #1,g^lib$put_output check movl #nlines,r5 moval pre_list,r3 moval data+write_lengths,r2 ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill each line of write information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dump_write: $fao_s ctrstr=line_fmt,outbuf=buffer,outlen=buffer,p1=#10- p2=r3,p3=(r2),p4=4(r2),p5=8(r2),p6=12(r2),p7=16(r2) check pushal buffer calls #1,g^lib$put_output check addl #pre_len,r3 addl #4*5,r2 movl #80,buffer sobgtr r5,dump_write ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Format and spill last line of write information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ $fao_s ctrstr=line_fmt,outbuf=buffer,outlen=buffer,p1=#10- p2=r3,p3=(r2),p4=4(r2),p5=8(r2),p6=#0,p7=#0 check pushal buffer calls #1,g^lib$put_output check ret ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ; Return block counter information ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .entry return_counts,^m movl g^exe$gl_sitespec,r2 ;Check to see if block counter beql accvio ; is loaded. movc3 #c_off,(r2),data ;copy the data up from pool movl #ss$_normal,r0 exit: ret ;fini accvio: movl #ss$_accvio,r0 brb exit .end dump_block_counts