b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross/*
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * This file and its contents are supplied under the terms of the
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * Common Development and Distribution License ("CDDL"), version 1.0.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * You may only use this file in accordance with the terms of version
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * 1.0 of the CDDL.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross *
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * A full copy of the text of the CDDL should have accompanied this
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * source. A copy of the CDDL is also available via the Internet at
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross * http://www.illumos.org/license/CDDL.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross */
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross/*
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross * Copyright 2015 Nexenta Systems, Inc. All rights reserved.
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross */
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <sys/types.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <sys/time.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <sys/thread.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <sys/proc.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <sys/poll.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#include <time.h>
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossint hz = 1000;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossint tick_per_msec = 0;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossint msec_per_tick = 1;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossint usec_per_tick = 1000;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossint nsec_per_tick = 1000000;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rosstime_t boot_time = 0;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross#pragma init(_boot_time_init)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossstatic int
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross_boot_time_init(void)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross boot_time = time(NULL);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross return (0);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossclock_t
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossddi_get_lbolt(void)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross hrtime_t hrt;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross hrt = gethrtime();
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross return (hrt / nsec_per_tick);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossint64_t
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossddi_get_lbolt64(void)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross hrtime_t hrt;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross hrt = gethrtime();
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross return (hrt / nsec_per_tick);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossvoid
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossclock2ts(clock_t clk, timespec_t *ts)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross ts->tv_sec = clk / hz;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross ts->tv_nsec = (clk % hz) * (NANOSEC / hz);
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rosshrtime_t
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossgethrtime_unscaled(void)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross return (gethrtime());
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossvoid
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossgethrestime(timespec_t *ts)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross struct timeval tv;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross (void) gettimeofday(&tv, NULL);
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross ts->tv_sec = tv.tv_sec;
a90cf9f29973990687fa61de9f1f6ea22e924e40Gordon Ross ts->tv_nsec = tv.tv_usec * 1000;
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rosstime_t
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossgethrestime_sec(void)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross return (time(NULL));
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross/* ARGSUSED */
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossvoid
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Rossscalehrtime(hrtime_t *t)
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross{
b819cea2f73f98c5662230cc9affc8cc84f77fcfGordon Ross}