#include #include #include #ifndef WIN32 CAMLprim value ocamlpilot_nanosleep(value t) { int nb; struct timespec time1, time2; double temps = Double_val(t); /* on met dans time1 le temps a attendre */ time1.tv_sec = (time_t) temps; time1.tv_nsec = (long) ((temps - time1.tv_sec) * 1000000000L); enter_blocking_section(); /* attente */ do { nb = nanosleep(&time1, &time2); time1.tv_sec = time2.tv_sec; time1.tv_nsec = time2.tv_nsec; } while (nb); leave_blocking_section(); return Val_unit; } #else #include CAMLprim value ocamlpilot_nanosleep(value t) { int nb; double temps = Double_val(t) * 1000; enter_blocking_section(); Sleep (temps); leave_blocking_section(); return Val_unit; } #endif /* WIN32 */