View | Details | Raw Unified | Return to bug 226899 | Differences between
and this patch

Collapse All | Expand All

(-)Sysctl.xs (-15 / +69 lines)
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

Return to bug 226899