summaryrefslogtreecommitdiff
path: root/src/core/hle/service/srv.cpp
diff options
context:
space:
mode:
authorGravatar bunnei2014-04-15 23:28:03 -0400
committerGravatar bunnei2014-04-15 23:28:03 -0400
commitffabed8c25490be0e61409cebd1615eedb223c3d (patch)
tree9dc74eb2673323a0627211bcdf6781e84f5f604a /src/core/hle/service/srv.cpp
parentfixed naming for APT_U (diff)
downloadyuzu-ffabed8c25490be0e61409cebd1615eedb223c3d.tar.gz
yuzu-ffabed8c25490be0e61409cebd1615eedb223c3d.tar.xz
yuzu-ffabed8c25490be0e61409cebd1615eedb223c3d.zip
restructured hle:services completely to use function lookup tables
Diffstat (limited to 'src/core/hle/service/srv.cpp')
-rw-r--r--src/core/hle/service/srv.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/core/hle/service/srv.cpp b/src/core/hle/service/srv.cpp
new file mode 100644
index 000000000..bb6c08b78
--- /dev/null
+++ b/src/core/hle/service/srv.cpp
@@ -0,0 +1,55 @@
1// Copyright 2014 Citra Emulator Project
2// Licensed under GPLv2
3// Refer to the license.txt file included.
4
5#include "core/hle/hle.h"
6#include "core/hle/service/srv.h"
7#include "core/hle/service/service.h"
8
9
10namespace SRV {
11
12void Initialize() {
13 NOTICE_LOG(OSHLE, "SRV::Sync - Initialize");
14}
15
16void GetServiceHandle() {
17 Syscall::Result res = 0;
18 u32* cmd_buff = (u32*)HLE::GetPointer(HLE::CMD_BUFFER_ADDR + Service::kCommandHeaderOffset);
19
20 const char* port_name = (const char*)&cmd_buff[1];
21 Service::Interface* service = Service::g_manager->FetchFromPortName(port_name);
22
23 NOTICE_LOG(OSHLE, "SRV::Sync - GetHandle - port: %s, handle: 0x%08X", port_name,
24 service->GetUID());
25
26 if (NULL != service) {
27 cmd_buff[3] = service->GetUID();
28 } else {
29 ERROR_LOG(OSHLE, "Service %s does not exist", port_name);
30 res = -1;
31 }
32 cmd_buff[1] = res;
33
34 //return res;
35}
36
37const HLE::FunctionDef FunctionTable[] = {
38 {0x00010002, Initialize, "Initialize"},
39 {0x00020000, NULL, "GetProcSemaphore"},
40 {0x00030100, NULL, "RegisterService"},
41 {0x000400C0, NULL, "UnregisterService"},
42 {0x00050100, GetServiceHandle, "GetServiceHandle"},
43};
44
45////////////////////////////////////////////////////////////////////////////////////////////////////
46// Interface class
47
48Interface::Interface() {
49 Register(FunctionTable, ARRAY_SIZE(FunctionTable));
50}
51
52Interface::~Interface() {
53}
54
55} // namespace