[rtems-libbsd commit] Update due to Newlib <sys/time.h> etc. changes

Sebastian Huber sebh at rtems.org
Tue Mar 24 14:28:56 UTC 2015


Module:    rtems-libbsd
Branch:    master
Commit:    20b7d3d9c04bf2d66e2b3bfede4d52c59ad2fbe8
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=20b7d3d9c04bf2d66e2b3bfede4d52c59ad2fbe8

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Sun Mar 15 10:01:25 2015 +0100

Update due to Newlib <sys/time.h> etc. changes

---

 freebsd-to-rtems.py                       |   2 -
 freebsd/sys/sys/_timeval.h                |  56 -----
 freebsd/sys/sys/select.h                  |   2 +-
 rtemsbsd/include/rtems/bsd/sys/time.h     | 398 +-----------------------------
 rtemsbsd/include/rtems/bsd/sys/timespec.h |  81 +-----
 rtemsbsd/rtems/rtems-bsd-timesupport.c    |  42 ++++
 6 files changed, 55 insertions(+), 526 deletions(-)

diff --git a/freebsd-to-rtems.py b/freebsd-to-rtems.py
index 6c4457b..58698ae 100755
--- a/freebsd-to-rtems.py
+++ b/freebsd-to-rtems.py
@@ -181,7 +181,6 @@ def fixIncludes(data):
 	data = re.sub('#include <sys/types.h>', '#include <rtems/bsd/sys/types.h>', data)
 	data = re.sub('#include <sys/resource.h>', '#include <rtems/bsd/sys/resource.h>', data)
 	data = re.sub('#include <sys/unistd.h>', '#include <rtems/bsd/sys/unistd.h>', data)
-	data = re.sub('#include <sys/timespec.h>', '#include <rtems/bsd/sys/timespec.h>', data)
 	data = re.sub('#include <sys/_types.h>', '#include <rtems/bsd/sys/_types.h>', data)
 	return data
 
@@ -857,7 +856,6 @@ base.addKernelSpaceHeaderFiles(
 		'sys/rpc/types.h',
 		'sys/sys/timepps.h',
 		'sys/sys/timetc.h',
-		'sys/sys/_timeval.h',
 		'sys/sys/timex.h',
 		'sys/sys/tree.h',
 		'sys/sys/ttycom.h',
diff --git a/freebsd/sys/sys/_timeval.h b/freebsd/sys/sys/_timeval.h
deleted file mode 100644
index c1edd5c..0000000
--- a/freebsd/sys/sys/_timeval.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * Copyright (c) 2002 Mike Barcroft <mike at FreeBSD.org>
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- * $FreeBSD$
- */
-
-#ifndef _SYS__TIMEVAL_H_
-#define _SYS__TIMEVAL_H_
-
-#ifndef __rtems__
-#include <rtems/bsd/sys/_types.h>
-
-#ifndef _SUSECONDS_T_DECLARED
-typedef	__suseconds_t	suseconds_t;
-#define	_SUSECONDS_T_DECLARED
-#endif
-
-#ifndef _TIME_T_DECLARED
-typedef	__time_t	time_t;
-#define	_TIME_T_DECLARED
-#endif
-
-/*
- * Structure returned by gettimeofday(2) system call, and used in other calls.
- */
-struct timeval {
-	time_t		tv_sec;		/* seconds */
-	suseconds_t	tv_usec;	/* and microseconds */
-};
-#else /* __rtems__ */
-#include <rtems/bsd/sys/time.h>
-#endif /* __rtems__ */
-
-#endif /* !_SYS__TIMEVAL_H_ */
diff --git a/freebsd/sys/sys/select.h b/freebsd/sys/sys/select.h
index f348f54..6db6c37 100644
--- a/freebsd/sys/sys/select.h
+++ b/freebsd/sys/sys/select.h
@@ -37,7 +37,7 @@
 
 #include <sys/_sigset.h>
 #include <sys/_timeval.h>
-#include <rtems/bsd/sys/timespec.h>
+#include <sys/timespec.h>
 
 #ifndef __rtems__
 typedef	unsigned long	__fd_mask;
diff --git a/rtemsbsd/include/rtems/bsd/sys/time.h b/rtemsbsd/include/rtems/bsd/sys/time.h
index b6f45ba..8120aae 100644
--- a/rtemsbsd/include/rtems/bsd/sys/time.h
+++ b/rtemsbsd/include/rtems/bsd/sys/time.h
@@ -1,6 +1,11 @@
-/*-
- * Copyright (c) 1982, 1986, 1993
- *	The Regents of the University of California.  All rights reserved.
+/*
+ * Copyright (c) 2009-2015 embedded brains GmbH.  All rights reserved.
+ *
+ *  embedded brains GmbH
+ *  Dornierstr. 4
+ *  82178 Puchheim
+ *  Germany
+ *  <rtems at embedded-brains.de>
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -10,14 +15,11 @@
  * 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.
- * 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
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR 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)
@@ -25,257 +27,11 @@
  * 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.5 (Berkeley) 5/4/95
- * $FreeBSD$
  */
-
 #ifndef _RTEMS_BSD_SYS_TIME_H_
 #define _RTEMS_BSD_SYS_TIME_H_
 
-#include <sys/_timeval.h>
-#include <rtems/bsd/sys/types.h>
-#include <rtems/bsd/sys/timespec.h>
-#ifdef __rtems__
 #include <sys/time.h>
-#endif /* __rtems__ */
-
-#ifndef __rtems__
-struct timezone {
-	int	tz_minuteswest;	/* minutes west of Greenwich */
-	int	tz_dsttime;	/* type of dst correction */
-};
-#endif
-
-#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 */
-
-#if __BSD_VISIBLE
-struct bintime {
-	time_t	sec;
-	uint64_t frac;
-};
-
-static __inline void
-bintime_addx(struct bintime *bt, uint64_t x)
-{
-	uint64_t u;
-
-	u = bt->frac;
-	bt->frac += x;
-	if (u > bt->frac)
-		bt->sec++;
-}
-
-static __inline void
-bintime_add(struct bintime *bt, const struct bintime *bt2)
-{
-	uint64_t u;
-
-	u = bt->frac;
-	bt->frac += bt2->frac;
-	if (u > bt->frac)
-		bt->sec++;
-	bt->sec += bt2->sec;
-}
-
-static __inline void
-bintime_sub(struct bintime *bt, const struct bintime *bt2)
-{
-	uint64_t u;
-
-	u = bt->frac;
-	bt->frac -= bt2->frac;
-	if (u < bt->frac)
-		bt->sec--;
-	bt->sec -= bt2->sec;
-}
-
-/*-
- * Background information:
- *
- * When converting between timestamps on parallel timescales of differing
- * resolutions it is historical and scientific practice to round down rather
- * than doing 4/5 rounding.
- *
- *   The date changes at midnight, not at noon.
- *
- *   Even at 15:59:59.999999999 it's not four'o'clock.
- *
- *   time_second ticks after N.999999999 not after N.4999999999
- */
-
-static __inline void
-bintime2timespec(const struct bintime *bt, struct timespec *ts)
-{
-
-	ts->tv_sec = bt->sec;
-	ts->tv_nsec = ((uint64_t)1000000000 * (uint32_t)(bt->frac >> 32)) >> 32;
-}
-
-static __inline void
-timespec2bintime(const struct timespec *ts, struct bintime *bt)
-{
-
-	bt->sec = ts->tv_sec;
-	/* 18446744073 = int(2^64 / 1000000000) */
-	bt->frac = ts->tv_nsec * (uint64_t)18446744073LL;
-}
-
-static __inline void
-bintime2timeval(const struct bintime *bt, struct timeval *tv)
-{
-
-	tv->tv_sec = bt->sec;
-	tv->tv_usec = ((uint64_t)1000000 * (uint32_t)(bt->frac >> 32)) >> 32;
-}
-
-static __inline void
-timeval2bintime(const struct timeval *tv, struct bintime *bt)
-{
-
-	bt->sec = tv->tv_sec;
-	/* 18446744073709 = int(2^64 / 1000000) */
-	bt->frac = tv->tv_usec * (uint64_t)18446744073709LL;
-}
-#endif /* __BSD_VISIBLE */
-
-#ifdef _KERNEL
-
-/* Operations on timespecs */
-#define	timespecclear(tvp)	((tvp)->tv_sec = (tvp)->tv_nsec = 0)
-#define	timespecisset(tvp)	((tvp)->tv_sec || (tvp)->tv_nsec)
-#define	timespeccmp(tvp, uvp, cmp)					\
-	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
-	    ((tvp)->tv_nsec cmp (uvp)->tv_nsec) :			\
-	    ((tvp)->tv_sec cmp (uvp)->tv_sec))
-#define timespecadd(vvp, uvp)						\
-	do {								\
-		(vvp)->tv_sec += (uvp)->tv_sec;				\
-		(vvp)->tv_nsec += (uvp)->tv_nsec;			\
-		if ((vvp)->tv_nsec >= 1000000000) {			\
-			(vvp)->tv_sec++;				\
-			(vvp)->tv_nsec -= 1000000000;			\
-		}							\
-	} while (0)
-#define timespecsub(vvp, uvp)						\
-	do {								\
-		(vvp)->tv_sec -= (uvp)->tv_sec;				\
-		(vvp)->tv_nsec -= (uvp)->tv_nsec;			\
-		if ((vvp)->tv_nsec < 0) {				\
-			(vvp)->tv_sec--;				\
-			(vvp)->tv_nsec += 1000000000;			\
-		}							\
-	} while (0)
-
-/* Operations on timevals. */
-
-#define	timevalclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)
-#define	timevalisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
-#define	timevalcmp(tvp, uvp, cmp)					\
-	(((tvp)->tv_sec == (uvp)->tv_sec) ?				\
-	    ((tvp)->tv_usec cmp (uvp)->tv_usec) :			\
-	    ((tvp)->tv_sec cmp (uvp)->tv_sec))
-
-/* timevaladd and timevalsub are not inlined */
-
-#endif /* _KERNEL */
-
-#ifndef _KERNEL			/* NetBSD/OpenBSD compatible interfaces */
-
-#define	timerclear(tvp)		((tvp)->tv_sec = (tvp)->tv_usec = 0)
-#define	timerisset(tvp)		((tvp)->tv_sec || (tvp)->tv_usec)
-#ifndef __rtems__
-#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)
-#endif
-#endif
-
-/*
- * Names of the interval timers, and structure
- * defining a timer setting.
- */
-#define	ITIMER_REAL	0
-#define	ITIMER_VIRTUAL	1
-#define	ITIMER_PROF	2
-
-#ifndef __rtems__
-struct itimerval {
-	struct	timeval it_interval;	/* timer interval */
-	struct	timeval it_value;	/* current value */
-};
-#endif
-
-/*
- * Getkerninfo clock information structure
- */
-struct clockinfo {
-	int	hz;		/* clock frequency */
-	int	tick;		/* micro-seconds per hz tick */
-	int	spare;
-	int	stathz;		/* statistics clock frequency */
-	int	profhz;		/* profiling clock frequency */
-};
-
-/* These macros are also in time.h. */
-#ifndef CLOCK_REALTIME
-#define CLOCK_REALTIME	0
-#define CLOCK_VIRTUAL	1
-#define CLOCK_PROF	2
-#define CLOCK_MONOTONIC	4
-#define CLOCK_UPTIME	5		/* FreeBSD-specific. */
-#define CLOCK_UPTIME_PRECISE	7	/* FreeBSD-specific. */
-#define CLOCK_UPTIME_FAST	8	/* FreeBSD-specific. */
-#define CLOCK_REALTIME_PRECISE	9	/* FreeBSD-specific. */
-#define CLOCK_REALTIME_FAST	10	/* FreeBSD-specific. */
-#define CLOCK_MONOTONIC_PRECISE	11	/* FreeBSD-specific. */
-#define CLOCK_MONOTONIC_FAST	12	/* FreeBSD-specific. */
-#define CLOCK_SECOND	13		/* FreeBSD-specific. */
-#define CLOCK_THREAD_CPUTIME_ID	14
-#endif
-
-#ifndef TIMER_ABSTIME
-#define TIMER_RELTIME	0x0	/* relative timer */
-#define TIMER_ABSTIME	0x1	/* absolute timer */
-#endif
-
-#ifdef _KERNEL
-
-/*
- * Kernel to clock driver interface.
- */
-void	inittodr(time_t base);
-void	resettodr(void);
-
-#ifndef __rtems__
-extern time_t	time_second;
-extern time_t	time_uptime;
-#else /* __rtems__ */
 #include <rtems.h>
 
 static inline time_t
@@ -292,137 +48,5 @@ rtems_bsd_time_uptime(void)
 
 #define time_second rtems_bsd_time_second()
 #define time_uptime rtems_bsd_time_uptime()
-#endif /* __rtems__ */
-extern struct bintime boottimebin;
-extern struct timeval boottime;
-
-/*
- * Functions for looking at our clock: [get]{bin,nano,micro}[up]time()
- *
- * Functions without the "get" prefix returns the best timestamp
- * we can produce in the given format.
- *
- * "bin"   == struct bintime  == seconds + 64 bit fraction of seconds.
- * "nano"  == struct timespec == seconds + nanoseconds.
- * "micro" == struct timeval  == seconds + microseconds.
- *
- * Functions containing "up" returns time relative to boot and
- * should be used for calculating time intervals.
- *
- * Functions without "up" returns GMT time.
- *
- * Functions with the "get" prefix returns a less precise result
- * much faster than the functions without "get" prefix and should
- * be used where a precision of 10 msec is acceptable or where
- * performance is priority. (NB: "precision", _not_ "resolution" !)
- *
- */
-
-#ifndef __rtems__
-void	binuptime(struct bintime *bt);
-#else /* __rtems__ */
-static inline void
-binuptime(struct bintime *bt)
-{
-	struct timeval tv;
-
-	rtems_clock_get_uptime_timeval(&tv);
-	timeval2bintime(&tv, bt);
-}
-#endif /* __rtems__ */
-void	nanouptime(struct timespec *tsp);
-void	microuptime(struct timeval *tvp);
-
-#ifndef __rtems__
-void	bintime(struct bintime *bt);
-#else /* __rtems__ */
-static inline void
-bintime(struct bintime *bt)
-{
-	struct timeval tv;
-
-	gettimeofday(&tv, NULL);
-	timeval2bintime(&tv, bt);
-}
-#endif /* __rtems__ */
-void	nanotime(struct timespec *tsp);
-#ifndef __rtems__
-void	microtime(struct timeval *tvp);
-#else /* __rtems__ */
-static inline void
-microtime(struct timeval *tvp)
-{
-	gettimeofday(tvp, NULL);
-}
-#endif /* __rtems__ */
-
-#ifndef __rtems__
-void	getbinuptime(struct bintime *bt);
-#else /* __rtems__ */
-static inline void
-getbinuptime(struct bintime *bt)
-{
-	binuptime(bt);
-}
-#endif /* __rtems__ */
-void	getnanouptime(struct timespec *tsp);
-#ifndef __rtems__
-void	getmicrouptime(struct timeval *tvp);
-#else /* __rtems__ */
-static inline void
-getmicrouptime(struct timeval *tvp)
-{
-	rtems_clock_get_uptime_timeval(tvp);
-}
-#endif /* __rtems__ */
-
-void	getbintime(struct bintime *bt);
-void	getnanotime(struct timespec *tsp);
-#ifndef __rtems__
-void	getmicrotime(struct timeval *tvp);
-#else /* __rtems__ */
-static inline void
-getmicrotime(struct timeval *tvp)
-{
-	microtime(tvp);
-}
-#endif /* __rtems__ */
-
-/* Other functions */
-int	itimerdecr(struct itimerval *itp, int usec);
-int	itimerfix(struct timeval *tv);
-int	ppsratecheck(struct timeval *, int *, int);
-int	ratecheck(struct timeval *, const struct timeval *);
-void	timevaladd(struct timeval *t1, const struct timeval *t2);
-void	timevalsub(struct timeval *t1, const struct timeval *t2);
-int	tvtohz(struct timeval *tv);
-#else /* !_KERNEL */
-#include <time.h>
-
-#include <sys/cdefs.h>
-#include <sys/select.h>
-
-__BEGIN_DECLS
-int	setitimer(int, const struct itimerval *, struct itimerval *);
-int	utimes(const char *, const struct timeval *);
-
-#if __BSD_VISIBLE
-int	adjtime(const struct timeval *, struct timeval *);
-int	futimes(int, const struct timeval *);
-int	futimesat(int, const char *, const struct timeval [2]);
-int	lutimes(const char *, const struct timeval *);
-int	settimeofday(const struct timeval *, const struct timezone *);
-#endif
-
-#ifndef __rtems__
-#if __XSI_VISIBLE
-int	getitimer(int, struct itimerval *);
-int	gettimeofday(struct timeval *, struct timezone *);
-#endif
-#endif
-
-__END_DECLS
-
-#endif /* !_KERNEL */
 
-#endif /* !_RTEMS_BSD_SYS_TIME_H_ */
+#endif /* _RTEMS_BSD_SYS_TIME_H_ */
diff --git a/rtemsbsd/include/rtems/bsd/sys/timespec.h b/rtemsbsd/include/rtems/bsd/sys/timespec.h
index 19a4ba3..6f9ecd7 100644
--- a/rtemsbsd/include/rtems/bsd/sys/timespec.h
+++ b/rtemsbsd/include/rtems/bsd/sys/timespec.h
@@ -1,80 +1 @@
-/*-
- * 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.
- * 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.5 (Berkeley) 5/4/95
- * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
- *	$FreeBSD$
- */
-
-/*
- * Prerequisites: <sys/cdefs.h>, <sys/_types.h>
- */
-
-#ifndef _RTEMS_BSD_SYS_TIMESPEC_H_
-#define _RTEMS_BSD_SYS_TIMESPEC_H_
-
-#ifndef __rtems__
-#ifndef _TIME_T_DECLARED
-typedef	__time_t	time_t;
-#define	_TIME_T_DECLARED
-#endif
-
-struct timespec {
-	time_t	tv_sec;		/* seconds */
-	long	tv_nsec;	/* and nanoseconds */
-};
-#else /* __rtems__ */
-#include <rtems/bsd/sys/types.h>
-#endif /* __rtems__ */
-
-#if __BSD_VISIBLE
-#define	TIMEVAL_TO_TIMESPEC(tv, ts)					\
-	do {								\
-		(ts)->tv_sec = (tv)->tv_sec;				\
-		(ts)->tv_nsec = (tv)->tv_usec * 1000;			\
-	} while (0)
-#define	TIMESPEC_TO_TIMEVAL(tv, ts)					\
-	do {								\
-		(tv)->tv_sec = (ts)->tv_sec;				\
-		(tv)->tv_usec = (ts)->tv_nsec / 1000;			\
-	} while (0)
-
-#endif /* __BSD_VISIBLE */
-
-#ifndef __rtems__
-/*
- * Structure defined by POSIX.1b to be like a itimerval, but with
- * timespecs. Used in the timer_*() system calls.
- */
-struct itimerspec {
-	struct timespec  it_interval;
-	struct timespec  it_value;
-};
-#endif /* __rtems__ */
-
-#endif /* _RTEMS_BSD_SYS_TIMESPEC_H_ */
+#include <sys/timespec.h>
diff --git a/rtemsbsd/rtems/rtems-bsd-timesupport.c b/rtemsbsd/rtems/rtems-bsd-timesupport.c
index ef14d1f..efa80c5 100644
--- a/rtemsbsd/rtems/rtems-bsd-timesupport.c
+++ b/rtemsbsd/rtems/rtems-bsd-timesupport.c
@@ -52,3 +52,45 @@ tvtohz(struct timeval *tv)
 
   return (int) _Timespec_To_ticks( &ts );
 }
+
+void
+binuptime(struct bintime *bt)
+{
+	struct timeval tv;
+
+	rtems_clock_get_uptime_timeval(&tv);
+	timeval2bintime(&tv, bt);
+}
+
+void
+bintime(struct bintime *bt)
+{
+	struct timeval tv;
+
+	gettimeofday(&tv, NULL);
+	timeval2bintime(&tv, bt);
+}
+
+void
+microtime(struct timeval *tvp)
+{
+	gettimeofday(tvp, NULL);
+}
+
+void
+getbinuptime(struct bintime *bt)
+{
+	binuptime(bt);
+}
+
+void
+getmicrouptime(struct timeval *tvp)
+{
+	rtems_clock_get_uptime_timeval(tvp);
+}
+
+void
+getmicrotime(struct timeval *tvp)
+{
+	microtime(tvp);
+}




More information about the vc mailing list