diff options
Diffstat (limited to 'src/compat/clock.h')
-rw-r--r-- | src/compat/clock.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/compat/clock.h b/src/compat/clock.h new file mode 100644 index 0000000..15f3223 --- /dev/null +++ b/src/compat/clock.h @@ -0,0 +1,74 @@ +/* Copyright (c) 2012, David Goulet <dgoulet@ev0ke.net> + * Jacob Appelbaum <jacob@torproject.org> + * Copyright (c) 2012, The Tor Project, Inc. */ +/* See LICENSE for licensing information */ + +/** + * \file clock.h + * \brief Header file for the clock primitives. + **/ + +#pragma once +#ifndef CLOCK_HEADER_GUARD +#define CLOCK_HEADER_GUARD 1 + +#include <src/visibility.h> + +#ifdef HAVE_TIME_H +#include <time.h> +#endif + +#ifdef TARGET_OS_OPENBSD +#include <sys/time.h> +#endif + +#ifdef HAVE_MACH_CLOCK_H +#include <mach/clock.h> +#endif +#ifdef HAVE_MACH_MACH_H +#include <mach/mach.h> +#endif + +struct tlsdate_time { +#if defined(__linux__) || defined(__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__) + struct timespec tp; +#elif defined(__APPLE__) + mach_timespec_t tp; +#elif _WIN32 + void *tp; +#elif TARGET_OS_HAIKU + struct timespec tp; +#elif TARGET_OS_CYGWIN + struct timespec tp; +#elif TARGET_OS_MINGW + struct timespec tp; +#elif TARGET_OS_GNUHURD + struct timespec tp; +#else + struct timespec tp; +#endif +}; + +TLSDATE_API +int clock_get_real_time(struct tlsdate_time *time); + +TLSDATE_API +int clock_set_real_time(const struct tlsdate_time *time); + +TLSDATE_API +void clock_init_time(struct tlsdate_time *time, time_t sec, long nsec); + +/* Helper macros to access time values */ +#define CLOCK_SEC(time) ((time)->tp.tv_sec) +#define CLOCK_MSEC(time) ((time)->tp.tv_nsec / 1000000) +#define CLOCK_USEC(time) ((time)->tp.tv_nsec / 1000) +#define CLOCK_NSEC(time) ((time)->tp.tv_nsec) + +/* Helper macros to access time values. TODO: Complete them */ +/* +#define CLOCK_SEC(time) +#define CLOCK_MSEC(time) +#define CLOCK_USEC(time) +#define CLOCK_NSEC(time) +*/ +#endif // CLOCK_HEADER_GUARD |