X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=server.h;h=61b61f35d4df1f9b4153ac6bb53829916206d7d8;hb=cdf54d85054858d9e3fc4d7ee8ea5c6a418f1b43;hp=10c9006e4339c1ec57a6f12eed5da26493ddc680;hpb=a64e88dad0c0e4a510ae8ab54cde1a20b99c59d1;p=fio.git diff --git a/server.h b/server.h index 10c9006e..61b61f35 100644 --- 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, @@ -56,11 +57,14 @@ extern int fio_start_server(int); extern int fio_server_text_output(const char *, unsigned int len); extern int fio_server_log(const char *format, ...); extern int fio_net_send_cmd(int, uint16_t, const void *, off_t); +extern int fio_net_send_simple_cmd(int sk, uint16_t opcode, uint64_t serial); 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 void fio_server_idle_loop(void); extern int fio_clients_connect(void); extern int fio_clients_send_ini(const char *); @@ -76,29 +80,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) {