Pass arch/os in probe
authorJens Axboe <axboe@kernel.dk>
Fri, 7 Oct 2011 10:47:57 +0000 (12:47 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 7 Oct 2011 10:47:57 +0000 (12:47 +0200)
Signed-off-by: Jens Axboe <axboe@kernel.dk>
28 files changed:
arch/arch-alpha.h
arch/arch-arm.h
arch/arch-generic.h
arch/arch-hppa.h
arch/arch-ia64.h
arch/arch-mips.h
arch/arch-ppc.h
arch/arch-s390.h
arch/arch-sh.h
arch/arch-sparc.h
arch/arch-sparc64.h
arch/arch-x86.h
arch/arch-x86_64.h
arch/arch.h
client.c
fio.c
fio.h
os/os-aix.h
os/os-freebsd.h
os/os-hpux.h
os/os-linux.h
os/os-mac.h
os/os-netbsd.h
os/os-solaris.h
os/os-windows.h
os/os.h
server.c
server.h

index e8132a0..c0f784f 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_ALPHA_H
 #define ARCH_ALPHA_H
 
-#define ARCH   (arch_alpha)
+#define FIO_ARCH       (arch_alpha)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                442
index b0cfd80..658b688 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_ARM_H
 #define ARCH_ARM_H
 
-#define ARCH   (arch_arm)
+#define FIO_ARCH       (arch_arm)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                314
index c7b0ca0..a0b71f8 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_GENERIC_H
 #define ARCH_GENERIC_H
 
-#define ARCH   (arch_generic)
+#define FIO_ARCH       (arch_generic)
 
 #define nop                    do { } while (0)
 #define read_barrier()         __asm__ __volatile__("": : :"memory")
index c865a89..c1c079e 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_HPPA_H
 #define ARCH_HPPA_H
 
-#define ARCH   (arch_hppa)
+#define FIO_ARCH       (arch_hppa)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                267
index 056f636..f4464c4 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_IA64_H
 #define ARCH_IA64_H
 
-#define ARCH   (arch_ia64)
+#define FIO_ARCH       (arch_ia64)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                1274
index 759d3a9..0b781d1 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_MIPS64_H
 #define ARCH_MIPS64_H
 
-#define ARCH   (arch_mips)
+#define FIO_ARCH       (arch_mips)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                314
index d495a1b..b790a55 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_PPC_H
 #define ARCH_PPH_H
 
-#define ARCH   (arch_ppc)
+#define FIO_ARCH       (arch_ppc)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                273
index 0647750..fe51791 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_S390_H
 #define ARCH_S390_H
 
-#define ARCH   (arch_s390)
+#define FIO_ARCH       (arch_s390)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                282
index f5f313d..9acbbbe 100644 (file)
@@ -3,7 +3,7 @@
 #ifndef ARCH_SH_H
 #define ARCH_SH_H
 
-#define ARCH   (arch_sh)
+#define FIO_ARCH       (arch_sh)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set        288
index cd552ab..fe47b80 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_SPARC_H
 #define ARCH_SPARC_H
 
-#define ARCH   (arch_sparc)
+#define FIO_ARCH       (arch_sparc)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                196
index 332cf91..e793ae5 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_SPARC64_H
 #define ARCH_SPARC64_H
 
-#define ARCH   (arch_sparc64)
+#define FIO_ARCH       (arch_sparc64)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                196
index 2e803cb..1ededd8 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_X86_H
 #define ARCH_X86_H
 
-#define ARCH   (arch_i386)
+#define FIO_ARCH       (arch_i386)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                289
index f2dcf49..29e681f 100644 (file)
@@ -1,7 +1,7 @@
 #ifndef ARCH_X86_64_h
 #define ARCH_X86_64_h
 
-#define ARCH   (arch_x86_64)
+#define FIO_ARCH       (arch_x86_64)
 
 #ifndef __NR_ioprio_set
 #define __NR_ioprio_set                251
index d598652..4ad49a4 100644 (file)
@@ -8,7 +8,7 @@
 #endif
 
 enum {
-       arch_x86_64,
+       arch_x86_64 = 1,
        arch_i386,
        arch_ppc,
        arch_ia64,
@@ -21,6 +21,8 @@ enum {
        arch_hppa,
 
        arch_generic,
+
+       arch_nr,
 };
 
 enum {
index 11ad1fe..8bd39a8 100644 (file)
--- a/client.c
+++ b/client.c
@@ -532,9 +532,18 @@ static void handle_eta(struct fio_net_cmd *cmd)
 static void handle_probe(struct fio_net_cmd *cmd)
 {
        struct cmd_probe_pdu *probe = (struct cmd_probe_pdu *) cmd->payload;
+       const char *os, *arch;
 
-       log_info("Probe: hostname=%s, be=%u, fio ver %u.%u.%u\n",
-               probe->hostname, probe->bigendian, probe->fio_major,
+       os = fio_get_os_string(probe->os);
+       if (!os)
+               os = "unknown";
+
+       arch = fio_get_arch_string(probe->arch);
+       if (!arch)
+               os = "unknown";
+
+       log_info("hostname=%s, be=%u, os=%s, arch=%s, fio ver %u.%u.%u\n",
+               probe->hostname, probe->bigendian, os, arch, probe->fio_major,
                probe->fio_minor, probe->fio_patch);
 }
 
diff --git a/fio.c b/fio.c
index 6e68723..212b72e 100644 (file)
--- a/fio.c
+++ b/fio.c
@@ -77,6 +77,50 @@ struct io_log *agg_io_log[2];
 
 #define JOB_START_TIMEOUT      (5 * 1000)
 
+static const char *fio_os_strings[os_nr] = {
+       "Invalid",
+       "Linux",
+       "AIX",
+       "FreeBSD",
+       "HP-UX",
+       "OSX",
+       "NetBSD",
+       "Solaris",
+       "Windows"
+};
+
+static const char *fio_arch_strings[arch_nr] = {
+       "Invalid",
+       "x86-64",
+       "x86",
+       "ppc",
+       "ia64",
+       "s390",
+       "alpha",
+       "sparc",
+       "sparc64",
+       "arm",
+       "sh",
+       "hppa",
+       "generic"
+};
+
+const char *fio_get_os_string(int nr)
+{
+       if (nr < os_nr)
+               return fio_os_strings[nr];
+
+       return NULL;
+}
+
+const char *fio_get_arch_string(int nr)
+{
+       if (nr < arch_nr)
+               return fio_arch_strings[nr];
+
+       return NULL;
+}
+
 void td_set_runstate(struct thread_data *td, int runstate)
 {
        if (td->runstate == runstate)
diff --git a/fio.h b/fio.h
index ba68067..04963cd 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -701,4 +701,7 @@ static inline void td_io_u_free_notify(struct thread_data *td)
                pthread_cond_signal(&td->free_cond);
 }
 
+extern const char *fio_get_arch_string(int);
+extern const char *fio_get_os_string(int);
+
 #endif
index d21e573..2f75bf8 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_AIX_H
 #define FIO_OS_AIX_H
 
+#define        FIO_OS  os_aix
+
 #include <errno.h>
 #include <unistd.h>
 #include <sys/devinfo.h>
index 1a4f113..875de96 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_FREEBSD_H
 #define FIO_OS_FREEBSD_H
 
+#define        FIO_OS  os_freebsd
+
 #include <errno.h>
 #include <sys/sysctl.h>
 #include <sys/disk.h>
index 93240b3..5943938 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_HPUX_H
 #define FIO_OS_HPUX_H
 
+#define        FIO_OS  os_hpux
+
 #include <errno.h>
 #include <unistd.h>
 #include <sys/ioctl.h>
index 2599091..828b208 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_LINUX_H
 #define FIO_OS_LINUX_H
 
+#define        FIO_OS  os_linux
+
 #include <sys/ioctl.h>
 #include <sys/uio.h>
 #include <sys/syscall.h>
index 24e0eb5..80c49f4 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_APPLE_H
 #define FIO_OS_APPLE_H
 
+#define        FIO_OS  os_mac
+
 #include <errno.h>
 #include <fcntl.h>
 #include <sys/disk.h>
index 5d8258b..78ac135 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_NETBSD_H
 #define FIO_OS_NETBSD_H
 
+#define        FIO_OS  os_netbsd
+
 #include <errno.h>
 #include <sys/param.h>
 #include <sys/thr.h>
index ef37e49..5bf868a 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_SOLARIS_H
 #define FIO_OS_SOLARIS_H
 
+#define        FIO_OS  os_solaris
+
 #include <errno.h>
 #include <malloc.h>
 #include <sys/types.h>
index 4af212d..65ba437 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef FIO_OS_WINDOWS_H\r
 #define FIO_OS_WINDOWS_H\r
 \r
+#define FIO_OS os_windows\r
+\r
 #include <sys/types.h>\r
 #include <errno.h>\r
 #include <windows.h>\r
diff --git a/os/os.h b/os/os.h
index e1c285c..1218815 100644 (file)
--- a/os/os.h
+++ b/os/os.h
@@ -6,6 +6,19 @@
 #include <unistd.h>
 #include <stdlib.h>
 
+enum {
+       os_linux = 1,
+       os_aix,
+       os_freebsd,
+       os_hpux,
+       os_mac,
+       os_netbsd,
+       os_solaris,
+       os_windows,
+
+       os_nr,
+};
+
 #if defined(__linux__)
 #include "os-linux.h"
 #elif defined(__FreeBSD__)
index 1e1e9d0..4f9b362 100644 (file)
--- a/server.c
+++ b/server.c
@@ -309,6 +309,9 @@ static int handle_probe_cmd(struct fio_net_cmd *cmd)
        probe.fio_minor = FIO_MINOR;
        probe.fio_patch = FIO_PATCH;
 
+       probe.os        = FIO_OS;
+       probe.arch      = FIO_ARCH;
+
        return fio_net_send_cmd(server_fd, FIO_NET_CMD_PROBE, &probe, sizeof(probe));
 }
 
index e9a6a37..c6e9ce2 100644 (file)
--- a/server.h
+++ b/server.h
@@ -63,6 +63,8 @@ struct cmd_probe_pdu {
        uint8_t fio_major;
        uint8_t fio_minor;
        uint8_t fio_patch;
+       uint8_t os;
+       uint8_t arch;
 };
 
 struct cmd_line_pdu {