summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Provos <provos@gmail.com>2002-10-07 00:47:34 +0000
committerNiels Provos <provos@gmail.com>2002-10-07 00:47:34 +0000
commit9d2401fffcc6694bb59a2ac42c338ff943cb073a (patch)
treeb2541ab9b4756f88708ceaa59230d93fd2d185f6
parentacf7a8e321a482434f9e179528a554018a1e6ca9 (diff)
downloadlibevent-9d2401fffcc6694bb59a2ac42c338ff943cb073a.tar.gz
portability fixes from marius@umich.edu.
svn:r35
-rw-r--r--Makefile.am5
-rw-r--r--compat/sys/_time.h167
-rw-r--r--event.c4
-rw-r--r--kqueue.c4
-rw-r--r--sample/Makefile.am3
-rw-r--r--select.c4
6 files changed, 184 insertions, 3 deletions
diff --git a/Makefile.am b/Makefile.am
index 2b8605b6..8d626660 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,7 +2,8 @@ AUTOMAKE_OPTIONS = foreign no-dependencies
SUBDIRS = . sample
-EXTRA_DIST = acconfig.h
+EXTRA_DIST = acconfig.h test/Makefile.in compat/err.h compat/sys/queue.h \
+ compat/sys/tree.h compat/sys/_time.h
lib_LIBRARIES = libevent.a
@@ -11,7 +12,7 @@ libevent_a_LIBADD = @LIBOBJS@
include_HEADERS = event.h
-INCLUDES = -I/usr/include -Icompat
+INCLUDES = -Icompat
man_MANS = event.3
diff --git a/compat/sys/_time.h b/compat/sys/_time.h
new file mode 100644
index 00000000..03b51246
--- /dev/null
+++ b/compat/sys/_time.h
@@ -0,0 +1,167 @@
+/* $OpenBSD: time.h,v 1.11 2000/10/10 13:36:48 itojun Exp $ */
+/* $NetBSD: time.h,v 1.18 1996/04/23 10:29:33 mycroft Exp $ */
+
+/*
+ * Copyright (c) 1982, 1986, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by the University of
+ * California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * @(#)time.h 8.2 (Berkeley) 7/10/94
+ */
+
+#ifndef _SYS_TIME_H_
+#define _SYS_TIME_H_
+
+#include <sys/types.h>
+
+/*
+ * Structure returned by gettimeofday(2) system call,
+ * and used in other calls.
+ */
+struct timeval {
+ long tv_sec; /* seconds */
+ long tv_usec; /* and microseconds */
+};
+
+/*
+ * Structure defined by POSIX.1b to be like a timeval.
+ */
+struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* and nanoseconds */
+};
+
+#define TIMEVAL_TO_TIMESPEC(tv, ts) { \
+ (ts)->tv_sec = (tv)->tv_sec; \
+ (ts)->tv_nsec = (tv)->tv_usec * 1000; \
+}
+#define TIMESPEC_TO_TIMEVAL(tv, ts) { \
+ (tv)->tv_sec = (ts)->tv_sec; \
+ (tv)->tv_usec = (ts)->tv_nsec / 1000; \
+}
+
+struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+};
+#define DST_NONE 0 /* not on dst */
+#define DST_USA 1 /* USA style dst */
+#define DST_AUST 2 /* Australian style dst */
+#define DST_WET 3 /* Western European dst */
+#define DST_MET 4 /* Middle European dst */
+#define DST_EET 5 /* Eastern European dst */
+#define DST_CAN 6 /* Canada */
+
+/* Operations on timevals. */
+#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0
+#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
+#define timercmp(tvp, uvp, cmp) \
+ (((tvp)->tv_sec == (uvp)->tv_sec) ? \
+ ((tvp)->tv_usec cmp (uvp)->tv_usec) : \
+ ((tvp)->tv_sec cmp (uvp)->tv_sec))
+#define timeradd(tvp, uvp, vvp) \
+ do { \
+ (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
+ (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
+ if ((vvp)->tv_usec >= 1000000) { \
+ (vvp)->tv_sec++; \
+ (vvp)->tv_usec -= 1000000; \
+ } \
+ } while (0)
+#define timersub(tvp, uvp, vvp) \
+ do { \
+ (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
+ (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
+ if ((vvp)->tv_usec < 0) { \
+ (vvp)->tv_sec--; \
+ (vvp)->tv_usec += 1000000; \
+ } \
+ } while (0)
+
+/* Operations on timespecs. */
+#define timespecclear(tsp) (tsp)->tv_sec = (tsp)->tv_nsec = 0
+#define timespecisset(tsp) ((tsp)->tv_sec || (tsp)->tv_nsec)
+#define timespeccmp(tsp, usp, cmp) \
+ (((tsp)->tv_sec == (usp)->tv_sec) ? \
+ ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
+ ((tsp)->tv_sec cmp (usp)->tv_sec))
+#define timespecadd(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec + (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec + (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec >= 1000000000L) { \
+ (vsp)->tv_sec++; \
+ (vsp)->tv_nsec -= 1000000000L; \
+ } \
+ } while (0)
+#define timespecsub(tsp, usp, vsp) \
+ do { \
+ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
+ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
+ if ((vsp)->tv_nsec < 0) { \
+ (vsp)->tv_sec--; \
+ (vsp)->tv_nsec += 1000000000L; \
+ } \
+ } while (0)
+
+/*
+ * Names of the interval timers, and structure
+ * defining a timer setting.
+ */
+#define ITIMER_REAL 0
+#define ITIMER_VIRTUAL 1
+#define ITIMER_PROF 2
+
+struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+};
+
+/*
+ * Getkerninfo clock information structure
+ */
+struct clockinfo {
+ int hz; /* clock frequency */
+ int tick; /* micro-seconds per hz tick */
+ int tickadj; /* clock skew rate for adjtime() */
+ int stathz; /* statistics clock frequency */
+ int profhz; /* profiling clock frequency */
+};
+
+#define CLOCK_REALTIME 0
+#define CLOCK_VIRTUAL 1
+#define CLOCK_PROF 2
+
+#define TIMER_RELTIME 0x0 /* relative timer */
+#define TIMER_ABSTIME 0x1 /* absolute timer */
+
+/* --- stuff got cut here - niels --- */
+
+#endif /* !_SYS_TIME_H_ */
diff --git a/event.c b/event.c
index 8195fffa..30db339c 100644
--- a/event.c
+++ b/event.c
@@ -33,7 +33,11 @@
#include <sys/types.h>
#include <sys/tree.h>
+#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
+#else
+#include <sys/_time.h>
+#endif
#include <sys/queue.h>
#include <stdio.h>
#include <stdlib.h>
diff --git a/kqueue.c b/kqueue.c
index a310718d..f5e4f123 100644
--- a/kqueue.c
+++ b/kqueue.c
@@ -32,7 +32,11 @@
#include "config.h"
#include <sys/types.h>
+#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
+#else
+#include <sys/_time.h>
+#endif
#include <sys/queue.h>
#include <sys/event.h>
#include <signal.h>
diff --git a/sample/Makefile.am b/sample/Makefile.am
index 952702b7..b2a0481a 100644
--- a/sample/Makefile.am
+++ b/sample/Makefile.am
@@ -1,7 +1,8 @@
AUTOMAKE_OPTIONS = foreign no-dependencies
LDADD = -L.. -levent
-CPPFPLAGS = -I..
+CPPFPLAGS = -I..
+CFLAGS = -I../compat
noinst_PROGRAMS = event-test time-test signal-test
diff --git a/select.c b/select.c
index 0476c113..138a3ace 100644
--- a/select.c
+++ b/select.c
@@ -32,7 +32,11 @@
#include "config.h"
#include <sys/types.h>
+#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
+#else
+#include <sys/_time.h>
+#endif
#include <sys/queue.h>
#include <signal.h>
#include <stdio.h>