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>