summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-24 09:35:06 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-25 07:26:37 +0200
commit34799c3bc1667dfe99cb929c3703ee994836487c (patch)
treea01c426b31241322736a7c54745dac3714d8a6c2
parenttestsuite: Fix build (diff)
downloadrtems-34799c3bc1667dfe99cb929c3703ee994836487c.tar.bz2
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).
-rw-r--r--cpukit/rtems/include/rtems/rtems/clock.h3
-rw-r--r--cpukit/rtems/src/clockgettickspersecond.c2
-rw-r--r--testsuites/sptests/spwatchdog/init.c3
3 files changed, 8 insertions, 0 deletions
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 <rtems/rtems/clock.h>
+#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 )