#include "fio.h"
static char __run_str[REAL_MAX_JOBS + 1];
-
-/*
- * Worst level condensing would be 1:4, so allow enough room for that
- */
-static char run_str[(4 * REAL_MAX_JOBS) + 1];
+static char run_str[__THREAD_RUNSTR_SZ(REAL_MAX_JOBS)];
static void update_condensed_str(char *run_str, char *run_str_condensed)
{
} else if (last == run_str[i]) {
nr++;
} else {
- int elen;
-
- elen = sprintf(&run_str_condensed[ci], "(%u),", nr);
- ci += elen;
+ ci += sprintf(&run_str_condensed[ci], "(%u),", nr);
goto new;
}
}
if (nr)
- sprintf(&run_str_condensed[ci], "(%u)", nr);
-}
+ ci += sprintf(&run_str_condensed[ci], "(%u)", nr);
+ run_str_condensed[ci + 1] = '\0';
+}
/*
* Sets the status of the 'td' in the printed status map.
return 0;
je->nr_threads = thread_number;
- memcpy(je->run_str, run_str, thread_number * sizeof(char));
+ update_condensed_str(__run_str, run_str);
+ memcpy(je->run_str, run_str, strlen(run_str));
return 1;
}
fflush(stdout);
}
-void print_thread_status(void)
+struct jobs_eta *get_jobs_eta(int force, size_t *size)
{
struct jobs_eta *je;
- size_t size;
if (!thread_number)
- return;
+ return NULL;
- size = sizeof(*je) + thread_number * sizeof(char) + 1;
- je = malloc(size);
- memset(je, 0, size);
+ *size = sizeof(*je) + THREAD_RUNSTR_SZ;
+ je = malloc(*size);
+ memset(je, 0, *size);
+
+ if (!calc_thread_status(je, 0)) {
+ free(je);
+ return NULL;
+ }
+
+ return je;
+}
+
+void print_thread_status(void)
+{
+ struct jobs_eta *je;
+ size_t size;
- if (calc_thread_status(je, 0))
+ je = get_jobs_eta(0, &size);
+ if (je)
display_thread_status(je);
free(je);