#include <time.h>

#if SB_API_VERSION < 16

#include "starboard/common/log.h"
#include "starboard/time.h"

// Note that with the original musl implementation of clock_gettime(), errno is
// set when -1 is returned; specific errors are not set here.
int clock_gettime(clockid_t clk, struct timespec *ts) {
  // There are only Starboard implementations for monotonic and realtime clocks.
  // Starboard does also have SbTimeGetMonotonicThreadNow() for
  // CLOCK_PROCESS_CPUTIME_ID, but its definition is wrapped in
  // #if SB_HAS(TIME_THREAD_NOW) so it can't be used here.
  // CLOCK_PROCESS_CPUTIME_ID is potentially used by Cobalt though, so -1 will
  // be returned to indicate a failure instead of crashing with this DCHECK.
  SB_DCHECK((clk == CLOCK_MONOTONIC) || (clk == CLOCK_REALTIME) ||
            (clk == CLOCK_PROCESS_CPUTIME_ID));

  if (clk == CLOCK_MONOTONIC) {
    SbTimeMonotonic t = SbTimeGetMonotonicNow();
    if (t == 0) return -1;

    ts->tv_sec = t / kSbTimeSecond;
    ts->tv_nsec = (t % kSbTimeSecond) * kSbTimeNanosecondsPerMicrosecond;
    return 0;
  } else if (clk == CLOCK_REALTIME) {
    SbTime t = SbTimeGetNow();
    if (t == 0) return -1;

    ts->tv_sec = t / kSbTimeSecond;
    ts->tv_nsec = (t % kSbTimeSecond) * kSbTimeNanosecondsPerMicrosecond;
    return 0;
  } else {
    return -1;
  }
}

#endif  // SB_API_VERSION < 16
