From 34799c3bc1667dfe99cb929c3703ee994836487c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 24 Oct 2017 09:35:06 +0200 Subject: rtems: rtems_clock_get_ticks_per_second() Add macro implementation for rtems_clock_get_ticks_per_second() for C/C++ to avoid the function call overhead. A rtems_clock_get_ticks_per_second() is still provided for language bindings (e.g. Ada). --- cpukit/rtems/include/rtems/rtems/clock.h | 3 +++ cpukit/rtems/src/clockgettickspersecond.c | 2 ++ testsuites/sptests/spwatchdog/init.c | 3 +++ 3 files changed, 8 insertions(+) diff --git a/cpukit/rtems/include/rtems/rtems/clock.h b/cpukit/rtems/include/rtems/rtems/clock.h index b1ae8845a6..a837b88700 100644 --- a/cpukit/rtems/include/rtems/rtems/clock.h +++ b/cpukit/rtems/include/rtems/rtems/clock.h @@ -198,6 +198,9 @@ RTEMS_INLINE_ROUTINE bool rtems_clock_tick_before( */ rtems_interval rtems_clock_get_ticks_per_second(void); +/* Optimized variant for C/C++ without function call overhead */ +#define rtems_clock_get_ticks_per_second() ( _Watchdog_Ticks_per_second ) + /** * @brief Set the Current TOD * diff --git a/cpukit/rtems/src/clockgettickspersecond.c b/cpukit/rtems/src/clockgettickspersecond.c index a2f78eb627..07497cfd58 100644 --- a/cpukit/rtems/src/clockgettickspersecond.c +++ b/cpukit/rtems/src/clockgettickspersecond.c @@ -20,6 +20,8 @@ #include +#undef rtems_clock_get_ticks_per_second + rtems_interval rtems_clock_get_ticks_per_second(void) { return _Watchdog_Ticks_per_second; diff --git a/testsuites/sptests/spwatchdog/init.c b/testsuites/sptests/spwatchdog/init.c index d212fbb37a..5ab6958d46 100644 --- a/testsuites/sptests/spwatchdog/init.c +++ b/testsuites/sptests/spwatchdog/init.c @@ -62,6 +62,9 @@ static void test_watchdog_config( void ) rtems_test_assert( _Watchdog_Nanoseconds_per_tick == 10000000 ); rtems_test_assert( _Watchdog_Ticks_per_second == 100 ); rtems_test_assert( _Watchdog_Monotonic_max_seconds == 184467440737095516 ); + rtems_test_assert( rtems_clock_get_ticks_per_second() == 100 ); + #undef rtems_clock_get_ticks_per_second + rtems_test_assert( rtems_clock_get_ticks_per_second() == 100 ); } static bool test_watchdog_is_inactive( test_watchdog *watchdog ) -- cgit v1.2.3