From 987aa6a084312be8501bdda42b0e5aab3b84d52a Mon Sep 17 00:00:00 2001 From: Brent Cook Date: Thu, 22 Mar 2018 20:50:24 -0500 Subject: add clock_gettime for macos 10.11 and earlier --- apps/openssl/Makefile.am | 6 ++++++ apps/openssl/compat/clock_gettime_osx.c | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 apps/openssl/compat/clock_gettime_osx.c (limited to 'apps') diff --git a/apps/openssl/Makefile.am b/apps/openssl/Makefile.am index 9b9eb10..f100adb 100644 --- a/apps/openssl/Makefile.am +++ b/apps/openssl/Makefile.am @@ -74,6 +74,12 @@ openssl_SOURCES += compat/poll_win.c endif endif +if !HAVE_CLOCK_GETTIME +if HOST_DARWIN +openssl_SOURCES += compat/clock_gettime_osx.c +endif +endif + if !HAVE_STRTONUM openssl_SOURCES += compat/strtonum.c endif diff --git a/apps/openssl/compat/clock_gettime_osx.c b/apps/openssl/compat/clock_gettime_osx.c new file mode 100644 index 0000000..e0a5f59 --- /dev/null +++ b/apps/openssl/compat/clock_gettime_osx.c @@ -0,0 +1,26 @@ +#include + +#include +#define ORWL_NANO (+1.0E-9) +#define ORWL_GIGA UINT64_C(1000000000) + +int +clock_gettime(clock_id_t clock_id, struct timespec *tp) +{ + static double orwl_timebase = 0.0; + static uint64_t orwl_timestart = 0; + + if (!orwl_timestart) { + mach_timebase_info_data_t tb = { 0 }; + mach_timebase_info(&tb); + orwl_timebase = tb.numer; + orwl_timebase /= tb.denom; + orwl_timestart = mach_absolute_time(); + } + + double diff = (mach_absolute_time() - orwl_timestart) * orwl_timebase; + tp->tv_sec = diff * ORWL_NANO; + tp->tv_nsec = diff - (tp->tv_sec * ORWL_GIGA); + + return 0; +} -- cgit v1.2.3-55-g6feb