diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-20 08:43:15 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-10-24 09:37:28 +0200 |
commit | 7ed377bc69e8cf96b989018322dc43bc0f2d2e36 (patch) | |
tree | 135e4735f7bbf8ccf96543803753de1bebcbf9c6 | |
parent | score: Add _Watchdog_Is_valid_interval_timespec() (diff) | |
download | rtems-7ed377bc69e8cf96b989018322dc43bc0f2d2e36.tar.bz2 |
score: _Watchdog_Is_far_future_monotonic_timespec
Update #3117.
Update #3182.
-rwxr-xr-x | cpukit/sapi/include/confdefs.h | 3 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/watchdog.h | 9 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/watchdogimpl.h | 7 | ||||
-rw-r--r-- | testsuites/sptests/spwatchdog/init.c | 1 |
4 files changed, 20 insertions, 0 deletions
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index 13e97c9487..aed740b594 100755 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -3110,6 +3110,9 @@ extern rtems_initialization_tasks_table Initialization_tasks[]; const uint32_t _Watchdog_Ticks_per_second = _CONFIGURE_TICKS_PER_SECOND; + const uint64_t _Watchdog_Monotonic_max_seconds = + UINT64_MAX / _CONFIGURE_TICKS_PER_SECOND; + /** * This is the Classic API Configuration Table. */ diff --git a/cpukit/score/include/rtems/score/watchdog.h b/cpukit/score/include/rtems/score/watchdog.h index bbe2a93b26..8c3710334b 100644 --- a/cpukit/score/include/rtems/score/watchdog.h +++ b/cpukit/score/include/rtems/score/watchdog.h @@ -166,6 +166,15 @@ extern volatile Watchdog_Interval _Watchdog_Ticks_since_boot; */ extern const uint32_t _Watchdog_Ticks_per_second; +/** + * @brief The maximum number of seconds representable in the monotonic watchdog + * format. + * + * This constant is defined by the application configuration via + * <rtems/confdefs.h>. + */ +extern const uint64_t _Watchdog_Monotonic_max_seconds; + /**@}*/ #ifdef __cplusplus diff --git a/cpukit/score/include/rtems/score/watchdogimpl.h b/cpukit/score/include/rtems/score/watchdogimpl.h index 9fc1f05837..31b44f1d0b 100644 --- a/cpukit/score/include/rtems/score/watchdogimpl.h +++ b/cpukit/score/include/rtems/score/watchdogimpl.h @@ -319,6 +319,13 @@ RTEMS_INLINE_ROUTINE bool _Watchdog_Is_valid_interval_timespec( return _Watchdog_Is_valid_timespec( ts ) && ts->tv_sec >= 0; } +RTEMS_INLINE_ROUTINE bool _Watchdog_Is_far_future_monotonic_timespec( + const struct timespec *ts +) +{ + return ts->tv_sec >= _Watchdog_Monotonic_max_seconds; +} + RTEMS_INLINE_ROUTINE bool _Watchdog_Is_far_future_realtime_timespec( const struct timespec *ts ) diff --git a/testsuites/sptests/spwatchdog/init.c b/testsuites/sptests/spwatchdog/init.c index f027236434..274def9689 100644 --- a/testsuites/sptests/spwatchdog/init.c +++ b/testsuites/sptests/spwatchdog/init.c @@ -60,6 +60,7 @@ static void test_watchdog_static_init( void ) static void test_watchdog_config( void ) { rtems_test_assert( _Watchdog_Ticks_per_second == 100 ); + rtems_test_assert( _Watchdog_Monotonic_max_seconds == 184467440737095516 ); } static bool test_watchdog_is_inactive( test_watchdog *watchdog ) |