Annotation of embedaddon/ntp/ports/winnt/libntp/getclock.c, revision 1.1.1.1
1.1 misho 1: /*
2: * getclock.c - Emulate Unix getclock(3) nanosecond interface for libntp/ntpd
3: */
4: #include "config.h"
5: #include "clockstuff.h"
6: #include "ntp_stdlib.h"
7:
8: /*
9: * getclock() is in libntp. To use interpolation,
10: * ports/winnt/ntpd/nt_clockstuff.c overrides GetSystemTimeAsFileTime
11: * via the pointer get_sys_time_as_filetime.
12: */
13: PGSTAFT get_sys_time_as_filetime;
14:
15: int
16: getclock(
17: int clktyp,
18: struct timespec *ts
19: )
20: {
21: union {
22: FILETIME ft;
23: ULONGLONG ull;
24: } uNow;
25:
26: if (clktyp != TIMEOFDAY) {
27: #ifdef DEBUG
28: if (debug) {
29: printf("getclock() supports only TIMEOFDAY clktyp\n");
30: }
31: #endif
32: errno = EINVAL;
33: return -1;
34: }
35:
36: if (! get_sys_time_as_filetime)
37: get_sys_time_as_filetime = GetSystemTimeAsFileTime;
38:
39: (*get_sys_time_as_filetime)(&uNow.ft);
40:
41: /*
42: * Convert the hecto-nano second time to timespec format
43: */
44: uNow.ull -= FILETIME_1970;
45: ts->tv_sec = (time_t)( uNow.ull / HECTONANOSECONDS);
46: ts->tv_nsec = (long)(( uNow.ull % HECTONANOSECONDS) * 100);
47:
48: return 0;
49: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>