#if 0
/*─────────────────────────────────────────────────────────────────╗
│ To the extent possible under law, Justine Tunney has waived      │
│ all copyright and related or neighboring rights to this file,    │
│ as it is written in the following disclaimers:                   │
│   • http://unlicense.org/                                        │
│   • http://creativecommons.org/publicdomain/zero/1.0/            │
╚─────────────────────────────────────────────────────────────────*/
#endif
#include "libc/calls/calls.h"
#include "libc/calls/struct/timespec.h"
#include "libc/runtime/runtime.h"
#include "libc/stdio/stdio.h"

/**
 * @fileoverview clock() function demo
 */

int main(int argc, char *argv[]) {
  ShowCrashReports();
  unsigned long i;
  volatile unsigned long x;
  struct timespec now, start, next, interval;
  printf("hammering the cpu...\n");
  next = start = timespec_mono();
  interval = timespec_frommillis(500);
  next = timespec_add(next, interval);
  for (;;) {
    for (i = 0;; ++i) {
      x *= 7;
      if (!(i % 256)) {
        now = timespec_mono();
        if (timespec_cmp(now, next) >= 0) {
          break;
        }
      }
    }
    next = timespec_add(next, interval);
    printf("consumed %10g seconds monotonic time and %10g seconds cpu time\n",
           timespec_tonanos(timespec_sub(now, start)) / 1000000000.,
           (double)clock() / CLOCKS_PER_SEC);
  }
}