server: add ETA as a specific command
[fio.git] / server.h
index 10c9006e4339c1ec57a6f12eed5da26493ddc680..431ae9e7155bf48a1009a5271802eecff7b7db69 100644 (file)
--- a/server.h
+++ b/server.h
@@ -39,6 +39,7 @@ enum {
        FIO_NET_CMD_TEXT        = 6,
        FIO_NET_CMD_TS          = 7,
        FIO_NET_CMD_GS          = 8,
+       FIO_NET_CMD_ETA         = 9,
 
        FIO_NET_CMD_F_MORE      = 1UL << 0,
 
@@ -61,6 +62,7 @@ struct thread_stat;
 struct group_run_stats;
 extern void fio_server_send_ts(struct thread_stat *, struct group_run_stats *);
 extern void fio_server_send_gs(struct group_run_stats *);
+extern void fio_server_send_status(void);
 
 extern int fio_clients_connect(void);
 extern int fio_clients_send_ini(const char *);
@@ -76,29 +78,54 @@ extern int exit_backend;
 extern int fio_net_port;
 
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-#define le16_to_cpu(x)         (x)
-#define le32_to_cpu(x)         (x)
-#define le64_to_cpu(x)         (x)
-#define cpu_to_le16(x)         (x)
-#define cpu_to_le32(x)         (x)
-#define cpu_to_le64(x)         (x)
+#define __le16_to_cpu(x)               (x)
+#define __le32_to_cpu(x)               (x)
+#define __le64_to_cpu(x)               (x)
+#define __cpu_to_le16(x)               (x)
+#define __cpu_to_le32(x)               (x)
+#define __cpu_to_le64(x)               (x)
 #elif __BYTE_ORDER == __BIG_ENDIAN
-#define le16_to_cpu(x)         __bswap_16(x)
-#define le32_to_cpu(x)         __bswap_32(x)
-#define le64_to_cpu(x)         __bswap_64(x)
-#define cpu_to_le16(x)         __bswap_16(x)
-#define cpu_to_le32(x)         __bswap_32(x)
-#define cpu_to_le64(x)         __bswap_64(x)
+#define __le16_to_cpu(x)               __bswap_16(x)
+#define __le32_to_cpu(x)               __bswap_32(x)
+#define __le64_to_cpu(x)               __bswap_64(x)
+#define __cpu_to_le16(x)               __bswap_16(x)
+#define __cpu_to_le32(x)               __bswap_32(x)
+#define __cpu_to_le64(x)               __bswap_64(x)
 #else
 #error "Endianness not detected"
 #endif
 
+#define le16_to_cpu(val) ({                    \
+       uint16_t *__val = &(val);               \
+       __le16_to_cpu(*__val);                  \
+})
+#define le32_to_cpu(val) ({                    \
+       uint32_t *__val = &(val);               \
+       __le32_to_cpu(*__val);                  \
+})
+#define le64_to_cpu(val) ({                    \
+       uint64_t *__val = &(val);               \
+       __le64_to_cpu(*__val);                  \
+})
+#define cpu_to_le16(val) ({                    \
+       uint16_t *__val = &(val);               \
+       __cpu_to_le16(*__val);                  \
+})
+#define cpu_to_le32(val) ({                    \
+       uint32_t *__val = &(val);               \
+       __cpu_to_le32(*__val);                  \
+})
+#define cpu_to_le64(val) ({                    \
+       uint64_t *__val = &(val);               \
+       __cpu_to_le64(*__val);                  \
+})
+
 static inline void fio_init_net_cmd(struct fio_net_cmd *cmd, uint16_t opcode,
                                    const void *pdu, uint32_t pdu_len)
 {
        memset(cmd, 0, sizeof(*cmd));
 
-       cmd->version    = cpu_to_le16(FIO_SERVER_VER1);
+       cmd->version    = __cpu_to_le16(FIO_SERVER_VER1);
        cmd->opcode     = cpu_to_le16(opcode);
 
        if (pdu) {