From 27cfe7c86ba0801f4961871869ec4e691ca694f3 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 20 Oct 2017 08:31:36 +0200 Subject: score: Add _Watchdog_Ticks_per_second This value is frequently used. Avoid the function call overhead and the integer division at run-time. Update #3117. Update #3182. --- cpukit/rtems/src/clockgettickspersecond.c | 5 +---- cpukit/sapi/include/confdefs.h | 4 ++++ cpukit/score/include/rtems/score/watchdog.h | 8 ++++++++ 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'cpukit') diff --git a/cpukit/rtems/src/clockgettickspersecond.c b/cpukit/rtems/src/clockgettickspersecond.c index f49c91cbd3..a2f78eb627 100644 --- a/cpukit/rtems/src/clockgettickspersecond.c +++ b/cpukit/rtems/src/clockgettickspersecond.c @@ -19,11 +19,8 @@ #endif #include -#include -#include rtems_interval rtems_clock_get_ticks_per_second(void) { - return TOD_MICROSECONDS_PER_SECOND / - rtems_configuration_get_microseconds_per_tick(); + return _Watchdog_Ticks_per_second; } diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index a64170bdff..3dfcf9b2d5 100755 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -2287,6 +2287,8 @@ extern rtems_initialization_tasks_table Initialization_tasks[]; RTEMS_MILLISECONDS_TO_MICROSECONDS(10) #endif + #define _CONFIGURE_TICKS_PER_SECOND (1000000 / CONFIGURE_MICROSECONDS_PER_TICK) + /** The configures the number of clock ticks per timeslice. */ #ifndef CONFIGURE_TICKS_PER_TIMESLICE #define CONFIGURE_TICKS_PER_TIMESLICE 50 @@ -3102,6 +3104,8 @@ extern rtems_initialization_tasks_table Initialization_tasks[]; const size_t _Thread_Control_add_on_count = RTEMS_ARRAY_SIZE( _Thread_Control_add_ons ); + const uint32_t _Watchdog_Ticks_per_second = _CONFIGURE_TICKS_PER_SECOND; + /** * This is the Classic API Configuration Table. */ diff --git a/cpukit/score/include/rtems/score/watchdog.h b/cpukit/score/include/rtems/score/watchdog.h index 11a5974c26..bbe2a93b26 100644 --- a/cpukit/score/include/rtems/score/watchdog.h +++ b/cpukit/score/include/rtems/score/watchdog.h @@ -158,6 +158,14 @@ struct Watchdog_Control { */ extern volatile Watchdog_Interval _Watchdog_Ticks_since_boot; +/** + * @brief The watchdog ticks per second. + * + * This constant is defined by the application configuration via + * . + */ +extern const uint32_t _Watchdog_Ticks_per_second; + /**@}*/ #ifdef __cplusplus -- cgit v1.2.3