*
*---------------------------------------------------------------------------*/
// 16-Jul-2007 SANGORRIN corrections to msec_addto_timespec and msec2timespec
-// (TODO: test the rest of functions)
+// 23-Jul-2007 SANGORRIN moved t2d and d2t from frsh_time_operations
+// (TODO: test for __ALL__ the functions)
// -----------------------------------------------------------------------
#ifndef _MARTE_MISC_TIMESPEC_OPERATIONS_H_
* @file timespec_operations.h
**/
-#include <time.h>
+#include <time.h> // for timespec
+#include <string.h> // for memset
#define smaller_timespec(t1, t2) \
( \
(t1)->tv_sec < (t2)->tv_sec || ((t1)->tv_sec == (t2)->tv_sec && \
- (t1)->tv_nsec < (t2)->tv_nsec) \
+ (t1)->tv_nsec < (t2)->tv_nsec) \
)
#define smaller_or_equal_timespec(t1, t2) \
( \
(t1)->tv_sec < (t2)->tv_sec || ((t1)->tv_sec == (t2)->tv_sec && \
- (t1)->tv_nsec <= (t2)->tv_nsec) \
+ (t1)->tv_nsec <= (t2)->tv_nsec) \
)
#define incr_timespec(t1, t2) \
} \
} while (0)
-
#define add_timespec( sum , t1 , t2 ) \
do { \
(sum)->tv_sec = (t1)->tv_sec + (t2)->tv_sec; \
(t1) \
)
-#include <string.h> /* for memset */
+//---------------//
+// msec2timespec //
+//---------------//
-static void inline msec2timespec(long msec, struct timespec *timespec)
+static inline void msec2timespec(long msec, struct timespec *timespec)
{
memset(timespec, 0, sizeof(struct timespec));
}
}
-/* ------------------------------------------------------------ */
+//------------------------//
+// timespec_lessthan_msec //
+//------------------------//
-static int inline timespec_lessthan_msec(struct timespec *timespec, long msec)
+static inline int timespec_lessthan_msec(struct timespec *timespec, long msec)
{
struct timespec msec_timespec = {0, 0};
return smaller_timespec(timespec, &msec_timespec);
}
-/* ------------------------------------------------------------ */
+//---------------------//
+// msec_addto_timespec //
+//---------------------//
-static void inline msec_addto_timespec(long msec, struct timespec *timespec)
+static inline void msec_addto_timespec(long msec, struct timespec *timespec)
{
struct timespec msec_timespec = {0, 0};
incr_timespec(timespec, &msec_timespec);
}
+//--------------------------//
+// t2d (timespec to double) //
+//--------------------------//
+
+static inline double t2d(struct timespec time)
+{
+ return time.tv_nsec*0.000000001 + (double)time.tv_sec;
+}
+
+//--------------------------//
+// d2t (double to timespec) //
+//--------------------------//
+
+static inline struct timespec d2t(double time)
+{
+ struct timespec tmp;
+
+ tmp.tv_sec = (long) time;
+ tmp.tv_nsec = (long)((time - (double)tmp.tv_sec) * 1000000000);
+
+ return tmp;
+}
+
#endif /* _MARTE_MISC_TIMESPEC_OPERATIONS_H_ */