#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
#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
#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")
#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
#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
#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
#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
#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
#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
#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
#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
#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
#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
#endif
enum {
- arch_x86_64,
+ arch_x86_64 = 1,
arch_i386,
arch_ppc,
arch_ia64,
arch_hppa,
arch_generic,
+
+ arch_nr,
};
enum {
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);
}
#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)
pthread_cond_signal(&td->free_cond);
}
+extern const char *fio_get_arch_string(int);
+extern const char *fio_get_os_string(int);
+
#endif
#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>
#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>
#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>
#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>
#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>
#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>
#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>
#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
#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__)
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));
}
uint8_t fio_major;
uint8_t fio_minor;
uint8_t fio_patch;
+ uint8_t os;
+ uint8_t arch;
};
struct cmd_line_pdu {