diff --git a/BUILD.gn b/BUILD.gn index a0a17e8a7f7dded7ac637fdc48eb4b2d5226917c..f30ca7fdd9670d89445ed7ff4d29800084bc8fce 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -79,7 +79,6 @@ config("ark_config") { defines += [ "PANDA_TARGET_UNIX", "PANDA_TARGET_MACOS", - "PANDA_USE_FUTEX", ] } else { defines += [ diff --git a/libpandabase/BUILD.gn b/libpandabase/BUILD.gn index 7c5e51005da16a56091e3a0a5dd919e43853ab43..77401ab579238fd863a27a20d629bd7ff07411fb 100644 --- a/libpandabase/BUILD.gn +++ b/libpandabase/BUILD.gn @@ -70,7 +70,6 @@ if (is_mingw) { "$ark_root/libpandabase/os/unix/error.cpp", "$ark_root/libpandabase/os/unix/file.cpp", "$ark_root/libpandabase/os/unix/filesystem.cpp", - "$ark_root/libpandabase/os/unix/futex/mutex.cpp", "$ark_root/libpandabase/os/unix/library_loader.cpp", "$ark_root/libpandabase/os/unix/mem.cpp", "$ark_root/libpandabase/os/unix/native_stack.cpp", @@ -91,9 +90,12 @@ if (is_mingw) { if (!is_mac) { libarkbase_sources += [ "$ark_root/libpandabase/os/unix/exec.cpp", + "$ark_root/libpandabase/os/unix/futex/mutex.cpp", "$ark_root/libpandabase/os/unix/pipe.cpp", "$ark_root/libpandabase/os/unix/sighooklib/sighook.cpp", ] + } else { + libarkbase_sources += [ "$ark_root/libpandabase/os/unix/mutex.cpp" ] } } diff --git a/libpandabase/os/unix/failure_retry.h b/libpandabase/os/unix/failure_retry.h index 8afada336fcb0ffadfcbbe63c0512e8b4f8189f4..893780689e6de1692d0d9e0ab7d4c8bfdd493fe5 100644 --- a/libpandabase/os/unix/failure_retry.h +++ b/libpandabase/os/unix/failure_retry.h @@ -18,6 +18,18 @@ #include +// Mac Os' libc doesn't have this macro +#ifndef TEMP_FAILURE_RETRY +#define TEMP_FAILURE_RETRY(exp) \ + (__extension__({ \ + decltype(exp) _result; \ + do { \ + _result = (exp); \ + } while (_result == -1 && errno == EINTR); \ + _result; \ + })) +#endif + // NOLINTNEXTLINE(cppcoreguidelines-macro-usage) #define PANDA_FAILURE_RETRY(exp) (__extension__ TEMP_FAILURE_RETRY(exp))