summaryrefslogtreecommitdiff
path: root/src/core/hle/service/service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/service/service.cpp')
-rw-r--r--src/core/hle/service/service.cpp29
1 files changed, 24 insertions, 5 deletions
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index b0b2b7b35..b2470d814 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -7,6 +7,7 @@
7 7
8#include "core/hle/hle.h" 8#include "core/hle/hle.h"
9#include "core/hle/service/service.h" 9#include "core/hle/service/service.h"
10#include "core/hle/service/apt.h"
10 11
11namespace Service { 12namespace Service {
12 13
@@ -104,19 +105,36 @@ public:
104 */ 105 */
105 Syscall::Result Sync() { 106 Syscall::Result Sync() {
106 u32 header = 0; 107 u32 header = 0;
107 HLE::Read<u32>(header, (HLE::CMD_BUFFER_ADDR + CMD_OFFSET)); 108 Syscall::Result res = 0;
109
110 u32* cmd_buff = (u32*)HLE::GetPointer(HLE::CMD_BUFFER_ADDR + CMD_OFFSET);
111
112 switch (cmd_buff[0]) {
108 113
109 switch (header) {
110 case CMD_HEADER_INIT: 114 case CMD_HEADER_INIT:
111 NOTICE_LOG(HLE, "SRV::Sync - Initialize"); 115 NOTICE_LOG(OSHLE, "SRV::Sync - Initialize");
112 break; 116 break;
113 117
114 case CMD_HEADER_GET_HANDLE: 118 case CMD_HEADER_GET_HANDLE:
115 NOTICE_LOG(HLE, "SRV::Sync - GetHandle, port: %s", HLE::GetCharPointer(HLE::CMD_BUFFER_ADDR + CMD_OFFSET + 4)); 119 const char* port_name = (const char*)&cmd_buff[1];
120 Interface* service = g_manager->FetchFromPortName(port_name);
121
122 NOTICE_LOG(OSHLE, "SRV::Sync - GetHandle - port: %s, handle: 0x%08X", port_name,
123 service->GetUID());
124
125 if (NULL != service) {
126 cmd_buff[3] = service->GetUID();
127 } else {
128 ERROR_LOG(OSHLE, "Service %s does not exist", port_name);
129 res = -1;
130 }
131
116 break; 132 break;
117 } 133 }
118 134
119 return 0; 135 cmd_buff[1] = res;
136
137 return res;
120 } 138 }
121 139
122}; 140};
@@ -128,6 +146,7 @@ public:
128void Init() { 146void Init() {
129 g_manager = new Manager; 147 g_manager = new Manager;
130 g_manager->AddService(new SRV); 148 g_manager->AddService(new SRV);
149 g_manager->AddService(new APT);
131 NOTICE_LOG(HLE, "Services initialized OK"); 150 NOTICE_LOG(HLE, "Services initialized OK");
132} 151}
133 152