#include <mach/thread_act.h>
#include <mach/vm_map.h>
-namespace folly {
-namespace portability {
-namespace time {
-
static std::chrono::nanoseconds time_value_to_ns(time_value_t t) {
return std::chrono::seconds(t.seconds) +
std::chrono::microseconds(t.microseconds);
return 0;
}
-
-} // namespace time
-} // namespace portability
-} // namespace folly
#elif defined(_WIN32)
#include <errno.h>
#include <locale.h>
#include <folly/portability/Windows.h>
-namespace folly {
-namespace portability {
-namespace time {
-
using unsigned_nanos = std::chrono::duration<uint64_t, std::nano>;
static unsigned_nanos filetimeToUnsignedNanos(FILETIME ft) {
return -1;
}
}
-
-} // namespace time
-} // namespace portability
-} // namespace folly
#else
#error No clock_gettime(3) compatibility wrapper available for this platform.
#endif
#include <time.h>
#include <folly/portability/Config.h>
-#include <folly/Portability.h>
// OSX is a pain. The XCode 8 SDK always declares clock_gettime
// even if the target OS version doesn't support it, so you get
// solve that by pretending we have it here in the header and
// then enable our implementation on the source side so that
// gets linked in instead.
-#if __MACH__ && FOLLY_HAVE_CLOCK_GETTIME && \
+#if __MACH__ && \
(MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12 || \
__IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_10_0)
+#ifdef FOLLY_HAVE_CLOCK_GETTIME
+#undef FOLLY_HAVE_CLOCK_GETTIME
+#endif
+
+#define FOLLY_HAVE_CLOCK_GETTIME 1
#define FOLLY_FORCE_CLOCK_GETTIME_DEFINITION 1
#endif
#define CLOCK_MONOTONIC 1
#define CLOCK_PROCESS_CPUTIME_ID 2
#define CLOCK_THREAD_CPUTIME_ID 3
-#endif
-#if (!FOLLY_HAVE_CLOCK_GETTIME || FOLLY_FORCE_CLOCK_GETTIME_DEFINITION) && (defined(__MACH__) || defined(_WIN32))
-namespace folly {
-namespace portability {
-namespace time {
typedef uint8_t clockid_t;
-int clock_gettime(clockid_t clk_id, struct timespec* ts);
-int clock_getres(clockid_t clk_id, struct timespec* ts);
-}
-}
-}
-
-FOLLY_PUSH_WARNING
-#if __CLANG_PREREQ(3, 0)
-FOLLY_GCC_DISABLE_WARNING("-Wheader-hygiene")
-#endif
-/* using override */ using namespace folly::portability::time;
-FOLLY_POP_WARNING
+extern "C" int clock_gettime(clockid_t clk_id, struct timespec* ts);
+extern "C" int clock_getres(clockid_t clk_id, struct timespec* ts);
#endif
#ifdef _WIN32