Make Port/Service registration and querying more HW-accurate

This commit is contained in:
Yuri Kunde Schlesner 2015-01-30 16:07:04 -02:00
parent 5e91fc0d1a
commit 8779b31fe6
4 changed files with 82 additions and 108 deletions

View file

@ -35,10 +35,10 @@ static void GetServiceHandle(Service::Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
std::string port_name = std::string((const char*)&cmd_buff[1], 0, Service::kMaxPortSize);
Service::Interface* service = Service::g_manager->FetchFromPortName(port_name);
auto it = Service::g_srv_services.find(port_name);
if (nullptr != service) {
cmd_buff[3] = service->GetHandle();
if (it != Service::g_srv_services.end()) {
cmd_buff[3] = Kernel::g_handle_table.Create(it->second).MoveFrom();
LOG_TRACE(Service_SRV, "called port=%s, handle=0x%08X", port_name.c_str(), cmd_buff[3]);
} else {
LOG_ERROR(Service_SRV, "(UNIMPLEMENTED) called port=%s", port_name.c_str());