summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFernando Sahmkow <fsahmkow27@gmail.com>2020-02-10 18:33:13 +0100
committerFernando Sahmkow <fsahmkow27@gmail.com>2020-06-18 22:29:19 +0200
commit1bd706344e2381e11245b2f0bdc291429e46c634 (patch)
tree4abae5a2088df1eb023967d83c0b808eceb30cea
parentCommon: Correct fcontext fibers. (diff)
downloadyuzu-1bd706344e2381e11245b2f0bdc291429e46c634.tar
yuzu-1bd706344e2381e11245b2f0bdc291429e46c634.tar.gz
yuzu-1bd706344e2381e11245b2f0bdc291429e46c634.tar.bz2
yuzu-1bd706344e2381e11245b2f0bdc291429e46c634.tar.lz
yuzu-1bd706344e2381e11245b2f0bdc291429e46c634.tar.xz
yuzu-1bd706344e2381e11245b2f0bdc291429e46c634.tar.zst
yuzu-1bd706344e2381e11245b2f0bdc291429e46c634.zip
Diffstat (limited to '')
-rw-r--r--src/common/fiber.cpp21
-rw-r--r--src/common/fiber.h2
-rw-r--r--src/common/wall_clock.cpp12
-rw-r--r--src/common/wall_clock.h4
-rw-r--r--src/core/host_timing.cpp8
-rw-r--r--src/core/host_timing.h2
-rw-r--r--src/tests/common/fibers.cpp23
7 files changed, 41 insertions, 31 deletions
diff --git a/src/common/fiber.cpp b/src/common/fiber.cpp
index e91d86dbe..a46be73c1 100644
--- a/src/common/fiber.cpp
+++ b/src/common/fiber.cpp
@@ -12,7 +12,6 @@
namespace Common {
-
#ifdef _MSC_VER
struct Fiber::FiberImpl {
@@ -27,14 +26,14 @@ void Fiber::start() {
UNREACHABLE();
}
-void __stdcall Fiber::FiberStartFunc(void* fiber_parameter)
-{
- auto fiber = static_cast<Fiber *>(fiber_parameter);
- fiber->start();
+void __stdcall Fiber::FiberStartFunc(void* fiber_parameter) {
+ auto fiber = static_cast<Fiber*>(fiber_parameter);
+ fiber->start();
}
Fiber::Fiber(std::function<void(void*)>&& entry_point_func, void* start_parameter)
- : guard{}, entry_point{std::move(entry_point_func)}, start_parameter{start_parameter}, previous_fiber{} {
+ : guard{}, entry_point{std::move(entry_point_func)}, start_parameter{start_parameter},
+ previous_fiber{} {
impl = std::make_unique<FiberImpl>();
impl->handle = CreateFiber(0, &FiberStartFunc, this);
}
@@ -99,14 +98,14 @@ void Fiber::start(boost::context::detail::transfer_t& transfer) {
UNREACHABLE();
}
-void Fiber::FiberStartFunc(boost::context::detail::transfer_t transfer)
-{
- auto fiber = static_cast<Fiber *>(transfer.data);
- fiber->start(transfer);
+void Fiber::FiberStartFunc(boost::context::detail::transfer_t transfer) {
+ auto fiber = static_cast<Fiber*>(transfer.data);
+ fiber->start(transfer);
}
Fiber::Fiber(std::function<void(void*)>&& entry_point_func, void* start_parameter)
- : guard{}, entry_point{std::move(entry_point_func)}, start_parameter{start_parameter}, previous_fiber{} {
+ : guard{}, entry_point{std::move(entry_point_func)}, start_parameter{start_parameter},
+ previous_fiber{} {
impl = std::make_unique<FiberImpl>();
impl->context = boost::context::detail::make_fcontext(impl->stack.data(), impl->stack.size(),
FiberStartFunc);
diff --git a/src/common/fiber.h b/src/common/fiber.h
index 89a01fdd8..b530bf4d2 100644
--- a/src/common/fiber.h
+++ b/src/common/fiber.h
@@ -12,7 +12,7 @@
#ifndef _MSC_VER
namespace boost::context::detail {
- struct transfer_t;
+struct transfer_t;
}
#endif
diff --git a/src/common/wall_clock.cpp b/src/common/wall_clock.cpp
index 8f5e17fa4..e6161c72c 100644
--- a/src/common/wall_clock.cpp
+++ b/src/common/wall_clock.cpp
@@ -58,7 +58,8 @@ private:
#ifdef ARCHITECTURE_x86_64
-std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency, u32 emulated_clock_frequency) {
+std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency,
+ u32 emulated_clock_frequency) {
const auto& caps = GetCPUCaps();
u64 rtsc_frequency = 0;
if (caps.invariant_tsc) {
@@ -70,15 +71,18 @@ std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency, u
}
}
if (rtsc_frequency == 0) {
- return std::make_unique<StandardWallClock>(emulated_cpu_frequency, emulated_clock_frequency);
+ return std::make_unique<StandardWallClock>(emulated_cpu_frequency,
+ emulated_clock_frequency);
} else {
- return std::make_unique<X64::NativeClock>(emulated_cpu_frequency, emulated_clock_frequency, rtsc_frequency);
+ return std::make_unique<X64::NativeClock>(emulated_cpu_frequency, emulated_clock_frequency,
+ rtsc_frequency);
}
}
#else
-std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency, u32 emulated_clock_frequency) {
+std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency,
+ u32 emulated_clock_frequency) {
return std::make_unique<StandardWallClock>(emulated_cpu_frequency, emulated_clock_frequency);
}
diff --git a/src/common/wall_clock.h b/src/common/wall_clock.h
index fc34429bb..ed284cf50 100644
--- a/src/common/wall_clock.h
+++ b/src/common/wall_clock.h
@@ -13,7 +13,6 @@ namespace Common {
class WallClock {
public:
-
/// Returns current wall time in nanoseconds
virtual std::chrono::nanoseconds GetTimeNS() = 0;
@@ -46,6 +45,7 @@ private:
bool is_native;
};
-std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency, u32 emulated_clock_frequency);
+std::unique_ptr<WallClock> CreateBestMatchingClock(u32 emulated_cpu_frequency,
+ u32 emulated_clock_frequency);
} // namespace Common
diff --git a/src/core/host_timing.cpp b/src/core/host_timing.cpp
index 4ccf7c6c1..c734a118e 100644
--- a/src/core/host_timing.cpp
+++ b/src/core/host_timing.cpp
@@ -72,7 +72,8 @@ void CoreTiming::SyncPause(bool is_paused) {
}
Pause(is_paused);
event.Set();
- while (paused_set != is_paused);
+ while (paused_set != is_paused)
+ ;
}
bool CoreTiming::IsRunning() {
@@ -158,7 +159,8 @@ void CoreTiming::Advance() {
}
if (!event_queue.empty()) {
- std::chrono::nanoseconds next_time = std::chrono::nanoseconds(event_queue.front().time - global_timer);
+ std::chrono::nanoseconds next_time =
+ std::chrono::nanoseconds(event_queue.front().time - global_timer);
basic_lock.unlock();
event.WaitFor(next_time);
} else {
@@ -181,4 +183,4 @@ std::chrono::microseconds CoreTiming::GetGlobalTimeUs() const {
return clock->GetTimeUS();
}
-} // namespace Core::Timing
+} // namespace Core::HostTiming
diff --git a/src/core/host_timing.h b/src/core/host_timing.h
index f04a150ee..15a150904 100644
--- a/src/core/host_timing.h
+++ b/src/core/host_timing.h
@@ -145,4 +145,4 @@ private:
///
std::shared_ptr<EventType> CreateEvent(std::string name, TimedCallback&& callback);
-} // namespace Core::Timing
+} // namespace Core::HostTiming
diff --git a/src/tests/common/fibers.cpp b/src/tests/common/fibers.cpp
index 358393a19..d63194dd4 100644
--- a/src/tests/common/fibers.cpp
+++ b/src/tests/common/fibers.cpp
@@ -92,7 +92,8 @@ public:
void DoWork1() {
trap2 = false;
- while (trap.load());
+ while (trap.load())
+ ;
for (u32 i = 0; i < 12000; i++) {
value1 += i;
}
@@ -105,7 +106,8 @@ public:
}
void DoWork2() {
- while (trap2.load());
+ while (trap2.load())
+ ;
value2 = 2000;
trap = false;
Fiber::YieldTo(fiber2, fiber1);
@@ -197,9 +199,12 @@ static void ThreadStart2_2(u32 id, TestControl2& test_control) {
TEST_CASE("Fibers::InterExchange", "[common]") {
TestControl2 test_control{};
test_control.thread_fibers.resize(2, nullptr);
- test_control.fiber1 = std::make_shared<Fiber>(std::function<void(void*)>{WorkControl2_1}, &test_control);
- test_control.fiber2 = std::make_shared<Fiber>(std::function<void(void*)>{WorkControl2_2}, &test_control);
- test_control.fiber3 = std::make_shared<Fiber>(std::function<void(void*)>{WorkControl2_3}, &test_control);
+ test_control.fiber1 =
+ std::make_shared<Fiber>(std::function<void(void*)>{WorkControl2_1}, &test_control);
+ test_control.fiber2 =
+ std::make_shared<Fiber>(std::function<void(void*)>{WorkControl2_2}, &test_control);
+ test_control.fiber3 =
+ std::make_shared<Fiber>(std::function<void(void*)>{WorkControl2_3}, &test_control);
std::thread thread1(ThreadStart2_1, 0, std::ref(test_control));
std::thread thread2(ThreadStart2_2, 1, std::ref(test_control));
thread1.join();
@@ -291,8 +296,10 @@ static void ThreadStart3(u32 id, TestControl3& test_control) {
TEST_CASE("Fibers::StartRace", "[common]") {
TestControl3 test_control{};
test_control.thread_fibers.resize(2, nullptr);
- test_control.fiber1 = std::make_shared<Fiber>(std::function<void(void*)>{WorkControl3_1}, &test_control);
- test_control.fiber2 = std::make_shared<Fiber>(std::function<void(void*)>{WorkControl3_2}, &test_control);
+ test_control.fiber1 =
+ std::make_shared<Fiber>(std::function<void(void*)>{WorkControl3_1}, &test_control);
+ test_control.fiber2 =
+ std::make_shared<Fiber>(std::function<void(void*)>{WorkControl3_2}, &test_control);
std::thread thread1(ThreadStart3, 0, std::ref(test_control));
std::thread thread2(ThreadStart3, 1, std::ref(test_control));
thread1.join();
@@ -302,6 +309,4 @@ TEST_CASE("Fibers::StartRace", "[common]") {
REQUIRE(test_control.value3 == 1);
}
-
-
} // namespace Common