2014-08-28 18:29:05 +02:00
|
|
|
#include "stdafx.h"
|
2014-06-02 19:27:24 +02:00
|
|
|
#include "Emu/System.h"
|
|
|
|
|
#include "Emu/CPU/CPUThread.h"
|
|
|
|
|
|
|
|
|
|
#include "Utilities/SMutex.h"
|
2014-02-05 12:55:32 +01:00
|
|
|
|
2014-08-22 18:36:27 +02:00
|
|
|
bool SM_IsAborted()
|
|
|
|
|
{
|
|
|
|
|
return Emu.IsStopped();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SM_Sleep()
|
2014-02-05 12:55:32 +01:00
|
|
|
{
|
2014-06-20 13:00:36 +02:00
|
|
|
if (NamedThreadBase* t = GetCurrentNamedThread())
|
|
|
|
|
{
|
|
|
|
|
t->WaitForAnySignal();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2014-07-12 09:02:39 +02:00
|
|
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
2014-06-20 13:00:36 +02:00
|
|
|
}
|
2014-02-05 12:55:32 +01:00
|
|
|
}
|
|
|
|
|
|
2014-06-19 15:50:18 +02:00
|
|
|
thread_local size_t g_this_thread_id = 0;
|
2014-03-31 12:04:34 +02:00
|
|
|
|
2014-08-22 18:36:27 +02:00
|
|
|
size_t SM_GetCurrentThreadId()
|
2014-02-05 12:55:32 +01:00
|
|
|
{
|
2014-03-31 12:04:34 +02:00
|
|
|
return g_this_thread_id ? g_this_thread_id : g_this_thread_id = std::hash<std::thread::id>()(std::this_thread::get_id());
|
2014-02-05 12:55:32 +01:00
|
|
|
}
|
|
|
|
|
|
2014-08-22 18:36:27 +02:00
|
|
|
u32 SM_GetCurrentCPUThreadId()
|
2014-02-05 12:55:32 +01:00
|
|
|
{
|
|
|
|
|
if (CPUThread* t = GetCurrentCPUThread())
|
|
|
|
|
{
|
|
|
|
|
return t->GetId();
|
|
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2014-08-22 18:36:27 +02:00
|
|
|
be_t<u32> SM_GetCurrentCPUThreadIdBE()
|
2014-02-05 12:55:32 +01:00
|
|
|
{
|
2014-07-18 18:55:26 +02:00
|
|
|
return be_t<u32>::MakeFromLE(SM_GetCurrentCPUThreadId());
|
2014-02-23 17:52:52 +01:00
|
|
|
}
|