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;
}