summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-04-08 07:52:14 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-04-08 07:58:52 +0200
commitc6e85efd7ee837afe9d40bbb620af4afb730e77e (patch)
tree9ccf6d63d36266ff913e9917fb922a37bd1599ac
parentSLEEPQUEUE(9): Include missing header file (diff)
downloadrtems-libbsd-c6e85efd7ee837afe9d40bbb620af4afb730e77e.tar.bz2
Use signed integer type for ticks
-rw-r--r--freebsd/sys/sys/kernel.h8
-rw-r--r--rtemsbsd/rtems/rtems-bsd-init.c7
2 files changed, 13 insertions, 2 deletions
diff --git a/freebsd/sys/sys/kernel.h b/freebsd/sys/sys/kernel.h
index c739cd55..687ee531 100644
--- a/freebsd/sys/sys/kernel.h
+++ b/freebsd/sys/sys/kernel.h
@@ -68,8 +68,12 @@ extern int profprocs; /* number of process's profiling */
#ifndef __rtems__
extern volatile int ticks;
#else /* __rtems__ */
-#include <rtems/score/watchdogimpl.h>
-#define ticks _Watchdog_Ticks_since_boot
+/*
+ * This must be a singed integer type, otherwise expressions like
+ * (x - ticks) > 0 would yield unexpected results.
+ */
+extern volatile int32_t _bsd_ticks;
+#define ticks _bsd_ticks
#endif /* __rtems__ */
#endif /* _KERNEL */
diff --git a/rtemsbsd/rtems/rtems-bsd-init.c b/rtemsbsd/rtems/rtems-bsd-init.c
index f7fcd270..fefcee33 100644
--- a/rtemsbsd/rtems/rtems-bsd-init.c
+++ b/rtemsbsd/rtems/rtems-bsd-init.c
@@ -85,6 +85,13 @@ SYSCTL_INT(_kern_smp, OID_AUTO, maxid, CTLFLAG_RD|CTLFLAG_CAPRD,
SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD|CTLFLAG_CAPRD,
&maxid_maxcpus, 0, "Max number of CPUs that the system was compiled for.");
+RTEMS_STATIC_ASSERT(sizeof(int) == sizeof(int32_t), ticks);
+
+volatile uint32_t _Watchdog_Ticks_since_boot;
+
+extern volatile int32_t _bsd_ticks
+ __attribute__ ((__alias__("_Watchdog_Ticks_since_boot")));
+
rtems_status_code
rtems_bsd_initialize(void)
{