Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
att
GitHub Repository: att/ast
Path: blob/master/src/lib/libast/tm/tvgettime.c
1810 views
1
/***********************************************************************
2
* *
3
* This software is part of the ast package *
4
* Copyright (c) 1985-2011 AT&T Intellectual Property *
5
* and is licensed under the *
6
* Eclipse Public License, Version 1.0 *
7
* by AT&T Intellectual Property *
8
* *
9
* A copy of the License is available at *
10
* http://www.eclipse.org/org/documents/epl-v10.html *
11
* (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12
* *
13
* Information and Software Systems Research *
14
* AT&T Research *
15
* Florham Park NJ *
16
* *
17
* Glenn Fowler <[email protected]> *
18
* David Korn <[email protected]> *
19
* Phong Vo <[email protected]> *
20
* *
21
***********************************************************************/
22
#pragma prototyped
23
24
#include <tv.h>
25
#include <tm.h>
26
27
#include "FEATURE/tvlib"
28
29
int
30
tvgettime(Tv_t* tv)
31
{
32
33
#if _lib_clock_gettime && defined(CLOCK_REALTIME)
34
35
struct timespec s;
36
37
clock_gettime(CLOCK_REALTIME, &s);
38
tv->tv_sec = s.tv_sec;
39
tv->tv_nsec = s.tv_nsec;
40
41
#else
42
43
#if defined(tmgettimeofday)
44
45
struct timeval v;
46
47
tmgettimeofday(&v);
48
tv->tv_sec = v.tv_sec;
49
tv->tv_nsec = v.tv_usec * 1000;
50
51
#else
52
53
static time_t s;
54
static uint32_t n;
55
56
if ((tv->tv_sec = time(NiL)) != s)
57
{
58
s = tv->tv_sec;
59
n = 0;
60
}
61
else
62
n += 1000;
63
tv->tv_nsec = n;
64
65
#endif
66
67
#endif
68
69
return 0;
70
}
71
72