forked from Imagelibrary/rtems
score: New structure TOD_Control
Group the global TOD variables (_TOD_Now, _TOD_Uptime, and _TOD_Is_set) in a structure to reduce address loads in _TOD_Tickle_ticks().
This commit is contained in:
@@ -28,7 +28,7 @@ rtems_status_code rtems_clock_get_seconds_since_epoch(
|
||||
if ( !the_interval )
|
||||
return RTEMS_INVALID_ADDRESS;
|
||||
|
||||
if ( !_TOD_Is_set )
|
||||
if ( !_TOD.is_set )
|
||||
return RTEMS_NOT_DEFINED;
|
||||
|
||||
*the_interval = _TOD_Seconds_since_epoch();
|
||||
|
||||
@@ -33,7 +33,7 @@ rtems_status_code rtems_clock_get_tod(
|
||||
if ( !time_buffer )
|
||||
return RTEMS_INVALID_ADDRESS;
|
||||
|
||||
if ( !_TOD_Is_set )
|
||||
if ( !_TOD.is_set )
|
||||
return RTEMS_NOT_DEFINED;
|
||||
|
||||
/* Obtain the current time */
|
||||
|
||||
@@ -28,7 +28,7 @@ rtems_status_code rtems_clock_get_tod_timeval(
|
||||
if ( !time )
|
||||
return RTEMS_INVALID_ADDRESS;
|
||||
|
||||
if ( !_TOD_Is_set )
|
||||
if ( !_TOD.is_set )
|
||||
return RTEMS_NOT_DEFINED;
|
||||
|
||||
_TOD_Get_timeval( time );
|
||||
|
||||
@@ -51,7 +51,7 @@ rtems_status_code rtems_task_wake_when(
|
||||
{
|
||||
Watchdog_Interval seconds;
|
||||
|
||||
if ( !_TOD_Is_set )
|
||||
if ( !_TOD.is_set )
|
||||
return RTEMS_NOT_DEFINED;
|
||||
|
||||
if ( !time_buffer )
|
||||
|
||||
@@ -50,7 +50,7 @@ rtems_status_code rtems_timer_fire_when(
|
||||
Objects_Locations location;
|
||||
rtems_interval seconds;
|
||||
|
||||
if ( !_TOD_Is_set )
|
||||
if ( !_TOD.is_set )
|
||||
return RTEMS_NOT_DEFINED;
|
||||
|
||||
if ( !_TOD_Validate( wall_time ) )
|
||||
|
||||
@@ -55,7 +55,7 @@ rtems_status_code rtems_timer_server_fire_when(
|
||||
if ( !timer_server )
|
||||
return RTEMS_INCORRECT_STATE;
|
||||
|
||||
if ( !_TOD_Is_set )
|
||||
if ( !_TOD.is_set )
|
||||
return RTEMS_NOT_DEFINED;
|
||||
|
||||
if ( !routine )
|
||||
|
||||
@@ -123,26 +123,29 @@ extern "C" {
|
||||
/**@{*/
|
||||
|
||||
/**
|
||||
* @brief Is the Time Of Day Set
|
||||
*
|
||||
* This is true if the application has set the current
|
||||
* time of day, and false otherwise.
|
||||
* @brief TOD control.
|
||||
*/
|
||||
SCORE_EXTERN bool _TOD_Is_set;
|
||||
typedef struct {
|
||||
/**
|
||||
* @brief Current time of day value.
|
||||
*/
|
||||
Timestamp_Control now;
|
||||
|
||||
/**
|
||||
* @brief Current Time of Day (Timespec)
|
||||
*
|
||||
* The following contains the current time of day.
|
||||
*/
|
||||
SCORE_EXTERN Timestamp_Control _TOD_Now;
|
||||
/**
|
||||
* @brief System uptime.
|
||||
*/
|
||||
Timestamp_Control uptime;
|
||||
|
||||
/**
|
||||
* @brief Current Time of Day (Timespec)
|
||||
*
|
||||
* The following contains the running uptime.
|
||||
*/
|
||||
SCORE_EXTERN Timestamp_Control _TOD_Uptime;
|
||||
/**
|
||||
* @brief Indicates if the time of day is set.
|
||||
*
|
||||
* This is true if the application has set the current
|
||||
* time of day, and false otherwise.
|
||||
*/
|
||||
bool is_set;
|
||||
} TOD_Control;
|
||||
|
||||
SCORE_EXTERN TOD_Control _TOD;
|
||||
|
||||
/**
|
||||
* @brief Seconds Since RTEMS Epoch
|
||||
@@ -151,7 +154,7 @@ SCORE_EXTERN Timestamp_Control _TOD_Uptime;
|
||||
* January 1, TOD_BASE_YEAR until the current time of day.
|
||||
*/
|
||||
#define _TOD_Seconds_since_epoch() \
|
||||
_Timestamp_Get_seconds(&_TOD_Now)
|
||||
_Timestamp_Get_seconds(&_TOD.now)
|
||||
|
||||
/**
|
||||
* @brief _TOD_Handler_initialization
|
||||
|
||||
@@ -33,12 +33,12 @@
|
||||
void _TOD_Handler_initialization(void)
|
||||
{
|
||||
/* POSIX format TOD (timespec) */
|
||||
_Timestamp_Set( &_TOD_Now, TOD_SECONDS_1970_THROUGH_1988, 0 );
|
||||
_Timestamp_Set( &_TOD.now, TOD_SECONDS_1970_THROUGH_1988, 0 );
|
||||
|
||||
/* Uptime (timespec) */
|
||||
_Timestamp_Set_to_zero( &_TOD_Uptime );
|
||||
_Timestamp_Set_to_zero( &_TOD.uptime );
|
||||
|
||||
/* TOD has not been set */
|
||||
_TOD_Is_set = false;
|
||||
_TOD.is_set = false;
|
||||
_TOD_Activate();
|
||||
}
|
||||
|
||||
@@ -31,9 +31,9 @@ void _TOD_Get_as_timestamp(
|
||||
|
||||
/* assume time checked for NULL by caller */
|
||||
|
||||
/* _TOD_Now is the native current time */
|
||||
/* _TOD.now is the native current time */
|
||||
_ISR_Disable( level );
|
||||
now = _TOD_Now;
|
||||
now = _TOD.now;
|
||||
nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)();
|
||||
_ISR_Enable( level );
|
||||
|
||||
|
||||
@@ -42,9 +42,9 @@ void _TOD_Get_uptime(
|
||||
|
||||
/* assume time checked for NULL by caller */
|
||||
|
||||
/* _TOD_Uptime is in native timestamp format */
|
||||
/* _TOD.uptime is in native timestamp format */
|
||||
_ISR_Disable( level );
|
||||
up = _TOD_Uptime;
|
||||
up = _TOD.uptime;
|
||||
nanoseconds = (*_Watchdog_Nanoseconds_since_tick_handler)();
|
||||
_ISR_Enable( level );
|
||||
|
||||
|
||||
@@ -38,8 +38,8 @@ void _TOD_Set_with_timestamp(
|
||||
else
|
||||
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
|
||||
|
||||
_TOD_Now = *tod;
|
||||
_TOD_Is_set = true;
|
||||
_TOD.now = *tod;
|
||||
_TOD.is_set = true;
|
||||
|
||||
_TOD_Activate();
|
||||
_Thread_Enable_dispatch();
|
||||
|
||||
@@ -44,11 +44,11 @@ void _TOD_Tickle_ticks( void )
|
||||
_Watchdog_Ticks_since_boot += 1;
|
||||
|
||||
/* Update the timespec format uptime */
|
||||
_Timestamp_Add_to( &_TOD_Uptime, &tick );
|
||||
_Timestamp_Add_to( &_TOD.uptime, &tick );
|
||||
/* we do not care how much the uptime changed */
|
||||
|
||||
/* Update the timespec format TOD */
|
||||
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
|
||||
seconds = _Timestamp_Add_to_at_tick( &_TOD.now, &tick );
|
||||
while ( seconds ) {
|
||||
_Watchdog_Tickle_seconds();
|
||||
seconds--;
|
||||
|
||||
@@ -406,8 +406,8 @@ uninitialized =
|
||||
|
||||
/*timer.h*/ (sizeof _Timer_Information) +
|
||||
|
||||
/*tod.h*/ (sizeof _TOD_Now) +
|
||||
(sizeof _TOD_Uptime) +
|
||||
/*tod.h*/ (sizeof _TOD.now) +
|
||||
(sizeof _TOD.uptime) +
|
||||
|
||||
/*tqdata.h*/ 0 +
|
||||
|
||||
|
||||
Reference in New Issue
Block a user