Skip to content

Commit

Permalink
Add OpenBSD support
Browse files Browse the repository at this point in the history
I managed to make a clean compile and a few test runs using the
attached patches.

These work on OpenBSD 5.4 at least.  I used the 2.1.4 release of
fio as a basis.

Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
John authored and axboe committed Dec 30, 2013
1 parent aa6738a commit 3cd4c66
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 2 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 4 additions & 2 deletions filesetup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
}

Expand Down
60 changes: 60 additions & 0 deletions os/os-openbsd.h
Original file line number Diff line number Diff line change
@@ -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
3 changes: 3 additions & 0 deletions os/os.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ enum {
os_hpux,
os_mac,
os_netbsd,
os_openbsd,
os_solaris,
os_windows,
os_android,
Expand All @@ -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__)
Expand Down

0 comments on commit 3cd4c66

Please sign in to comment.