version 1.47, 2017/04/16 14:24:03 |
version 1.48, 2019/05/08 23:54:13 |
|
|
#include "systat.h" |
#include "systat.h" |
|
|
#include "dkstats.h" |
#include "dkstats.h" |
extern struct _disk cur, last; |
extern struct _disk cur, last; |
struct bcachestats bclast, bccur; |
struct bcachestats bclast, bccur; |
|
|
static double etime; |
static double etime; |
|
|
|
|
FLD_IO_WTPS, FLD_IO_SEC, FLD_IO_SVAL, FLD_IO_SSTR, NULL |
FLD_IO_WTPS, FLD_IO_SEC, FLD_IO_SVAL, FLD_IO_SSTR, NULL |
}; |
}; |
|
|
|
static enum state { BOOT, TIME } state = TIME; |
|
|
|
static int |
|
io_keyboard_callback(int ch) |
|
{ |
|
switch (ch) { |
|
case 'b': |
|
state = BOOT; |
|
break; |
|
case 't': |
|
state = TIME; |
|
break; |
|
default: |
|
return keyboard_callback(ch); |
|
} |
|
return 0; |
|
} |
|
|
/* Define view managers */ |
/* Define view managers */ |
struct view_manager iostat_mgr = { |
struct view_manager iostat_mgr = { |
"Iostat", select_io, read_io, NULL, print_header, |
"Iostat", select_io, read_io, NULL, print_header, |
print_io, keyboard_callback, NULL, NULL |
print_io, io_keyboard_callback, NULL, NULL |
}; |
}; |
|
|
|
|
|
|
size_t size; |
size_t size; |
|
|
dkreadstats(); |
dkreadstats(); |
|
if (state == BOOT) { |
|
unsigned int dn; |
|
for (dn = 0; dn < last.dk_ndrive; dn++) { |
|
last.dk_rbytes[dn] = 0; |
|
last.dk_wbytes[dn] = 0; |
|
last.dk_rxfer[dn] = 0; |
|
last.dk_wxfer[dn] = 0; |
|
} |
|
} |
dkswap(); |
dkswap(); |
num_disp = cur.dk_ndrive + 1; |
num_disp = cur.dk_ndrive + 1; |
|
|
|
|
if (bclast.numbufs == 0) |
if (bclast.numbufs == 0) |
bclast = bccur; |
bclast = bccur; |
|
|
|
if (state == BOOT) |
|
memset(&bclast, 0, sizeof(bclast)); |
|
|
return 0; |
return 0; |
} |
} |
|
|
|
|
for (v = views_io; v->name != NULL; v++) |
for (v = views_io; v->name != NULL; v++) |
add_view(v); |
add_view(v); |
|
|
return(1); |
return (1); |
} |
} |
|
|
void |
void |
|
|
showdrive(int dn) |
showdrive(int dn) |
{ |
{ |
print_fld_str(FLD_IO_DEVICE, cur.dk_name[dn]); |
print_fld_str(FLD_IO_DEVICE, cur.dk_name[dn]); |
print_fld_size(FLD_IO_READ, cur.dk_rbytes[dn]/etime); |
print_fld_size(FLD_IO_READ, cur.dk_rbytes[dn] / etime); |
print_fld_size(FLD_IO_WRITE, cur.dk_wbytes[dn]/ etime); |
print_fld_size(FLD_IO_WRITE, cur.dk_wbytes[dn] / etime); |
print_fld_size(FLD_IO_RTPS, cur.dk_rxfer[dn] / etime); |
print_fld_size(FLD_IO_RTPS, cur.dk_rxfer[dn] / etime); |
print_fld_size(FLD_IO_WTPS, cur.dk_wxfer[dn] / etime); |
print_fld_size(FLD_IO_WTPS, cur.dk_wxfer[dn] / etime); |
print_fld_float(FLD_IO_SEC, ATIME(cur.dk_time, dn) / etime, 1); |
print_fld_float(FLD_IO_SEC, ATIME(cur.dk_time, dn) / etime, 1); |