This avoids the calculation of this value at run-time, similar to rtems_configuration_get_nanoseconds_per_tick().
Delete TOD_TICKS_PER_SECOND and replace it with rtems_configuration_get_ticks_per_second(). --- cpukit/posix/src/alarm.c | 3 ++- cpukit/sapi/include/confdefs.h | 1 + cpukit/sapi/include/rtems/config.h | 9 +++++++++ cpukit/score/Makefile.am | 1 - cpukit/score/include/rtems/score/todimpl.h | 20 -------------------- cpukit/score/src/coretodtickspersec.c | 28 ---------------------------- cpukit/score/src/timespectoticks.c | 7 +++---- 7 files changed, 15 insertions(+), 54 deletions(-) delete mode 100644 cpukit/score/src/coretodtickspersec.c diff --git a/cpukit/posix/src/alarm.c b/cpukit/posix/src/alarm.c index 10443e4..6140095 100644 --- a/cpukit/posix/src/alarm.c +++ b/cpukit/posix/src/alarm.c @@ -26,6 +26,7 @@ #include <rtems/score/todimpl.h> #include <rtems/score/watchdogimpl.h> +#include <rtems/config.h> ISR_LOCK_DEFINE( static, _POSIX_signals_Alarm_lock, "POSIX Alarm" ) @@ -64,7 +65,7 @@ unsigned int alarm( uint32_t ticks; the_watchdog = &_POSIX_signals_Alarm_watchdog; - ticks_per_second = TOD_TICKS_PER_SECOND; + ticks_per_second = rtems_configuration_get_ticks_per_second(); ticks = seconds * ticks_per_second; _ISR_lock_ISR_disable_and_acquire( diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index e0b2a80..9e5bd14 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -3413,6 +3413,7 @@ extern rtems_initialization_tasks_table Initialization_tasks[]; CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS, /* enabled */ CONFIGURE_MICROSECONDS_PER_TICK, /* microseconds per clock tick */ 1000 * CONFIGURE_MICROSECONDS_PER_TICK, /* nanoseconds per clock tick */ + 1000000 / CONFIGURE_MICROSECONDS_PER_TICK,/* ticks per second */ CONFIGURE_TICKS_PER_TIMESLICE, /* ticks per timeslice quantum */ CONFIGURE_IDLE_TASK_BODY, /* user's IDLE task */ CONFIGURE_IDLE_TASK_STACK_SIZE, /* IDLE task stack size */ diff --git a/cpukit/sapi/include/rtems/config.h b/cpukit/sapi/include/rtems/config.h index 1b48ea9..a2fb833 100644 --- a/cpukit/sapi/include/rtems/config.h +++ b/cpukit/sapi/include/rtems/config.h @@ -173,6 +173,13 @@ typedef struct { uint32_t nanoseconds_per_tick; /** + * This field specifies the number of clock ticks per second. This value is + * derived from the microseconds_per_tick field and provided to avoid + * calculation at run-time. + */ + uint32_t ticks_per_second; + + /** * This field specifies the number of ticks in each task's timeslice. */ uint32_t ticks_per_timeslice; @@ -309,6 +316,8 @@ extern const rtems_configuration_table Configuration; (Configuration.microseconds_per_tick / 1000) #define rtems_configuration_get_nanoseconds_per_tick() \ (Configuration.nanoseconds_per_tick) +#define rtems_configuration_get_ticks_per_second() \ + (Configuration.ticks_per_second) #define rtems_configuration_get_ticks_per_timeslice() \ (Configuration.ticks_per_timeslice) diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am index 455c99d..f7affdf 100644 --- a/cpukit/score/Makefile.am +++ b/cpukit/score/Makefile.am @@ -330,7 +330,6 @@ libscore_a_SOURCES += src/timespecaddto.c src/timespecfromticks.c \ ## TOD_C_FILES libscore_a_SOURCES += src/coretod.c src/coretodset.c \ - src/coretodtickspersec.c \ src/coretodadjust.c libscore_a_SOURCES += src/coretodabsolutetimeout.c diff --git a/cpukit/score/include/rtems/score/todimpl.h b/cpukit/score/include/rtems/score/todimpl.h index b1f8a6d..2968bf6 100644 --- a/cpukit/score/include/rtems/score/todimpl.h +++ b/cpukit/score/include/rtems/score/todimpl.h @@ -264,26 +264,6 @@ static inline uint32_t _TOD_Seconds_since_epoch( void ) } /** - * @brief Gets number of ticks in a second. - * - * This method returns the number of ticks in a second. - * - * @note If the clock tick value does not multiply evenly into a second - * then this number of ticks will be slightly shorter than a second. - */ -uint32_t TOD_TICKS_PER_SECOND_method(void); - -/** - * @brief Gets number of ticks in a second. - * - * This method exists to hide the fact that TOD_TICKS_PER_SECOND can not - * be implemented as a macro in a .h file due to visibility issues. - * The Configuration Table is not available to SuperCore .h files but - * is available to their .c files. - */ -#define TOD_TICKS_PER_SECOND TOD_TICKS_PER_SECOND_method() - -/** * This routine returns a timeval based upon the internal timespec format TOD. */ diff --git a/cpukit/score/src/coretodtickspersec.c b/cpukit/score/src/coretodtickspersec.c deleted file mode 100644 index cfe53ce..0000000 --- a/cpukit/score/src/coretodtickspersec.c +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @file - * - * @brief Convert Ticks To Seconds - * @ingroup ScoreTOD - */ - -/* COPYRIGHT (c) 1989-2014. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - - -#if HAVE_CONFIG_H -#include "config.h" -#endif - -#include <rtems/score/todimpl.h> -#include <rtems/config.h> - -uint32_t TOD_TICKS_PER_SECOND_method(void) -{ - return (TOD_MICROSECONDS_PER_SECOND / - rtems_configuration_get_microseconds_per_tick()); -} diff --git a/cpukit/score/src/timespectoticks.c b/cpukit/score/src/timespectoticks.c index fb57532..d02a350 100644 --- a/cpukit/score/src/timespectoticks.c +++ b/cpukit/score/src/timespectoticks.c @@ -16,7 +16,6 @@ #endif #include <rtems/score/timespec.h> -#include <rtems/score/todimpl.h> #include <rtems/config.h> /** @@ -28,8 +27,8 @@ uint32_t _Timespec_To_ticks( const struct timespec *time ) { - uint32_t ticks; - uint32_t nanoseconds_per_tick; + uint32_t ticks; + uint32_t nanoseconds_per_tick; if ( (time->tv_sec == 0) && (time->tv_nsec == 0) ) return 0; @@ -39,7 +38,7 @@ uint32_t _Timespec_To_ticks( * need to have it be greater than or equal to the requested time. It * should not be shorter. */ - ticks = time->tv_sec * TOD_TICKS_PER_SECOND; + ticks = time->tv_sec * rtems_configuration_get_ticks_per_second(); nanoseconds_per_tick = rtems_configuration_get_nanoseconds_per_tick(); ticks += time->tv_nsec / nanoseconds_per_tick; -- 1.8.4.5 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel