+double xbt_os_timer_elapsed(xbt_os_timer_t timer)
+{
+#ifdef HAVE_POSIX_GETTIME
+ return ((double) timer->stop.tv_sec) - ((double) timer->start.tv_sec) +
+ ((double) timer->elapse.tv_sec ) +
+ ((((double) timer->stop.tv_nsec) -
+ ((double) timer->start.tv_nsec) + ((double) timer->elapse.tv_nsec )) / 1e9);
+#elif defined(HAVE_GETTIMEOFDAY)
+ return ((double) timer->stop.tv_sec) - ((double) timer->start.tv_sec)
+ + ((double) timer->elapse.tv_sec ) +
+ ((((double) timer->stop.tv_usec) -
+ ((double) timer->start.tv_usec) + ((double) timer->elapse.tv_usec )) / 1000000.0);
+#else
+ return (double) timer->stop - (double) timer->start + (double)
+ timer->elapse;
+#endif
+}