|
|
@ -194,7 +194,8 @@ struct KernelCore::Impl {
|
|
|
|
if (!is_multicore) {
|
|
|
|
if (!is_multicore) {
|
|
|
|
single_core_thread_id = this_id;
|
|
|
|
single_core_thread_id = this_id;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const auto end = register_host_thread_keys.begin() + num_host_threads;
|
|
|
|
const auto end =
|
|
|
|
|
|
|
|
register_host_thread_keys.begin() + static_cast<ptrdiff_t>(num_host_threads);
|
|
|
|
const auto it = std::find(register_host_thread_keys.begin(), end, this_id);
|
|
|
|
const auto it = std::find(register_host_thread_keys.begin(), end, this_id);
|
|
|
|
ASSERT(core_id < Core::Hardware::NUM_CPU_CORES);
|
|
|
|
ASSERT(core_id < Core::Hardware::NUM_CPU_CORES);
|
|
|
|
ASSERT(it == end);
|
|
|
|
ASSERT(it == end);
|
|
|
@ -205,7 +206,8 @@ struct KernelCore::Impl {
|
|
|
|
|
|
|
|
|
|
|
|
void RegisterHostThread() {
|
|
|
|
void RegisterHostThread() {
|
|
|
|
const std::thread::id this_id = std::this_thread::get_id();
|
|
|
|
const std::thread::id this_id = std::this_thread::get_id();
|
|
|
|
const auto end = register_host_thread_keys.begin() + num_host_threads;
|
|
|
|
const auto end =
|
|
|
|
|
|
|
|
register_host_thread_keys.begin() + static_cast<ptrdiff_t>(num_host_threads);
|
|
|
|
const auto it = std::find(register_host_thread_keys.begin(), end, this_id);
|
|
|
|
const auto it = std::find(register_host_thread_keys.begin(), end, this_id);
|
|
|
|
if (it == end) {
|
|
|
|
if (it == end) {
|
|
|
|
InsertHostThread(registered_thread_ids++);
|
|
|
|
InsertHostThread(registered_thread_ids++);
|
|
|
@ -224,12 +226,14 @@ struct KernelCore::Impl {
|
|
|
|
if (!is_multicore && single_core_thread_id == this_id) {
|
|
|
|
if (!is_multicore && single_core_thread_id == this_id) {
|
|
|
|
return static_cast<u32>(system.GetCpuManager().CurrentCore());
|
|
|
|
return static_cast<u32>(system.GetCpuManager().CurrentCore());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const auto end = register_host_thread_keys.begin() + num_host_threads;
|
|
|
|
const auto end =
|
|
|
|
|
|
|
|
register_host_thread_keys.begin() + static_cast<ptrdiff_t>(num_host_threads);
|
|
|
|
const auto it = std::find(register_host_thread_keys.begin(), end, this_id);
|
|
|
|
const auto it = std::find(register_host_thread_keys.begin(), end, this_id);
|
|
|
|
if (it == end) {
|
|
|
|
if (it == end) {
|
|
|
|
return Core::INVALID_HOST_THREAD_ID;
|
|
|
|
return Core::INVALID_HOST_THREAD_ID;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return register_host_thread_values[std::distance(register_host_thread_keys.begin(), it)];
|
|
|
|
return register_host_thread_values[static_cast<size_t>(
|
|
|
|
|
|
|
|
std::distance(register_host_thread_keys.begin(), it))];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Core::EmuThreadHandle GetCurrentEmuThreadID() const {
|
|
|
|
Core::EmuThreadHandle GetCurrentEmuThreadID() const {
|
|
|
|