|
|
|
@ -13,6 +13,7 @@
|
|
|
|
|
|
|
|
|
|
#include "core/core.h"
|
|
|
|
|
#include "core/core_timing.h"
|
|
|
|
|
#include "core/hle/kernel/client_port.h"
|
|
|
|
|
#include "core/hle/kernel/handle_table.h"
|
|
|
|
|
#include "core/hle/kernel/kernel.h"
|
|
|
|
|
#include "core/hle/kernel/process.h"
|
|
|
|
@ -124,6 +125,8 @@ struct KernelCore::Impl {
|
|
|
|
|
|
|
|
|
|
timer_callback_handle_table.Clear();
|
|
|
|
|
timer_callback_event_type = nullptr;
|
|
|
|
|
|
|
|
|
|
named_ports.clear();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void InitializeResourceLimits(KernelCore& kernel) {
|
|
|
|
@ -217,6 +220,10 @@ struct KernelCore::Impl {
|
|
|
|
|
// TODO(yuriks): This can be removed if Thread objects are explicitly pooled in the future,
|
|
|
|
|
// allowing us to simply use a pool index or similar.
|
|
|
|
|
Kernel::HandleTable thread_wakeup_callback_handle_table;
|
|
|
|
|
|
|
|
|
|
/// Map of named ports managed by the kernel, which can be retrieved using
|
|
|
|
|
/// the ConnectToPort SVC.
|
|
|
|
|
NamedPortTable named_ports;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
KernelCore::KernelCore() : impl{std::make_unique<Impl>()} {}
|
|
|
|
@ -257,6 +264,23 @@ void KernelCore::AppendNewProcess(SharedPtr<Process> process) {
|
|
|
|
|
impl->process_list.push_back(std::move(process));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void KernelCore::AddNamedPort(std::string name, SharedPtr<ClientPort> port) {
|
|
|
|
|
impl->named_ports.emplace(std::move(name), std::move(port));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
KernelCore::NamedPortTable::iterator KernelCore::FindNamedPort(const std::string& name) {
|
|
|
|
|
return impl->named_ports.find(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
KernelCore::NamedPortTable::const_iterator KernelCore::FindNamedPort(
|
|
|
|
|
const std::string& name) const {
|
|
|
|
|
return impl->named_ports.find(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool KernelCore::IsValidNamedPort(NamedPortTable::const_iterator port) const {
|
|
|
|
|
return port != impl->named_ports.cend();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u32 KernelCore::CreateNewObjectID() {
|
|
|
|
|
return impl->next_object_id++;
|
|
|
|
|
}
|
|
|
|
|