+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
+}
+
+/* TSC (tick-level) timers are said to be unreliable on SMP hosts and thus
+ disabled in SDL source code */
+
+
+/* \defgroup XBT_sysdep All system dependency
+ * \brief This section describes many macros/functions that can serve as
+ * an OS abstraction.
+ */