X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/73049fc3c9c1159f15d39ff550712a8c9a8f6ebb..fcd4e90d40b0162b583075c5645aacf40392dfc9:/teshsuite/smpi/timers/timers.c diff --git a/teshsuite/smpi/timers/timers.c b/teshsuite/smpi/timers/timers.c index 3d7dcbb520..18ff5d89c5 100644 --- a/teshsuite/smpi/timers/timers.c +++ b/teshsuite/smpi/timers/timers.c @@ -8,59 +8,60 @@ #include #endif +// Test if we correctly intercept gettimeofday and clock_gettime, and sleeps -//Test if we correctly intercept gettimeofday and clock_gettime, and sleeps - -int main( int argc, char *argv[] ) +int main(int argc, char* argv[]) { - MPI_Init( &argc, &argv ); + MPI_Init(&argc, &argv); - //gettimeofday - First test that two consecutive calls will return the same - //time, as computing power is set to -1 + // gettimeofday - First test that two consecutive calls will return the same + // time, as computing power is set to -1 - struct timeval tv1, tv2; - gettimeofday (&tv1, NULL); - gettimeofday (&tv2, NULL); - if ((tv1.tv_sec != tv2.tv_sec) || (tv1.tv_usec != tv2.tv_usec)) - printf("Error, two consecutive calls to gettimeofday did not return same time (with cpu_threshold set to 0)\n"); + struct timeval tv1; + struct timeval tv2; + gettimeofday(&tv1, NULL); + gettimeofday(&tv2, NULL); + if ((tv1.tv_sec != tv2.tv_sec) || (tv1.tv_usec != tv2.tv_usec)) + printf("Error, two consecutive calls to gettimeofday did not return same time (with cpu_threshold set to 0)\n"); - //sleep one 1 second - gettimeofday (&tv1, NULL); - sleep(1); - gettimeofday (&tv2, NULL); - long res = ((tv2.tv_sec * 1000000 + tv2.tv_usec)) - ((tv1.tv_sec * 1000000 + tv1.tv_usec)); - if (res < 999998 || res > 1000002) - printf("Error, sleep(1) did not exactly slept 1s\n"); + // sleep one 1 second + gettimeofday(&tv1, NULL); + sleep(1); + gettimeofday(&tv2, NULL); + long res = ((tv2.tv_sec * 1000000 + tv2.tv_usec)) - ((tv1.tv_sec * 1000000 + tv1.tv_usec)); + if (res < 999998 || res > 1000002) + printf("Error, sleep(1) did not exactly slept 1s\n"); - //usleep 100 us - gettimeofday (&tv1, NULL); - usleep(100); - gettimeofday (&tv2, NULL); - res = ((tv2.tv_sec * 1000000 + tv2.tv_usec)) - ((tv1.tv_sec * 1000000 + tv1.tv_usec)); - if (res <98 || res > 102) - printf("Error, usleep did not really sleep 100us, but %ld\n", res); + // usleep 100 us + gettimeofday(&tv1, NULL); + usleep(100); + gettimeofday(&tv2, NULL); + res = ((tv2.tv_sec * 1000000 + tv2.tv_usec)) - ((tv1.tv_sec * 1000000 + tv1.tv_usec)); + if (res < 98 || res > 102) + printf("Error, usleep did not really sleep 100us, but %ld\n", res); - // clock_gettime, only if available + // clock_gettime, only if available #if _POSIX_TIMERS > 0 - struct timespec tp1, tp2, tpsleep; - clock_gettime (CLOCK_REALTIME, &tp1); - clock_gettime (CLOCK_REALTIME, &tp2); - if ((tp1.tv_sec != tp2.tv_sec) || (tp1.tv_nsec != tp2.tv_nsec)) - printf("Error, two consecutive calls to gettimeofday did not return same time (with running power to 0)\n"); - - //nanosleep for 100ns - clock_gettime (CLOCK_REALTIME, &tp1); - tpsleep.tv_sec=0; - tpsleep.tv_nsec=100; - nanosleep(&tpsleep, NULL); - clock_gettime (CLOCK_REALTIME, &tp2); - res = ((tp2.tv_sec * 1000000000 + tp2.tv_nsec)) - ((tp1.tv_sec * 1000000000 + tp1.tv_nsec)); - if (res <98 || res > 102) - printf("Error, nanosleep did not really sleep 100ns, but %ld\n", res); + struct timespec tp1; + struct timespec tp2; + struct timespec tpsleep; + clock_gettime(CLOCK_REALTIME, &tp1); + clock_gettime(CLOCK_REALTIME, &tp2); + if ((tp1.tv_sec != tp2.tv_sec) || (tp1.tv_nsec != tp2.tv_nsec)) + printf("Error, two consecutive calls to gettimeofday did not return same time (with running power to 0)\n"); + // nanosleep for 100ns + clock_gettime(CLOCK_REALTIME, &tp1); + tpsleep.tv_sec = 0; + tpsleep.tv_nsec = 100; + nanosleep(&tpsleep, NULL); + clock_gettime(CLOCK_REALTIME, &tp2); + res = ((tp2.tv_sec * 1000000000 + tp2.tv_nsec)) - ((tp1.tv_sec * 1000000000 + tp1.tv_nsec)); + if (res < 98 || res > 102) + printf("Error, nanosleep did not really sleep 100ns, but %ld\n", res); #endif - MPI_Finalize(); - return 0; + MPI_Finalize(); + return 0; }