Lines 579-603
Link Here
|
579 |
} |
579 |
} |
580 |
case FMT_DEVSTAT: { |
580 |
case FMT_DEVSTAT: { |
581 |
HV *c = (HV *)sv_2mortal((SV *)newHV()); |
581 |
HV *c = (HV *)sv_2mortal((SV *)newHV()); |
582 |
struct devstat *inf = (struct devstat *)buf; |
582 |
struct devstat *inf = (struct devstat *)(buf + sizeof(buf)); |
583 |
RETVAL = newRV((SV *)c); |
583 |
RETVAL = newRV((SV *)c); |
584 |
hv_store(c, "devno", 5, newSViv(inf->device_number), 0); |
584 |
char *p = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; |
585 |
hv_store(c, "unitno", 6, newSViv(inf->unit_number), 0); |
585 |
do { |
|
|
586 |
char name[BUFSIZ]; |
587 |
strcpy(name, "#.devno"); name[0] = *p; |
588 |
hv_store(c, name, strlen(name), newSViv(inf->device_number), 0); |
589 |
strcpy(name, "#.device_name"); name[0] = *p; |
590 |
hv_store(c, name, strlen(name), newSVpvn(inf->device_name, strlen(inf->device_name)), 0); |
591 |
strcpy(name, "#.unitno"); name[0] = *p; |
592 |
hv_store(c, name, strlen(name), newSViv(inf->unit_number), 0); |
586 |
#if __FreeBSD_version < 500000 |
593 |
#if __FreeBSD_version < 500000 |
587 |
hv_store(c, "sequence", 8, newSVpvn("", 0), 0); |
594 |
strcpy(name, "#.sequence"); name[0] = *p; |
588 |
hv_store(c, "allocated", 9, newSVpvn("", 0), 0); |
595 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
589 |
hv_store(c, "startcount", 10, newSVpvn("", 0), 0); |
596 |
strcpy(name, "#.allocated"); name[0] = *p; |
590 |
hv_store(c, "endcount", 8, newSVpvn("", 0), 0); |
597 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
591 |
hv_store(c, "busyfromsec", 11, newSVpvn("", 0), 0); |
598 |
strcpy(name, "#.startcount"); name[0] = *p; |
592 |
hv_store(c, "busyfromfrac", 12, newSVpvn("", 0), 0); |
599 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
|
|
600 |
strcpy(name, "#.endcount"); name[0] = *p; |
601 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
602 |
strcpy(name, "#.busyfromsec"); name[0] = *p; |
603 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
604 |
strcpy(name, "#.busyfromfrac"); name[0] = *p; |
605 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
606 |
strcpy(name, "#.bytes_no_data"); name[0] = *p; |
607 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
608 |
strcpy(name, "#.bytes_read"); name[0] = *p; |
609 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
610 |
strcpy(name, "#.bytes_write"); name[0] = *p; |
611 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
612 |
strcpy(name, "#.bytes_free"); name[0] = *p; |
613 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
614 |
strcpy(name, "#.operations_no_data"); name[0] = *p; |
615 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
616 |
strcpy(name, "#.operations_read"); name[0] = *p; |
617 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
618 |
strcpy(name, "#.operations_write"); name[0] = *p; |
619 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
620 |
strcpy(name, "#.operations_free"); name[0] = *p; |
621 |
hv_store(c, name, strlen(name), newSVpvn("", 0)), 0); |
593 |
#else |
622 |
#else |
594 |
hv_store(c, "sequence", 8, newSVuv(inf->sequence0), 0); |
623 |
strcpy(name, "#.sequence"); name[0] = *p; |
595 |
hv_store(c, "allocated", 9, newSViv(inf->allocated), 0); |
624 |
hv_store(c, name, strlen(name), newSVuv(inf->sequence0), 0); |
596 |
hv_store(c, "startcount", 10, newSViv(inf->start_count), 0); |
625 |
strcpy(name, "#.allocated"); name[0] = *p; |
597 |
hv_store(c, "endcount", 8, newSViv(inf->end_count), 0); |
626 |
hv_store(c, name, strlen(name), newSViv(inf->allocated), 0); |
598 |
hv_store(c, "busyfromsec", 11, newSViv(inf->busy_from.sec), 0); |
627 |
strcpy(name, "#.startcount"); name[0] = *p; |
599 |
hv_store(c, "busyfromfrac", 12, newSVuv(inf->busy_from.frac), 0); |
628 |
hv_store(c, name, strlen(name), newSViv(inf->start_count), 0); |
|
|
629 |
strcpy(name, "#.endcount"); name[0] = *p; |
630 |
hv_store(c, name, strlen(name), newSViv(inf->end_count), 0); |
631 |
strcpy(name, "#.busyfromsec"); name[0] = *p; |
632 |
hv_store(c, name, strlen(name), newSViv(inf->busy_from.sec), 0); |
633 |
strcpy(name, "#.busyfromfrac"); name[0] = *p; |
634 |
hv_store(c, name, strlen(name), newSVuv(inf->busy_from.frac), 0); |
635 |
strcpy(name, "#.bytes_no_data"); name[0] = *p; |
636 |
hv_store(c, name, strlen(name), newSVuv(inf->bytes[DEVSTAT_NO_DATA]), 0); |
637 |
strcpy(name, "#.bytes_read"); name[0] = *p; |
638 |
hv_store(c, name, strlen(name), newSVuv(inf->bytes[DEVSTAT_READ]), 0); |
639 |
strcpy(name, "#.bytes_write"); name[0] = *p; |
640 |
hv_store(c, name, strlen(name), newSVuv(inf->bytes[DEVSTAT_WRITE]), 0); |
641 |
strcpy(name, "#.bytes_free"); name[0] = *p; |
642 |
hv_store(c, name, strlen(name), newSVuv(inf->bytes[DEVSTAT_FREE]), 0); |
643 |
strcpy(name, "#.operations_no_data"); name[0] = *p; |
644 |
hv_store(c, name, strlen(name), newSVuv(inf->operations[DEVSTAT_NO_DATA]), 0); |
645 |
strcpy(name, "#.operations_read"); name[0] = *p; |
646 |
hv_store(c, name, strlen(name), newSVuv(inf->operations[DEVSTAT_READ]), 0); |
647 |
strcpy(name, "#.operations_write"); name[0] = *p; |
648 |
hv_store(c, name, strlen(name), newSVuv(inf->operations[DEVSTAT_WRITE]), 0); |
649 |
strcpy(name, "#.operations_free"); name[0] = *p; |
650 |
hv_store(c, name, strlen(name), newSVuv(inf->operations[DEVSTAT_FREE]), 0); |
600 |
#endif |
651 |
#endif |
|
|
652 |
++p; |
653 |
++inf; |
654 |
} while (inf < (struct devstat *)(buf + buflen)); |
601 |
break; |
655 |
break; |
602 |
} |
656 |
} |
603 |
#if __FreeBSD_version >= 500000 |
657 |
#if __FreeBSD_version >= 500000 |