diff options
Diffstat (limited to 'libraries/base/cbits/DarwinUtils.c')
-rw-r--r-- | libraries/base/cbits/DarwinUtils.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libraries/base/cbits/DarwinUtils.c b/libraries/base/cbits/DarwinUtils.c new file mode 100644 index 0000000000..851cd04113 --- /dev/null +++ b/libraries/base/cbits/DarwinUtils.c @@ -0,0 +1,21 @@ +#include "HsBase.h" + +#ifdef darwin_HOST_OS + +void absolute_time(double *result) +{ + uint64_t time = mach_absolute_time(); + static double scaling_factor = 0.0; + + if (scaling_factor == 0.0) + { + mach_timebase_info_data_t info; + (void) mach_timebase_info(&info); + scaling_factor = (double)info.numer / (double)info.denom; + scaling_factor *= 1e-9; + } + + *result = (double)time * scaling_factor; +} + +#endif |