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 <axboe@fb.com>
diff --git a/eta.c b/eta.c
index dfe66f9..bdd5376 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 @@
fflush(stdout);
}
+struct jobs_eta *get_jobs_eta(int force, size_t *size)
+{
+ struct jobs_eta *je;
+
+ if (!thread_number)
+ return NULL;
+
+ *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 (!thread_number)
- return;
-
- size = sizeof(*je) + THREAD_RUNSTR_SZ;
- je = malloc(size);
- memset(je, 0, 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 e20f592..76b6b54 100644
--- a/server.c
+++ b/server.c
@@ -666,22 +666,14 @@
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)
+ je = get_jobs_eta(1, &size);
+ if (!je)
return 0;
- size = sizeof(*je) + THREAD_RUNSTR_SZ;
- je = malloc(size);
- memset(je, 0, size);
-
- if (!calc_thread_status(je, 1)) {
- free(je);
- return 0;
- }
-
dprint(FD_NET, "server sending status\n");
je->nr_running = cpu_to_le32(je->nr_running);
diff --git a/stat.h b/stat.h
index 2c2f1e1..6f9d82a 100644
--- a/stat.h
+++ b/stat.h
@@ -205,6 +205,8 @@
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 @@
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