From c727e4a22e6046b69329a13c1560680cec61be92 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 13 May 2019 11:19:05 +0200 Subject: Separate libbsd and RTEMS clock ticks --- .../include/machine/rtems-bsd-kernel-namespace.h | 1 + rtemsbsd/rtems/rtems-kernel-init.c | 20 ++++++++++---------- rtemsbsd/rtems/rtems-kernel-thread.c | 2 -- 3 files changed, 11 insertions(+), 12 deletions(-) (limited to 'rtemsbsd') diff --git a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h index d1b0d715..d7967c65 100644 --- a/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h +++ b/rtemsbsd/include/machine/rtems-bsd-kernel-namespace.h @@ -4939,6 +4939,7 @@ #define ticket_altqs_active _bsd_ticket_altqs_active #define ticket_altqs_inactive _bsd_ticket_altqs_inactive #define ticket_pabuf _bsd_ticket_pabuf +#define ticks _bsd_ticks #define tick_sbt _bsd_tick_sbt #define ti_hwmods _bsd_ti_hwmods #define ti_hwmods_contains _bsd_ti_hwmods_contains diff --git a/rtemsbsd/rtems/rtems-kernel-init.c b/rtemsbsd/rtems/rtems-kernel-init.c index 846ca1f1..ac03fedf 100644 --- a/rtemsbsd/rtems/rtems-kernel-init.c +++ b/rtemsbsd/rtems/rtems-kernel-init.c @@ -85,6 +85,7 @@ void mi_startup(void); int hz; int tick; +volatile int ticks; sbintime_t tick_sbt; struct bintime bt_timethreshold; struct bintime bt_tickthreshold; @@ -105,22 +106,21 @@ 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."); -#undef _bsd_ticks - -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) { static const char name[] = "TIME"; rtems_status_code sc; + int tps; + + /* + * Limit the libbsd ticks per second to 100Hz. This helps to reduce + * the processor load on low end targets which use 1000Hz for the RTEMS + * clock tick. + */ + tps = (int)rtems_clock_get_ticks_per_second(); + hz = MIN(100, tps); - hz = (int) rtems_clock_get_ticks_per_second(); tick = 1000000 / hz; tick_sbt = SBT_1S / hz; FREQ2BT(hz, &tc_tick_bt); diff --git a/rtemsbsd/rtems/rtems-kernel-thread.c b/rtemsbsd/rtems/rtems-kernel-thread.c index 8d8f30a5..8e3344ef 100644 --- a/rtemsbsd/rtems/rtems-kernel-thread.c +++ b/rtemsbsd/rtems/rtems-kernel-thread.c @@ -53,8 +53,6 @@ #include -#undef ticks - #include #include #include -- cgit v1.2.3