From c6e85efd7ee837afe9d40bbb620af4afb730e77e Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 8 Apr 2015 07:52:14 +0200 Subject: [PATCH] Use signed integer type for ticks --- freebsd/sys/sys/kernel.h | 8 ++++++-- rtemsbsd/rtems/rtems-bsd-init.c | 7 +++++++ 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 -#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) {