[PATCH v2] score: Change _Timecounter_Time_uptime to int32_t

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Oct 25 05:40:08 UTC 2017


Move basic timecounter API shared with BSD network stack to
<machine/_timecounter.h>.

Close #3185.
---
 cpukit/libcsupport/Makefile.am                    |  1 +
 cpukit/libcsupport/include/machine/_kernel_time.h |  2 +
 cpukit/libcsupport/include/machine/_timecounter.h | 53 +++++++++++++++++++++++
 cpukit/libcsupport/preinstall.am                  |  4 ++
 cpukit/score/include/rtems/score/timecounter.h    |  3 +-
 cpukit/score/src/kern_tc.c                        |  3 +-
 6 files changed, 64 insertions(+), 2 deletions(-)
 create mode 100644 cpukit/libcsupport/include/machine/_timecounter.h

diff --git a/cpukit/libcsupport/Makefile.am b/cpukit/libcsupport/Makefile.am
index 66a8aa06da..0b192aa6b0 100644
--- a/cpukit/libcsupport/Makefile.am
+++ b/cpukit/libcsupport/Makefile.am
@@ -29,6 +29,7 @@ include_machine_HEADERS += include/machine/_kernel_cpuset.h
 include_machine_HEADERS += include/machine/_kernel_param.h
 include_machine_HEADERS += include/machine/_kernel_time.h
 include_machine_HEADERS += include/machine/_kernel_types.h
+include_machine_HEADERS += include/machine/_timecounter.h
 
 ##  General stuff
 ERROR_C_FILES = src/error.c src/__assert.c
diff --git a/cpukit/libcsupport/include/machine/_kernel_time.h b/cpukit/libcsupport/include/machine/_kernel_time.h
index 51fa719442..8200b6a73e 100644
--- a/cpukit/libcsupport/include/machine/_kernel_time.h
+++ b/cpukit/libcsupport/include/machine/_kernel_time.h
@@ -28,6 +28,8 @@
 #error "must be included via <sys/time.h> in kernel space"
 #endif
 
+#include <machine/_timecounter.h>
+
 /* Operations on timespecs */
 #define	timespecclear(tvp)	((tvp)->tv_sec = (tvp)->tv_nsec = 0)
 #define	timespecisset(tvp)	((tvp)->tv_sec || (tvp)->tv_nsec)
diff --git a/cpukit/libcsupport/include/machine/_timecounter.h b/cpukit/libcsupport/include/machine/_timecounter.h
new file mode 100644
index 0000000000..fb974f13c1
--- /dev/null
+++ b/cpukit/libcsupport/include/machine/_timecounter.h
@@ -0,0 +1,53 @@
+/*-
+ * Copyright (c) 2016 embedded brains GmbH
+ * 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.
+ */
+
+#ifndef _SYS_TIME_H_
+#error "<sys/time.h> must be included first"
+#endif /* !_SYS_TIME_H_ */
+
+#ifndef _MACHINE__TIMECOUNTER_H_
+#define _MACHINE__TIMECOUNTER_H_
+
+__BEGIN_DECLS
+extern volatile time_t _Timecounter_Time_second;
+extern volatile int32_t _Timecounter_Time_uptime;
+extern struct bintime _Timecounter_Boottimebin;
+
+void   _Timecounter_Binuptime(struct bintime *);
+void   _Timecounter_Nanouptime(struct timespec *);
+void   _Timecounter_Microuptime(struct timeval *);
+void   _Timecounter_Bintime(struct bintime *);
+void   _Timecounter_Nanotime(struct timespec *);
+void   _Timecounter_Microtime(struct timeval *);
+void   _Timecounter_Getbinuptime(struct bintime *);
+void   _Timecounter_Getnanouptime(struct timespec *);
+void   _Timecounter_Getmicrouptime(struct timeval *);
+void   _Timecounter_Getbintime(struct bintime *);
+void   _Timecounter_Getnanotime(struct timespec *);
+void   _Timecounter_Getmicrotime(struct timeval *);
+__END_DECLS
+
+#endif /* _MACHINE__TIMECOUNTER_H_ */
diff --git a/cpukit/libcsupport/preinstall.am b/cpukit/libcsupport/preinstall.am
index 074e6c1a29..01a128e2ff 100644
--- a/cpukit/libcsupport/preinstall.am
+++ b/cpukit/libcsupport/preinstall.am
@@ -95,3 +95,7 @@ $(PROJECT_INCLUDE)/machine/_kernel_types.h: include/machine/_kernel_types.h $(PR
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/machine/_kernel_types.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/machine/_kernel_types.h
 
+$(PROJECT_INCLUDE)/machine/_timecounter.h: include/machine/_timecounter.h $(PROJECT_INCLUDE)/machine/$(dirstamp)
+	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/machine/_timecounter.h
+PREINSTALL_FILES += $(PROJECT_INCLUDE)/machine/_timecounter.h
+
diff --git a/cpukit/score/include/rtems/score/timecounter.h b/cpukit/score/include/rtems/score/timecounter.h
index 1c318e2a78..79444de482 100644
--- a/cpukit/score/include/rtems/score/timecounter.h
+++ b/cpukit/score/include/rtems/score/timecounter.h
@@ -25,6 +25,7 @@
 
 #include <sys/time.h>
 #include <sys/timetc.h>
+#include <machine/_timecounter.h>
 
 #include <rtems/score/isrlock.h>
 
@@ -227,7 +228,7 @@ extern volatile time_t _Timecounter_Time_second;
  * For compatibility with the FreeBSD network stack the initial value is one
  * second.
  */
-extern volatile time_t _Timecounter_Time_uptime;
+extern volatile int32_t _Timecounter_Time_uptime;
 
 /**
  * @brief The current timecounter.
diff --git a/cpukit/score/src/kern_tc.c b/cpukit/score/src/kern_tc.c
index 55aa0ae255..99c6664fcb 100644
--- a/cpukit/score/src/kern_tc.c
+++ b/cpukit/score/src/kern_tc.c
@@ -203,10 +203,11 @@ int tc_min_ticktock_freq = 1;
 
 #ifndef __rtems__
 volatile time_t time_second = 1;
+volatile time_t time_uptime = 1;
 #else /* __rtems__ */
 volatile time_t time_second = TOD_SECONDS_1970_THROUGH_1988;
+volatile int32_t time_uptime = 1;
 #endif /* __rtems__ */
-volatile time_t time_uptime = 1;
 
 #ifndef __rtems__
 static int sysctl_kern_boottime(SYSCTL_HANDLER_ARGS);
-- 
2.12.3



More information about the devel mailing list