X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=eta.c;h=bdd537633fff90ff15f07806e632227f0ef6c132;hp=0dd04be8d7a6506443a369233718bbea7937a5a3;hb=723297c93255e3e57fa516599660e0bbd5e96a52;hpb=6c784104cf90299aeec1d79f536a8e534c341c5f diff --git a/eta.c b/eta.c index 0dd04be8..bdd53763 100644 --- a/eta.c +++ b/eta.c @@ -8,11 +8,7 @@ #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) { @@ -584,19 +580,32 @@ void display_thread_status(struct jobs_eta *je) 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);