xref: /titanic_44/usr/src/lib/libfakekernel/common/clock.c (revision b819cea2f73f98c5662230cc9affc8cc84f77fcf)
1*b819cea2SGordon Ross /*
2*b819cea2SGordon Ross  * This file and its contents are supplied under the terms of the
3*b819cea2SGordon Ross  * Common Development and Distribution License ("CDDL"), version 1.0.
4*b819cea2SGordon Ross  * You may only use this file in accordance with the terms of version
5*b819cea2SGordon Ross  * 1.0 of the CDDL.
6*b819cea2SGordon Ross  *
7*b819cea2SGordon Ross  * A full copy of the text of the CDDL should have accompanied this
8*b819cea2SGordon Ross  * source.  A copy of the CDDL is also available via the Internet at
9*b819cea2SGordon Ross  * http://www.illumos.org/license/CDDL.
10*b819cea2SGordon Ross  */
11*b819cea2SGordon Ross 
12*b819cea2SGordon Ross /*
13*b819cea2SGordon Ross  * Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
14*b819cea2SGordon Ross  */
15*b819cea2SGordon Ross 
16*b819cea2SGordon Ross 
17*b819cea2SGordon Ross #include <sys/types.h>
18*b819cea2SGordon Ross #include <sys/time.h>
19*b819cea2SGordon Ross #include <sys/thread.h>
20*b819cea2SGordon Ross #include <sys/proc.h>
21*b819cea2SGordon Ross 
22*b819cea2SGordon Ross #include <sys/poll.h>
23*b819cea2SGordon Ross 
24*b819cea2SGordon Ross #include <time.h>
25*b819cea2SGordon Ross 
26*b819cea2SGordon Ross int hz = 1000;
27*b819cea2SGordon Ross int tick_per_msec = 0;
28*b819cea2SGordon Ross int msec_per_tick = 1;
29*b819cea2SGordon Ross int usec_per_tick = 1000;
30*b819cea2SGordon Ross int nsec_per_tick = 1000000;
31*b819cea2SGordon Ross time_t boot_time = 0;
32*b819cea2SGordon Ross 
33*b819cea2SGordon Ross #pragma init(_boot_time_init)
34*b819cea2SGordon Ross static int
_boot_time_init(void)35*b819cea2SGordon Ross _boot_time_init(void)
36*b819cea2SGordon Ross {
37*b819cea2SGordon Ross 	boot_time = time(NULL);
38*b819cea2SGordon Ross 	return (0);
39*b819cea2SGordon Ross }
40*b819cea2SGordon Ross 
41*b819cea2SGordon Ross clock_t
ddi_get_lbolt(void)42*b819cea2SGordon Ross ddi_get_lbolt(void)
43*b819cea2SGordon Ross {
44*b819cea2SGordon Ross 	hrtime_t hrt;
45*b819cea2SGordon Ross 
46*b819cea2SGordon Ross 	hrt = gethrtime();
47*b819cea2SGordon Ross 	return (hrt / nsec_per_tick);
48*b819cea2SGordon Ross }
49*b819cea2SGordon Ross 
50*b819cea2SGordon Ross int64_t
ddi_get_lbolt64(void)51*b819cea2SGordon Ross ddi_get_lbolt64(void)
52*b819cea2SGordon Ross {
53*b819cea2SGordon Ross 	hrtime_t hrt;
54*b819cea2SGordon Ross 
55*b819cea2SGordon Ross 	hrt = gethrtime();
56*b819cea2SGordon Ross 	return (hrt / nsec_per_tick);
57*b819cea2SGordon Ross }
58*b819cea2SGordon Ross 
59*b819cea2SGordon Ross void
clock2ts(clock_t clk,timespec_t * ts)60*b819cea2SGordon Ross clock2ts(clock_t clk, timespec_t *ts)
61*b819cea2SGordon Ross {
62*b819cea2SGordon Ross 	ts->tv_sec = clk / hz;
63*b819cea2SGordon Ross 	ts->tv_nsec = (clk % hz) * (NANOSEC / hz);
64*b819cea2SGordon Ross }
65*b819cea2SGordon Ross 
66*b819cea2SGordon Ross hrtime_t
gethrtime_unscaled(void)67*b819cea2SGordon Ross gethrtime_unscaled(void)
68*b819cea2SGordon Ross {
69*b819cea2SGordon Ross 	return (gethrtime());
70*b819cea2SGordon Ross }
71*b819cea2SGordon Ross 
72*b819cea2SGordon Ross void
gethrestime(timespec_t * ts)73*b819cea2SGordon Ross gethrestime(timespec_t *ts)
74*b819cea2SGordon Ross {
75*b819cea2SGordon Ross 	hrtime_t hrt;
76*b819cea2SGordon Ross 
77*b819cea2SGordon Ross 	hrt = gethrtime();
78*b819cea2SGordon Ross 	ts->tv_sec = hrt / NANOSEC;
79*b819cea2SGordon Ross 	ts->tv_nsec = hrt % NANOSEC;
80*b819cea2SGordon Ross }
81*b819cea2SGordon Ross 
82*b819cea2SGordon Ross time_t
gethrestime_sec(void)83*b819cea2SGordon Ross gethrestime_sec(void)
84*b819cea2SGordon Ross {
85*b819cea2SGordon Ross 	return (time(NULL));
86*b819cea2SGordon Ross }
87*b819cea2SGordon Ross 
88*b819cea2SGordon Ross /* ARGSUSED */
89*b819cea2SGordon Ross void
scalehrtime(hrtime_t * t)90*b819cea2SGordon Ross scalehrtime(hrtime_t *t)
91*b819cea2SGordon Ross {
92*b819cea2SGordon Ross }
93