From 723297c93255e3e57fa516599660e0bbd5e96a52 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 24 Jun 2014 08:40:21 -0600 Subject: [PATCH] Add a get_jobs_eta() to return jobs eta information We duplicate this code in eta.c and server.c, consolidate it. Signed-off-by: Jens Axboe --- eta.c | 31 ++++++++++++++++++++----------- server.c | 14 +++----------- stat.h | 8 ++++++-- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/eta.c b/eta.c index dfe66f9e..bdd53763 100644 --- a/eta.c +++ b/eta.c @@ -8,10 +8,6 @@ #include "fio.h" static char __run_str[REAL_MAX_JOBS + 1]; - -/* - * Worst level condensing would be 1:5, so allow enough room for that - */ 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_RUNSTR_SZ; - 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); diff --git a/server.c b/server.c index e20f5921..76b6b54d 100644 --- a/server.c +++ b/server.c @@ -666,21 +666,13 @@ static int handle_probe_cmd(struct fio_net_cmd *cmd) static int handle_send_eta_cmd(struct fio_net_cmd *cmd) { struct jobs_eta *je; - size_t size; uint64_t tag = cmd->tag; + size_t size; int i; - if (!thread_number) - return 0; - - size = sizeof(*je) + THREAD_RUNSTR_SZ; - je = malloc(size); - memset(je, 0, size); - - if (!calc_thread_status(je, 1)) { - free(je); + je = get_jobs_eta(1, &size); + if (!je) return 0; - } dprint(FD_NET, "server sending status\n"); diff --git a/stat.h b/stat.h index 2c2f1e1a..6f9d82a1 100644 --- a/stat.h +++ b/stat.h @@ -205,6 +205,8 @@ struct jobs_eta { uint8_t run_str[]; }; +extern struct jobs_eta *get_jobs_eta(int force, size_t *size); + extern void stat_init(void); extern void stat_exit(void); @@ -240,8 +242,10 @@ static inline int usec_to_msec(unsigned long *min, unsigned long *max, return 1; } - -#define __THREAD_RUNSTR_SZ(nr) (((nr) * 5) + 1) +/* + * Worst level condensing would be 1:5, so allow enough room for that + */ +#define __THREAD_RUNSTR_SZ(nr) ((nr) * 5) #define THREAD_RUNSTR_SZ __THREAD_RUNSTR_SZ(thread_number) #endif -- 2.25.1