The following changes since commit aa6738a5d03f82424bf23cb308e4986019f14040: Make configure tests pass pickier compiler options. (2013-12-21 15:00:28 -0700) are available in the git repository at: git://git.kernel.dk/fio.git master Jens Axboe (2): libfio: add missing OS's to fio_os_strings[] Update README to reflect that fio now runs on OpenBSD John (1): Add OpenBSD support Makefile | 4 +++ README | 8 +++--- filesetup.c | 6 +++- libfio.c | 4 ++- os/os-openbsd.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ os/os.h | 3 ++ 6 files changed, 78 insertions(+), 7 deletions(-) create mode 100644 os/os-openbsd.h --- Diff of recent changes: diff --git a/Makefile b/Makefile index 7c0e798..8c2c514 100644 --- a/Makefile +++ b/Makefile @@ -108,6 +108,10 @@ ifeq ($(CONFIG_TARGET_OS), FreeBSD) LIBS += -lpthread -lrt LDFLAGS += -rdynamic endif +ifeq ($(CONFIG_TARGET_OS), OpenBSD) + LIBS += -lpthread + LDFLAGS += -rdynamic +endif ifeq ($(CONFIG_TARGET_OS), NetBSD) LIBS += -lpthread -lrt LDFLAGS += -rdynamic diff --git a/README b/README index 0acb04f..e90f493 100644 --- a/README +++ b/README @@ -297,10 +297,10 @@ fio --client=<server1> <job file(s)> --client=<server2> <job file(s)> Platforms --------- -Fio works on (at least) Linux, Solaris, AIX, HP-UX, OSX, NetBSD, Windows -and FreeBSD. Some features and/or options may only be available on some of -the platforms, typically because those features only apply to that platform -(like the solarisaio engine, or the splice engine on Linux). +Fio works on (at least) Linux, Solaris, AIX, HP-UX, OSX, NetBSD, OpenBSD, +Windows and FreeBSD. Some features and/or options may only be available on +some of the platforms, typically because those features only apply to that +platform (like the solarisaio engine, or the splice engine on Linux). Some features are not available on FreeBSD/Solaris even if they could be implemented, I'd be happy to take patches for that. An example of that is diff --git a/filesetup.c b/filesetup.c index c9b060b..601df8f 100644 --- a/filesetup.c +++ b/filesetup.c @@ -121,8 +121,10 @@ static int extend_file(struct thread_data *td, struct fio_file *f) dprint(FD_FILE, "truncate file %s, size %llu\n", f->file_name, (unsigned long long) f->real_file_size); if (ftruncate(f->fd, f->real_file_size) == -1) { - td_verror(td, errno, "ftruncate"); - goto err; + if (errno != EFBIG) { + td_verror(td, errno, "ftruncate"); + goto err; + } } } diff --git a/libfio.c b/libfio.c index 7f36514..7eb4576 100644 --- a/libfio.c +++ b/libfio.c @@ -52,8 +52,10 @@ static const char *fio_os_strings[os_nr] = { "HP-UX", "OSX", "NetBSD", + "OpenBSD", "Solaris", - "Windows" + "Windows", + "Android", }; static const char *fio_arch_strings[arch_nr] = { diff --git a/os/os-openbsd.h b/os/os-openbsd.h new file mode 100644 index 0000000..b1d8e83 --- /dev/null +++ b/os/os-openbsd.h @@ -0,0 +1,60 @@ +#ifndef FIO_OS_OPENBSD_H +#define FIO_OS_OPENBSD_H + +#define FIO_OS os_openbsd + +#include <errno.h> +#include <sys/param.h> +/* XXX hack to avoid conflicts between rbtree.h and <sys/tree.h> */ +#include <sys/sysctl.h> +#undef RB_BLACK +#undef RB_RED +#undef RB_ROOT + +#include "../file.h" + +#undef FIO_HAVE_ODIRECT +#define FIO_USE_GENERIC_BDEV_SIZE +#define FIO_USE_GENERIC_RAND +#define FIO_USE_GENERIC_INIT_RANDOM_STATE +#define FIO_HAVE_GETTID + +#undef FIO_HAVE_CPU_AFFINITY /* XXX notyet */ + +#define OS_MAP_ANON MAP_ANON + +#ifndef PTHREAD_STACK_MIN +#define PTHREAD_STACK_MIN 4096 +#endif + +#define fio_swap16(x) bswap16(x) +#define fio_swap32(x) bswap32(x) +#define fio_swap64(x) bswap64(x) + +typedef off_t off64_t; + +static inline int blockdev_invalidate_cache(struct fio_file *f) +{ + return EINVAL; +} + +static inline unsigned long long os_phys_mem(void) +{ + int mib[2] = { CTL_HW, HW_PHYSMEM64 }; + uint64_t mem; + size_t len = sizeof(mem); + + sysctl(mib, 2, &mem, &len, NULL, 0); + return mem; +} + +static inline int gettid(void) +{ + return (int) pthread_self(); +} + +#ifdef MADV_FREE +#define FIO_MADV_FREE MADV_FREE +#endif + +#endif diff --git a/os/os.h b/os/os.h index 4b59034..03d1e9a 100644 --- a/os/os.h +++ b/os/os.h @@ -17,6 +17,7 @@ enum { os_hpux, os_mac, os_netbsd, + os_openbsd, os_solaris, os_windows, os_android, @@ -30,6 +31,8 @@ enum { #include "os-linux.h" #elif defined(__FreeBSD__) #include "os-freebsd.h" +#elif defined(__OpenBSD__) +#include "os-openbsd.h" #elif defined(__NetBSD__) #include "os-netbsd.h" #elif defined(__sun__) -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html