Home | History | Annotate | Line # | Download | only in c
      1 /* Basic time functionality test: check that milliseconds are
      2    incremented for each syscall (does not work on host).  */
      3 #include <stdio.h>
      4 #include <time.h>
      5 #include <sys/time.h>
      6 #include <string.h>
      7 #include <stdlib.h>
      8 
      9 void err (const char *s)
     10 {
     11   perror (s);
     12   abort ();
     13 }
     14 
     15 int
     16 main (void)
     17 {
     18   struct timeval t_m = {0, 0};
     19   struct timezone t_z = {0, 0};
     20   struct timeval t_m1 = {0, 0};
     21   int i;
     22 
     23   if (gettimeofday (&t_m, &t_z) != 0)
     24     err ("gettimeofday");
     25 
     26   for (i = 1; i < 10000; i++)
     27     if (gettimeofday (&t_m1, NULL) != 0)
     28       err ("gettimeofday 1");
     29     else
     30       if (t_m1.tv_sec * 1000000 + t_m1.tv_usec
     31 	  != (t_m.tv_sec * 1000000 + t_m.tv_usec + i * 1000))
     32 	{
     33 	  fprintf (stderr, "t0 (%ld, %ld), i %d, t1 (%ld, %ld)\n",
     34 		   t_m.tv_sec, t_m.tv_usec, i, t_m1.tv_sec, t_m1.tv_usec);
     35 	  abort ();
     36 	}
     37 
     38   if (time (NULL) != t_m1.tv_sec)
     39     {
     40       fprintf (stderr, "time != gettod\n");
     41       abort ();
     42     }
     43 
     44   printf ("pass\n");
     45   exit (0);
     46 }
     47