+ return cmp;
+}
+
+/*
+ * Find and display the p-th percentile of clat
+ */
+static void show_clat_percentiles(unsigned int* io_u_plat, unsigned long nr,
+ double* user_list)
+{
+ unsigned long sum = 0;
+ unsigned int len, i, j = 0;
+ const double *plist;
+ int is_last = 0;
+ static const double def_list[FIO_IO_U_LIST_MAX_LEN] = {
+ 1.0, 5.0, 10.0, 20.0, 30.0,
+ 40.0, 50.0, 60.0, 70.0, 80.0,
+ 90.0, 95.0, 99.0, 99.5, 99.9};
+
+ plist = user_list;
+ if (!plist)
+ plist = def_list;
+
+ for (len = 0; len <FIO_IO_U_LIST_MAX_LEN && plist[len] != 0; len++)
+ ;
+
+ /*
+ * Sort the user-specified list. Note that this does not work
+ * for NaN values
+ */
+ if (user_list && len > 1)
+ qsort((void*)user_list, len, sizeof(user_list[0]), double_cmp);
+
+ log_info(" clat percentiles (usec) :");
+
+ for (i = 0; i < FIO_IO_U_PLAT_NR && !is_last; i++) {
+ sum += io_u_plat[i];
+ while (sum >= (plist[j] / 100 * nr)) {
+ assert(plist[j] <= 100.0);
+
+ /* for formatting */
+ if (j != 0 && (j % 4) == 0)
+ log_info(" ");