summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-06 15:30:47 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2017-10-09 08:30:03 +0200
commit2256946e9c0bc452004521d7aeeb68b72f680f42 (patch)
tree1a46bee10c6e92482125405b902ab75bfd8fd5e9 /cpukit/score
parentscore: Simplify _Timestamp_Add_to() (diff)
downloadrtems-2256946e9c0bc452004521d7aeeb68b72f680f42.tar.bz2
score: Use struct timespec for TOD
Use the timestamps only for uptime based values. Use struct timespec for the absolute time values (TOD). Update #2740.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/include/rtems/score/todimpl.h54
-rw-r--r--cpukit/score/src/coretodabsolutetimeout.c2
-rw-r--r--cpukit/score/src/coretodadjust.c8
-rw-r--r--cpukit/score/src/coretodset.c12
4 files changed, 19 insertions, 57 deletions
diff --git a/cpukit/score/include/rtems/score/todimpl.h b/cpukit/score/include/rtems/score/todimpl.h
index 03f25b5ae0..f5dba85f8c 100644
--- a/cpukit/score/include/rtems/score/todimpl.h
+++ b/cpukit/score/include/rtems/score/todimpl.h
@@ -164,65 +164,27 @@ static inline void _TOD_Acquire( ISR_lock_Context *lock_context )
*
* The caller must be the owner of the TOD lock.
*
- * @param tod_as_timestamp The new time of day in timestamp format representing
+ * @param tod The new time of day in timespec format representing
* the time since UNIX Epoch.
* @param lock_context The ISR lock context used for the corresponding
* _TOD_Acquire(). The caller must be the owner of the TOD lock. This
* function will release the TOD lock.
*/
void _TOD_Set(
- const Timestamp_Control *tod_as_timestamp,
- ISR_lock_Context *lock_context
+ const struct timespec *tod,
+ ISR_lock_Context *lock_context
);
/**
- * @brief Sets the time of day with timespec format.
- *
- * @param tod_as_timespec The new time of day in timespec format.
- *
- * @see _TOD_Set().
- */
-static inline void _TOD_Set_with_timespec(
- const struct timespec *tod_as_timespec
-)
-{
- Timestamp_Control tod_as_timestamp;
- ISR_lock_Context lock_context;
-
- _Timestamp_Set(
- &tod_as_timestamp,
- tod_as_timespec->tv_sec,
- tod_as_timespec->tv_nsec
- );
-
- _TOD_Lock();
- _TOD_Acquire( &lock_context );
- _TOD_Set( &tod_as_timestamp, &lock_context );
- _TOD_Unlock();
-}
-
-/**
- * @brief Gets the current time in the bintime format.
- *
- * @param[out] time is the value gathered by the bintime request
- */
-static inline void _TOD_Get(
- Timestamp_Control *time
-)
-{
- _Timecounter_Bintime(time);
-}
-
-/**
* @brief Gets the current time in the timespec format.
*
- * @param[out] time is the value gathered by the nanotime request
+ * @param[out] time is the value gathered by the request
*/
-static inline void _TOD_Get_as_timespec(
- struct timespec *time
+static inline void _TOD_Get(
+ struct timespec *tod
)
{
- _Timecounter_Nanotime(time);
+ _Timecounter_Nanotime( tod );
}
/**
@@ -324,7 +286,7 @@ RTEMS_INLINE_ROUTINE void _TOD_Get_timeval(
* @param[in] delta is the amount to adjust
*/
void _TOD_Adjust(
- const Timestamp_Control *delta
+ const struct timespec *delta
);
/**
diff --git a/cpukit/score/src/coretodabsolutetimeout.c b/cpukit/score/src/coretodabsolutetimeout.c
index fe74a6bbf2..d67b7c33c7 100644
--- a/cpukit/score/src/coretodabsolutetimeout.c
+++ b/cpukit/score/src/coretodabsolutetimeout.c
@@ -47,7 +47,7 @@ TOD_Absolute_timeout_conversion_results _TOD_Absolute_timeout_to_ticks(
* Is the absolute time in the past?
*/
if ( clock == CLOCK_REALTIME ) {
- _TOD_Get_as_timespec( &current_time );
+ _TOD_Get( &current_time );
} else {
_Assert( clock == CLOCK_MONOTONIC );
_TOD_Get_zero_based_uptime_as_timespec( &current_time );
diff --git a/cpukit/score/src/coretodadjust.c b/cpukit/score/src/coretodadjust.c
index 5996565e5c..f493a40b9d 100644
--- a/cpukit/score/src/coretodadjust.c
+++ b/cpukit/score/src/coretodadjust.c
@@ -21,11 +21,11 @@
#include <rtems/score/todimpl.h>
void _TOD_Adjust(
- const Timestamp_Control *delta
+ const struct timespec *delta
)
{
- Timestamp_Control tod;
- ISR_lock_Context lock_context;
+ ISR_lock_Context lock_context;
+ struct timespec tod;
/*
* Currently, RTEMS does the adjustment in one movement.
@@ -38,7 +38,7 @@ void _TOD_Adjust(
_TOD_Lock();
_TOD_Acquire( &lock_context );
_TOD_Get( &tod );
- _Timestamp_Add_to( &tod, delta );
+ _Timespec_Add_to( &tod, delta );
_TOD_Set( &tod, &lock_context );
_TOD_Unlock();
}
diff --git a/cpukit/score/src/coretodset.c b/cpukit/score/src/coretodset.c
index f1d2e36eb0..80b0b762bd 100644
--- a/cpukit/score/src/coretodset.c
+++ b/cpukit/score/src/coretodset.c
@@ -23,21 +23,21 @@
#include <rtems/score/watchdogimpl.h>
void _TOD_Set(
- const Timestamp_Control *tod_as_timestamp,
- ISR_lock_Context *lock_context
+ const struct timespec *tod,
+ ISR_lock_Context *lock_context
)
{
- struct timespec tod_as_timespec;
+ struct bintime tod_as_bintime;
uint64_t tod_as_ticks;
uint32_t cpu_count;
uint32_t cpu_index;
_Assert( _API_Mutex_Is_owner( _Once_Mutex ) );
- _Timecounter_Set_clock( tod_as_timestamp, lock_context );
+ timespec2bintime( tod, &tod_as_bintime );
+ _Timecounter_Set_clock( &tod_as_bintime, lock_context );
- _Timestamp_To_timespec( tod_as_timestamp, &tod_as_timespec );
- tod_as_ticks = _Watchdog_Ticks_from_timespec( &tod_as_timespec );
+ tod_as_ticks = _Watchdog_Ticks_from_timespec( tod );
cpu_count = _SMP_Get_processor_count();
for ( cpu_index = 0 ; cpu_index < cpu_count ; ++cpu_index ) {