diff --git a/FEXCore/Source/CMakeLists.txt b/FEXCore/Source/CMakeLists.txt index d3381af54..4279591fc 100644 --- a/FEXCore/Source/CMakeLists.txt +++ b/FEXCore/Source/CMakeLists.txt @@ -5,9 +5,9 @@ set (FEXCORE_BASE_SRCS Utils/Allocator.cpp Utils/CPUInfo.cpp Utils/FileLoading.cpp - Utils/FutexSpinWait.cpp Utils/ForcedAssert.cpp Utils/LogManager.cpp + Utils/SpinWaitLock.cpp ) if (NOT MINGW_BUILD) diff --git a/FEXCore/Source/Utils/ArchHelpers/Arm64.cpp b/FEXCore/Source/Utils/ArchHelpers/Arm64.cpp index eb716806e..dc32a3370 100644 --- a/FEXCore/Source/Utils/ArchHelpers/Arm64.cpp +++ b/FEXCore/Source/Utils/ArchHelpers/Arm64.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: MIT -#include "Utils/FutexSpinWait.h" +#include "Utils/SpinWaitLock.h" #include #include @@ -2105,7 +2105,7 @@ static uint64_t HandleAtomicLoadstoreExclusive(uintptr_t ProgramCounter, uint64_ // Lock code mutex during any SIGBUS handling that potentially changes code. // Need to be careful to not read any code part-way through modification. - FEXCore::Utils::FutexSpinWait::UniqueSpinMutex lk(&InlineTail->SpinLockFutex); + FEXCore::Utils::SpinWaitLock::UniqueSpinMutex lk(&InlineTail->SpinLockFutex); if ((Instr & LDAXR_MASK) == LDAR_INST || // LDAR* (Instr & LDAXR_MASK) == LDAPR_INST) { // LDAPR* diff --git a/FEXCore/Source/Utils/FutexSpinWait.cpp b/FEXCore/Source/Utils/SpinWaitLock.cpp similarity index 91% rename from FEXCore/Source/Utils/FutexSpinWait.cpp rename to FEXCore/Source/Utils/SpinWaitLock.cpp index 057dea917..b2f011ade 100644 --- a/FEXCore/Source/Utils/FutexSpinWait.cpp +++ b/FEXCore/Source/Utils/SpinWaitLock.cpp @@ -1,6 +1,6 @@ -#include "Utils/FutexSpinWait.h" +#include "Utils/SpinWaitLock.h" -namespace FEXCore::Utils::FutexSpinWait { +namespace FEXCore::Utils::SpinWaitLock { #ifdef _M_ARM_64 constexpr uint64_t NanosecondsInSecond = 1'000'000'000ULL; diff --git a/FEXCore/Source/Utils/FutexSpinWait.h b/FEXCore/Source/Utils/SpinWaitLock.h similarity index 98% rename from FEXCore/Source/Utils/FutexSpinWait.h rename to FEXCore/Source/Utils/SpinWaitLock.h index c75252c8d..509f43ac2 100644 --- a/FEXCore/Source/Utils/FutexSpinWait.h +++ b/FEXCore/Source/Utils/SpinWaitLock.h @@ -3,7 +3,7 @@ #include #include -namespace FEXCore::Utils::FutexSpinWait { +namespace FEXCore::Utils::SpinWaitLock { /** * @brief This provides routines to implement implement an "efficient spin-loop" using ARM's WFE and exclusive monitor interfaces. * @@ -268,11 +268,11 @@ namespace FEXCore::Utils::FutexSpinWait { public: UniqueSpinMutex(T *Futex) : Futex {Futex} { - FEXCore::Utils::FutexSpinWait::lock(Futex); + FEXCore::Utils::SpinWaitLock::lock(Futex); } ~UniqueSpinMutex() { - FEXCore::Utils::FutexSpinWait::unlock(Futex); + FEXCore::Utils::SpinWaitLock::unlock(Futex); } private: T *Futex; diff --git a/FEXCore/unittests/APITests/FutexSpinTest.cpp b/FEXCore/unittests/APITests/FutexSpinTest.cpp index 909099254..9871b318c 100644 --- a/FEXCore/unittests/APITests/FutexSpinTest.cpp +++ b/FEXCore/unittests/APITests/FutexSpinTest.cpp @@ -1,4 +1,4 @@ -#include "Utils/FutexSpinWait.h" +#include "Utils/SpinWaitLock.h" #include #include #include @@ -9,7 +9,7 @@ TEST_CASE("FutexSpin-Timed-8bit") { uint8_t Test{}; auto now = std::chrono::high_resolution_clock::now(); - FEXCore::Utils::FutexSpinWait::Wait(&Test, 1, SleepAmount); + FEXCore::Utils::SpinWaitLock::Wait(&Test, 1, SleepAmount); auto end = std::chrono::high_resolution_clock::now(); auto diff = end - now; @@ -27,7 +27,7 @@ TEST_CASE("FutexSpin-Sleep-8bit") { std::thread t([&Test, &SleptAmount, &ActualSpinLoop]() { auto now = std::chrono::high_resolution_clock::now(); ActualSpinLoop.store(1); - FEXCore::Utils::FutexSpinWait::Wait(&Test, 1); + FEXCore::Utils::SpinWaitLock::Wait(&Test, 1); auto end = std::chrono::high_resolution_clock::now(); SleptAmount = end - now; }); @@ -39,7 +39,7 @@ TEST_CASE("FutexSpin-Sleep-8bit") { std::this_thread::sleep_for(SleepAmount); // Set the futex - FEXCore::Utils::FutexSpinWait::lock(&Test); + FEXCore::Utils::SpinWaitLock::lock(&Test); // Wait for the thread to get done. t.join(); @@ -52,7 +52,7 @@ TEST_CASE("FutexSpin-Timed-16bit") { uint16_t Test{}; auto now = std::chrono::high_resolution_clock::now(); - FEXCore::Utils::FutexSpinWait::Wait(&Test, 1, SleepAmount); + FEXCore::Utils::SpinWaitLock::Wait(&Test, 1, SleepAmount); auto end = std::chrono::high_resolution_clock::now(); auto diff = end - now; @@ -64,7 +64,7 @@ TEST_CASE("FutexSpin-Timed-32bit") { uint32_t Test{}; auto now = std::chrono::high_resolution_clock::now(); - FEXCore::Utils::FutexSpinWait::Wait(&Test, 1, SleepAmount); + FEXCore::Utils::SpinWaitLock::Wait(&Test, 1, SleepAmount); auto end = std::chrono::high_resolution_clock::now(); auto diff = end - now; @@ -76,7 +76,7 @@ TEST_CASE("FutexSpin-Timed-64bit") { uint64_t Test{}; auto now = std::chrono::high_resolution_clock::now(); - FEXCore::Utils::FutexSpinWait::Wait(&Test, 1, SleepAmount); + FEXCore::Utils::SpinWaitLock::Wait(&Test, 1, SleepAmount); auto end = std::chrono::high_resolution_clock::now(); auto diff = end - now;