mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-18 02:11:28 +00:00
21da317453
* use one central unified log with channels/priorities ad-hoc listener registration and de-registration * disable buffering by default * add multi-threaded ringbuffer implementation * use buffered listener for the gui (using the ringbuffer)
41 lines
746 B
C++
41 lines
746 B
C++
#include <stdafx.h>
|
|
#include "Utilities/Log.h"
|
|
#include "Emu/Memory/Memory.h"
|
|
#include "Emu/System.h"
|
|
#include "Emu/CPU/CPUThread.h"
|
|
|
|
#include "Utilities/SMutex.h"
|
|
|
|
__forceinline void SM_Sleep()
|
|
{
|
|
if (NamedThreadBase* t = GetCurrentNamedThread())
|
|
{
|
|
t->WaitForAnySignal();
|
|
}
|
|
else
|
|
{
|
|
Sleep(1);
|
|
}
|
|
}
|
|
|
|
thread_local size_t g_this_thread_id = 0;
|
|
|
|
__forceinline size_t SM_GetCurrentThreadId()
|
|
{
|
|
return g_this_thread_id ? g_this_thread_id : g_this_thread_id = std::hash<std::thread::id>()(std::this_thread::get_id());
|
|
}
|
|
|
|
__forceinline u32 SM_GetCurrentCPUThreadId()
|
|
{
|
|
if (CPUThread* t = GetCurrentCPUThread())
|
|
{
|
|
return t->GetId();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
__forceinline be_t<u32> SM_GetCurrentCPUThreadIdBE()
|
|
{
|
|
return SM_GetCurrentCPUThreadId();
|
|
}
|