blob: f1a264871807eddacb3323ec5f1fd35cdb470b0d [file] [log] [blame]
/* -*- Mode: C; tab-width: 8; c-basic-offset: 2; indent-tabs-mode: nil; -*- */
#include "util.h"
struct rr_timespec64 {
int64_t tv_sec;
int64_t tv_nsec;
};
int main(void) {
struct rr_timespec64 ts;
struct rr_timespec64 duration = { 0, 1000000 };
if (sizeof(void*) != 4) {
atomic_puts("Ignoring non-32bit test");
atomic_puts("EXIT-SUCCESS");
return 0;
}
int ret = syscall(RR_clock_getres_time64, CLOCK_MONOTONIC, &ts);
if (ret == -1 && errno == ENOSYS) {
atomic_puts("Skipping tests, because 64 bit time syscalls are unavailable");
atomic_puts("EXIT-SUCCESS");
return 0;
}
test_assert(0 == ret);
atomic_printf("Clock resolution %lld %lld\n", (long long)ts.tv_sec, (long long)ts.tv_nsec);
test_assert(0 == syscall(RR_clock_gettime64, CLOCK_MONOTONIC, &ts));
atomic_printf("Clock now %lld %lld\n", (long long)ts.tv_sec, (long long)ts.tv_nsec);
test_assert(0 == syscall(RR_clock_nanosleep_time64, CLOCK_MONOTONIC, 0, &duration, &ts));
test_assert(0 == syscall(RR_clock_gettime64, CLOCK_MONOTONIC, &ts));
atomic_printf("Clock now %lld %lld\n", (long long)ts.tv_sec, (long long)ts.tv_nsec);
atomic_puts("EXIT-SUCCESS");
return 0;
}