// SPDX-FileCopyrightText: 2013 Dolphin Emulator Project // SPDX-FileCopyrightText: 2014 Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "common/types.h" namespace Common { enum class ThreadPriority : u32 { Low = 0, Normal = 1, High = 2, VeryHigh = 3, Critical = 4, }; void SetCurrentThreadRealtime(std::chrono::nanoseconds period_ns); void SetCurrentThreadPriority(ThreadPriority new_priority); void SetCurrentThreadName(const char* name); void SetThreadName(void* thread, const char* name); class AccurateTimer { std::chrono::nanoseconds target_interval{}; std::chrono::nanoseconds total_wait{}; std::chrono::high_resolution_clock::time_point start_time; public: explicit AccurateTimer(std::chrono::nanoseconds target_interval); void Start(); void End(); std::chrono::nanoseconds GetTotalWait() const { return total_wait; } }; } // namespace Common