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.
This commit is contained in:
Sebastian Huber
2017-10-24 09:37:22 +02:00
parent 028786263f
commit 27cfe7c86b
4 changed files with 19 additions and 4 deletions
+1 -4
View File
@@ -19,11 +19,8 @@
#endif
#include <rtems/rtems/clock.h>
#include <rtems/score/todimpl.h>
#include <rtems/config.h>
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;
}
+4
View File
@@ -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.
*/
@@ -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
* <rtems/confdefs.h>.
*/
extern const uint32_t _Watchdog_Ticks_per_second;
/**@}*/
#ifdef __cplusplus
+6
View File
@@ -57,6 +57,11 @@ static void test_watchdog_static_init( void )
rtems_test_assert( memcmp( &a, &b, sizeof( a ) ) == 0 );
}
static void test_watchdog_config( void )
{
rtems_test_assert( _Watchdog_Ticks_per_second == 100 );
}
static bool test_watchdog_is_inactive( test_watchdog *watchdog )
{
return _Watchdog_Get_state( &watchdog->Base ) == WATCHDOG_INACTIVE;
@@ -227,6 +232,7 @@ rtems_task Init(
test_watchdog_operations();
test_watchdog_static_init();
test_watchdog_config();
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 );