+#endif /* HAVE_GETTIMEOFDAY? */
+
+ return (double)(tv.tv_sec + tv.tv_usec / 1000000.0);
+}
+
+void xbt_os_sleep(double sec) {
+#ifdef HAVE_USLEEP
+ sleep(sec);
+ (void)usleep( (sec - floor(sec)) * 1000000);
+
+#elif WIN32
+ Sleep((floor(sec) * 1000) +((sec - floor(sec)) * 1000));
+
+#else /* don't have usleep. Use select to sleep less than one second */
+ struct timeval timeout;
+
+
+ timeout.tv_sec = (unsigned long)(sec);
+ timeout.tv_usec = (sec - floor(sec)) * 1000000;
+
+ select(0, NULL, NULL, NULL, &timeout);
+#endif