dmake: do not set MAKEFLAGS=k
[unleashed/tickless.git] / usr / src / lib / libast / common / tm / tvgettime.c
blobdc6cfabefa2d9e11b931e222b60f161a5d872024
1 /***********************************************************************
2 * *
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
8 * *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
12 * *
13 * Information and Software Systems Research *
14 * AT&T Research *
15 * Florham Park NJ *
16 * *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
20 * *
21 ***********************************************************************/
22 #pragma prototyped
24 #include <tv.h>
25 #include <tm.h>
27 #include "FEATURE/tvlib"
29 int
30 tvgettime(Tv_t* tv)
33 #if _lib_clock_gettime && defined(CLOCK_REALTIME)
35 struct timespec s;
37 clock_gettime(CLOCK_REALTIME, &s);
38 tv->tv_sec = s.tv_sec;
39 tv->tv_nsec = s.tv_nsec;
41 #else
43 #if defined(tmgettimeofday)
45 struct timeval v;
47 tmgettimeofday(&v);
48 tv->tv_sec = v.tv_sec;
49 tv->tv_nsec = v.tv_usec * 1000;
51 #else
53 static time_t s;
54 static uint32_t n;
56 if ((tv->tv_sec = time(NiL)) != s)
58 s = tv->tv_sec;
59 n = 0;
61 else
62 n += 1000;
63 tv->tv_nsec = n;
65 #endif
67 #endif
69 return 0;