00001
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _RTEMS_SCORE_TOD_H
00020 #define _RTEMS_SCORE_TOD_H
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00026 #include <rtems/score/object.h>
00027 #include <time.h>
00028
00038 #define TOD_SECONDS_PER_MINUTE (uint32_t)60
00039
00043 #define TOD_MINUTES_PER_HOUR (uint32_t)60
00044
00048 #define TOD_MONTHS_PER_YEAR (uint32_t)12
00049
00053 #define TOD_DAYS_PER_YEAR (uint32_t)365
00054
00058 #define TOD_HOURS_PER_DAY (uint32_t)24
00059
00064 #define TOD_SECONDS_PER_DAY (uint32_t) (TOD_SECONDS_PER_MINUTE * \
00065 TOD_MINUTES_PER_HOUR * \
00066 TOD_HOURS_PER_DAY)
00067
00071 #define TOD_SECONDS_PER_NON_LEAP_YEAR (365 * TOD_SECONDS_PER_DAY)
00072
00076 #define TOD_MILLISECONDS_PER_SECOND (uint32_t)1000
00077
00081 #define TOD_MICROSECONDS_PER_SECOND (uint32_t)1000000
00082
00086 #define TOD_NANOSECONDS_PER_SECOND (uint32_t)1000000000
00087
00091 #define TOD_NANOSECONDS_PER_MICROSECOND (uint32_t)1000
00092
00100 #define TOD_SECONDS_1970_THROUGH_1988 \
00101 (((1987 - 1970 + 1) * TOD_SECONDS_PER_NON_LEAP_YEAR) + \
00102 (4 * TOD_SECONDS_PER_DAY))
00103
00109 #define TOD_TICKS_PER_SECOND \
00110 (TOD_MICROSECONDS_PER_SECOND / _TOD_Microseconds_per_tick)
00111
00118 #define TOD_BASE_YEAR 1988
00119
00132 SCORE_EXTERN boolean _TOD_Is_set;
00133
00137 SCORE_EXTERN struct timespec _TOD_Now;
00138
00142 SCORE_EXTERN struct timespec _TOD_Uptime;
00143
00148 #define _TOD_Seconds_since_epoch (_TOD_Now.tv_sec)
00149
00154 SCORE_EXTERN uint32_t _TOD_Microseconds_per_tick;
00155
00160 void _TOD_Handler_initialization(
00161 uint32_t microseconds_per_tick
00162 );
00163
00169 void _TOD_Set(
00170 const struct timespec *time
00171 );
00172
00180 void _TOD_Get(
00181 struct timespec *time
00182 );
00183
00191 void _TOD_Get_uptime(
00192 struct timespec *time
00193 );
00194
00199 void _TOD_Tickle_ticks( void );
00200
00207 #define TOD_MILLISECONDS_TO_MICROSECONDS(_ms) ((uint32_t)(_ms) * 1000L)
00208
00215 #define TOD_MICROSECONDS_TO_TICKS(_us) \
00216 ((_us) / _TOD_Microseconds_per_tick)
00217
00225 #define TOD_MILLISECONDS_TO_TICKS(_ms) \
00226 (TOD_MILLISECONDS_TO_MICROSECONDS(_ms) / _TOD_Microseconds_per_tick)
00227
00228
00236 #define TOD_TICKS_PER_SECOND \
00237 (TOD_MICROSECONDS_PER_SECOND / _TOD_Microseconds_per_tick)
00238
00239 #ifndef __RTEMS_APPLICATION__
00240 #include <rtems/score/tod.inl>
00241 #endif
00242
00243 #ifdef __cplusplus
00244 }
00245 #endif
00246
00249 #endif
00250