#include <time.h>
#include "globals.h"
-char bt_timeline_version[] = "2.05";
+char bt_timeline_version[] = "2.08";
char *devices, *exes, *input_name, *output_name, *seek_name, *bno_dump_name;
char *d2c_name, *q2c_name, *per_io_name, *unplug_hist_name;
-char *sps_name;
-FILE *ranges_ofp, *avgs_ofp, *xavgs_ofp, *per_io_ofp, *msgs_ofp;
+char *sps_name, *aqd_name, *q2d_name, *per_io_trees;
+FILE *rngs_ofp, *avgs_ofp, *xavgs_ofp, *per_io_ofp, *msgs_ofp;
int verbose, done, time_bounded, output_all_data, seek_absolute;
-int easy_parse_avgs;
-double t_astart, t_aend;
+int easy_parse_avgs, ignore_remaps;
+double t_astart, t_aend, last_t_seen;
unsigned long n_traces;
struct avgs_info all_avgs;
unsigned int n_devs;
LIST_HEAD(free_bilinks);
__u64 q_histo[N_HIST_BKTS], d_histo[N_HIST_BKTS];
+double plat_freq = 0.0;
double range_delta = 0.1;
__u64 last_q = (__u64)-1;
init_dev_heads();
iostat_init();
- if (process() || output_avgs(avgs_ofp) || output_ranges(ranges_ofp))
+ if (!rstat_init())
+ return 1;
+
+ if (process() || output_avgs(avgs_ofp) || output_ranges(rngs_ofp))
return 1;
if (iostat_ofp) {
if (msgs_ofp != stdout)
fclose(msgs_ofp);
- if (ranges_ofp != stdout)
- fclose(ranges_ofp);
+ if (rngs_ofp != stdout)
+ fclose(rngs_ofp);
if (avgs_ofp != stdout)
fclose(avgs_ofp);
+ if (xavgs_ofp)
+ fclose(xavgs_ofp);
- latency_clean();
- bno_dump_clean();
+ dip_cleanup();
dev_map_exit();
dip_exit();
- seek_clean();
+ rstat_exit();
pip_exit();
io_free_all();
region_exit(&all_regions);
-
- free(input_name);
- if (output_name) free(output_name);
-
- clean_args();
- clean_bufs();
+ clean_allocs();
return 0;
}