Change network transmitted doubles to fio_fp64_t IEEE 754 type
Encode and decode when transferring over the network.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/server.c b/server.c
index 29e2387..0f64c23 100644
--- a/server.c
+++ b/server.c
@@ -18,6 +18,7 @@
#include "fio.h"
#include "server.h"
#include "crc/crc16.h"
+#include "ieee754.h"
int fio_net_port = 8765;
@@ -464,9 +465,12 @@
dst->max_val = cpu_to_le64(src->max_val);
dst->min_val = cpu_to_le64(src->min_val);
dst->samples = cpu_to_le64(src->samples);
- /* FIXME */
- dst->mean = __cpu_to_le64(src->mean);
- dst->S = __cpu_to_le64(src->S);
+
+ /*
+ * Encode to IEEE 754 for network transfer
+ */
+ dst->mean.u.i = __cpu_to_le64(fio_double_to_uint64(src->mean.u.f));
+ dst->S.u.i = __cpu_to_le64(fio_double_to_uint64(src->S.u.f));
}
static void convert_gs(struct group_run_stats *dst, struct group_run_stats *src)
@@ -521,7 +525,12 @@
p.ts.minf = cpu_to_le64(ts->minf);
p.ts.majf = cpu_to_le64(ts->majf);
p.ts.clat_percentiles = cpu_to_le64(ts->clat_percentiles);
- p.ts.percentile_list = NULL;
+
+ for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++) {
+ fio_fp64_t *fp = &p.ts.percentile_list[i];
+
+ fp->u.i = __cpu_to_le64(fio_double_to_uint64(fp->u.f));
+ }
for (i = 0; i < FIO_IO_U_MAP_NR; i++) {
p.ts.io_u_map[i] = cpu_to_le32(ts->io_u_map[i]);