int show_histogram()

in src/latencies_stats.c [94:144]


int show_histogram(int start, int len, int count, unsigned long max_latency)
{
    int i = 0;
    unsigned long freq_counter = 0;
    unsigned long final_interval = (len * count) + start;
    unsigned long lat_intervals = 0;
    int interval_start = 0;
    unsigned long after_final_interval = 0;
    unsigned long leftover = 0;

    /* Print frequencies between 0 and starting interval */
    printf("\nInterval(usec)\t Frequency\n");
    if (start > 0) {
        for(i = 0; i < start; i++)
            freq_counter += freq_table[i];

        printf("%7d \t %lu\n", 0, freq_counter);
    }

    /*  Prints frequencies between each interval */
    freq_counter = 0;
    for(lat_intervals = start; lat_intervals < final_interval; lat_intervals += len) {
        interval_start = 0;
        if(lat_intervals > max_latency) {
            printf("%7lu \t %d\n", lat_intervals, 0);
            if(lat_intervals + len == final_interval)
                printf("%7lu \t %d\n", lat_intervals + len, 0);
            continue;
        }

        while(interval_start < len) {
            if(lat_intervals + interval_start > max_latency)
                break;
            freq_counter += freq_table[lat_intervals + interval_start];
            interval_start++;
        }
        printf("%7lu \t %lu\n", lat_intervals, freq_counter);
        freq_counter = 0;
    }

    /* Print all leftover latencies after the final interval only if final interval < max latency */
    if(final_interval < max_latency) {
        after_final_interval = final_interval;
        for(leftover = after_final_interval; leftover <= max_latency; leftover++)
            freq_counter += freq_table[leftover];

        printf("%7lu \t %lu\n", after_final_interval, freq_counter);
    }

    return NO_ERR;
}