add clock_gettime for macos 10.11 and earlier
This commit is contained in:
@@ -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
|
||||
|
26
apps/openssl/compat/clock_gettime_osx.c
Normal file
26
apps/openssl/compat/clock_gettime_osx.c
Normal file
@@ -0,0 +1,26 @@
|
||||
#include <time.h>
|
||||
|
||||
#include <mach/mach_time.h>
|
||||
#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;
|
||||
}
|
Reference in New Issue
Block a user