aboutsummaryrefslogtreecommitdiff
path: root/gprofng/testsuite/lib/smalltest.c
blob: fe6531e165108703dd1009ab48b89bb99c91eae4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdio.h>
#include <time.h>

typedef long long hrtime_t;

hrtime_t
gethrtime (void)
{
  struct timespec tp;
  hrtime_t rc = 0;
#ifdef CLOCK_MONOTONIC_RAW
  int r = clock_gettime (CLOCK_MONOTONIC_RAW, &tp);
#else
  int r = clock_gettime (CLOCK_MONOTONIC, &tp);
#endif

  if (r == 0)
    rc = ((hrtime_t) tp.tv_sec) * 1e9 + (hrtime_t) tp.tv_nsec;
  return rc;
}

volatile long x; /* temp variable for long calculation */

int
main (int argc, char **argv)
{
  long long count = 0;
  hrtime_t start = gethrtime ();

  do
    {
      x = 0;
      for (int j = 0; j < 1000000; j++)
	x = x + 1;
      count++;
    }
  while (start + 2e9 > gethrtime ());
  printf("count=%lld  x=%lld\n", count, x);
  return 0;
}