Back to index

glibc  2.9
Defines | Functions
tst-clock.c File Reference
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "../test-skeleton.c"

Go to the source code of this file.

Defines

#define STDOUT_UNBUFFERED
#define TIMEOUT   15
#define TEST_FUNCTION   do_test ()

Functions

static int clock_test (clockid_t cl)
static int do_test (void)

Define Documentation

Definition at line 27 of file tst-clock.c.

#define TEST_FUNCTION   do_test ()

Definition at line 121 of file tst-clock.c.

#define TIMEOUT   15

Definition at line 30 of file tst-clock.c.


Function Documentation

static int clock_test ( clockid_t  cl) [static]

Definition at line 33 of file tst-clock.c.

{
  struct timespec old_ts;
  struct timespec ts;
  struct timespec waitit;
  int result = 0;
  int i;

  memset (&ts, '\0', sizeof ts);

  waitit.tv_sec = 0;
  waitit.tv_nsec = 500000000;

  /* Get and print resolution of the clock.  */
  if (clock_getres (cl, &ts) == 0)
    {
      if (ts.tv_nsec < 0 || ts.tv_nsec >= 1000000000)
       {
         printf ("clock %d: nanosecond value of resolution wrong\n", cl);
         result = 1;
       }
      else
       printf ("clock %d: resolution = %ld.%09ld secs\n",
              cl, ts.tv_sec, ts.tv_nsec);
    }
  else
    {
      printf ("clock %d: cannot get resolution\n", cl);
      result = 1;
    }

  memset (&ts, '\0', sizeof ts);
  memset (&old_ts, '\0', sizeof old_ts);

  /* Next get the current time value a few times.  */
  for (i = 0; i < 10; ++i)
    {
      if (clock_gettime (cl, &ts) == 0)
       {
         if (ts.tv_nsec < 0 || ts.tv_nsec >= 1000000000)
           {
             printf ("clock %d: nanosecond value of time wrong (try %d)\n",
                    cl, i);
             result = 1;
           }
         else
           {
             printf ("clock %d: time = %ld.%09ld secs\n",
                    cl, ts.tv_sec, ts.tv_nsec);

             if (memcmp (&ts, &old_ts, sizeof ts) == 0)
              {
                printf ("clock %d: time hasn't changed (try %d)\n", cl, i);
                result = 1;

                old_ts = ts;
              }
           }
       }
      else
       {
         printf ("clock %d: cannot get time (try %d)\n", cl, i);
         result = 1;
       }

      /* Wait a bit before the next iteration.  */
      nanosleep (&waitit, NULL);
    }

  return result;
}

Here is the call graph for this function:

Here is the caller graph for this function:

static int do_test ( void  ) [static]

Definition at line 106 of file tst-clock.c.

{
  clockid_t cl;
  int result;

  result = clock_test (CLOCK_REALTIME);

  if (clock_getcpuclockid (0, &cl) == 0)
    /* XXX It's not yet a bug when this fails.  */
    clock_test (cl);
  else
         printf("CPU clock unavailble, skipping test\n");

  return result;
}

Here is the call graph for this function: