mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-09-20 14:46:42 +08:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user