From d48a9799a3d3cbe3c41658d6e41d6791b33e926c Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Sat, 9 Jul 2011 08:54:26 +0200 Subject: [PATCH] A few HP-UX fixes Enable posixaio and net IO engine Signed-off-by: Jens Axboe --- Makefile | 21 +++++++++++---------- engines/net.c | 8 ++++++++ os/os-hpux.h | 10 ++++++++++ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/Makefile b/Makefile index dade0ae6..992a9b84 100644 --- a/Makefile +++ b/Makefile @@ -13,49 +13,50 @@ SOURCE = gettime.c fio.c ioengines.c init.c stat.c log.c time.c filesetup.c \ eta.c verify.c memory.c io_u.c parse.c mutex.c options.c \ rbtree.c smalloc.c filehash.c profile.c debug.c lib/rand.c \ lib/num2str.c $(wildcard crc/*.c) engines/cpu.c \ - engines/mmap.c engines/sync.c engines/null.c memalign.c + engines/mmap.c engines/sync.c engines/null.c engines/net.c \ + memalign.c ifeq ($(UNAME), Linux) SOURCE += diskutil.c fifo.c blktrace.c helpers.c cgroup.c trim.c \ engines/libaio.c engines/posixaio.c engines/sg.c \ engines/splice.c engines/syslet-rw.c engines/guasi.c \ - engines/binject.c profiles/tiobench.c engines/net.c + engines/binject.c profiles/tiobench.c LIBS += -lpthread -ldl -lrt -laio CFLAGS += -rdynamic endif ifeq ($(UNAME), SunOS) SOURCE += fifo.c lib/strsep.c helpers.c engines/posixaio.c \ - engines/solarisaio.c engines/net.c + engines/solarisaio.c LIBS += -lpthread -ldl -laio -lrt -lnsl -lsocket CPPFLAGS += -D__EXTENSIONS__ endif ifeq ($(UNAME), FreeBSD) - SOURCE += helpers.c engines/posixaio.c engines/net.c + SOURCE += helpers.c engines/posixaio.c LIBS += -lpthread -lrt CFLAGS += -rdynamic endif ifeq ($(UNAME), NetBSD) - SOURCE += helpers.c engines/posixaio.c engines/net.c + SOURCE += helpers.c engines/posixaio.c LIBS += -lpthread -lrt CFLAGS += -rdynamic endif ifeq ($(UNAME), AIX) - SOURCE += fifo.c helpers.c lib/getopt_long.c engines/posixaio.c engines/net.c + SOURCE += fifo.c helpers.c lib/getopt_long.c engines/posixaio.c LIBS += -lpthread -ldl -lrt CFLAGS += -rdynamic CPPFLAGS += -D_LARGE_FILES -D__ppc__ endif ifeq ($(UNAME), HP-UX) - SOURCE += fifo.c helpers.c lib/getopt_long.c lib/strsep.c + SOURCE += fifo.c helpers.c lib/getopt_long.c lib/strsep.c engines/posixaio.c LIBS += -lpthread -dl -lrt - CPPFLAGS += -D_LARGE_FILES + CFLAGS += -D_LARGEFILE64_SOURCE endif ifeq ($(UNAME), Darwin) - SOURCE += helpers.c engines/posixaio.c engines/net.c + SOURCE += helpers.c engines/posixaio.c LIBS += -lpthread -ldl endif ifneq (,$(findstring CYGWIN,$(UNAME))) - SOURCE += engines/windowsaio.c engines/net.c + SOURCE += engines/windowsaio.c LIBS += -lpthread -lrt endif diff --git a/engines/net.c b/engines/net.c index b594e0a5..6866ba2d 100644 --- a/engines/net.c +++ b/engines/net.c @@ -280,7 +280,11 @@ static int fio_netio_recv(struct thread_data *td, struct io_u *io_u) do { if (nd->net_protocol == IPPROTO_UDP) { +#ifdef __hpux + int len = sizeof(nd->addr); +#else socklen_t len = sizeof(nd->addr); +#endif struct sockaddr *from = (struct sockaddr *) &nd->addr; ret = recvfrom(io_u->file->fd, io_u->xfer_buf, @@ -377,7 +381,11 @@ static int fio_netio_connect(struct thread_data *td, struct fio_file *f) static int fio_netio_accept(struct thread_data *td, struct fio_file *f) { struct netio_data *nd = td->io_ops->data; +#ifdef __hpux + int socklen = sizeof(nd->addr); +#else socklen_t socklen = sizeof(nd->addr); +#endif if (nd->net_protocol == IPPROTO_UDP) { f->fd = nd->listenfd; diff --git a/os/os-hpux.h b/os/os-hpux.h index 3c908410..38a1441d 100644 --- a/os/os-hpux.h +++ b/os/os-hpux.h @@ -9,6 +9,8 @@ #include #include #include +#include +#include #include "../file.h" @@ -27,6 +29,14 @@ #define POSIX_MADV_RANDOM MADV_RANDOM #define posix_madvise(ptr, sz, hint) madvise((ptr), (sz), (hint)) +#ifndef CLOCK_MONOTONIC +#define CLOCK_MONOTONIC CLOCK_REALTIME +#endif + +#ifndef MSG_WAITALL +#define MSG_WAITALL 0x40 +#endif + static inline int blockdev_invalidate_cache(struct fio_file *f) { return EINVAL; -- 2.25.1