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