summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/CMakeLists.txt16
-rw-r--r--src/core/hle/service/erpt/erpt.cpp51
-rw-r--r--src/core/hle/service/erpt/erpt.h16
-rw-r--r--src/core/hle/service/es/es.cpp57
-rw-r--r--src/core/hle/service/es/es.h16
-rw-r--r--src/core/hle/service/eupld/eupld.cpp52
-rw-r--r--src/core/hle/service/eupld/eupld.h16
-rw-r--r--src/core/hle/service/ldr/ldr.cpp81
-rw-r--r--src/core/hle/service/ldr/ldr.h16
-rw-r--r--src/core/hle/service/nifm/nifm.cpp47
-rw-r--r--src/core/hle/service/nifm/nifm.h19
-rw-r--r--src/core/hle/service/nifm/nifm_a.cpp17
-rw-r--r--src/core/hle/service/nifm/nifm_a.h16
-rw-r--r--src/core/hle/service/nifm/nifm_s.cpp17
-rw-r--r--src/core/hle/service/nifm/nifm_s.h16
-rw-r--r--src/core/hle/service/nifm/nifm_u.cpp17
-rw-r--r--src/core/hle/service/nifm/nifm_u.h16
-rw-r--r--src/core/hle/service/nvdrv/nvdrv.cpp10
-rw-r--r--src/core/hle/service/nvdrv/nvdrv.h2
-rw-r--r--src/core/hle/service/pm/pm.cpp70
-rw-r--r--src/core/hle/service/pm/pm.h16
-rw-r--r--src/core/hle/service/service.cpp10
-rw-r--r--src/yuzu/debugger/wait_tree.cpp4
23 files changed, 452 insertions, 146 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 833605475..2e2de59b1 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -136,6 +136,12 @@ add_library(core STATIC
136 hle/service/bcat/bcat.h 136 hle/service/bcat/bcat.h
137 hle/service/bcat/module.cpp 137 hle/service/bcat/module.cpp
138 hle/service/bcat/module.h 138 hle/service/bcat/module.h
139 hle/service/erpt/erpt.cpp
140 hle/service/erpt/erpt.h
141 hle/service/es/es.cpp
142 hle/service/es/es.h
143 hle/service/eupld/eupld.cpp
144 hle/service/eupld/eupld.h
139 hle/service/fatal/fatal.cpp 145 hle/service/fatal/fatal.cpp
140 hle/service/fatal/fatal.h 146 hle/service/fatal/fatal.h
141 hle/service/fatal/fatal_p.cpp 147 hle/service/fatal/fatal_p.cpp
@@ -152,6 +158,8 @@ add_library(core STATIC
152 hle/service/friend/interface.h 158 hle/service/friend/interface.h
153 hle/service/hid/hid.cpp 159 hle/service/hid/hid.cpp
154 hle/service/hid/hid.h 160 hle/service/hid/hid.h
161 hle/service/ldr/ldr.cpp
162 hle/service/ldr/ldr.h
155 hle/service/lm/lm.cpp 163 hle/service/lm/lm.cpp
156 hle/service/lm/lm.h 164 hle/service/lm/lm.h
157 hle/service/mm/mm_u.cpp 165 hle/service/mm/mm_u.cpp
@@ -162,12 +170,6 @@ add_library(core STATIC
162 hle/service/nfp/nfp_user.h 170 hle/service/nfp/nfp_user.h
163 hle/service/nifm/nifm.cpp 171 hle/service/nifm/nifm.cpp
164 hle/service/nifm/nifm.h 172 hle/service/nifm/nifm.h
165 hle/service/nifm/nifm_a.cpp
166 hle/service/nifm/nifm_a.h
167 hle/service/nifm/nifm_s.cpp
168 hle/service/nifm/nifm_s.h
169 hle/service/nifm/nifm_u.cpp
170 hle/service/nifm/nifm_u.h
171 hle/service/ns/ns.cpp 173 hle/service/ns/ns.cpp
172 hle/service/ns/ns.h 174 hle/service/ns/ns.h
173 hle/service/ns/pl_u.cpp 175 hle/service/ns/pl_u.cpp
@@ -201,6 +203,8 @@ add_library(core STATIC
201 hle/service/pctl/module.h 203 hle/service/pctl/module.h
202 hle/service/pctl/pctl.cpp 204 hle/service/pctl/pctl.cpp
203 hle/service/pctl/pctl.h 205 hle/service/pctl/pctl.h
206 hle/service/pm/pm.cpp
207 hle/service/pm/pm.h
204 hle/service/prepo/prepo.cpp 208 hle/service/prepo/prepo.cpp
205 hle/service/prepo/prepo.h 209 hle/service/prepo/prepo.h
206 hle/service/service.cpp 210 hle/service/service.cpp
diff --git a/src/core/hle/service/erpt/erpt.cpp b/src/core/hle/service/erpt/erpt.cpp
new file mode 100644
index 000000000..ee11cd78e
--- /dev/null
+++ b/src/core/hle/service/erpt/erpt.cpp
@@ -0,0 +1,51 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <memory>
6
7#include "core/hle/service/erpt/erpt.h"
8#include "core/hle/service/service.h"
9#include "core/hle/service/sm/sm.h"
10
11namespace Service::ERPT {
12
13class ErrorReportContext final : public ServiceFramework<ErrorReportContext> {
14public:
15 explicit ErrorReportContext() : ServiceFramework{"erpt:c"} {
16 // clang-format off
17 static const FunctionInfo functions[] = {
18 {0, nullptr, "SubmitContext"},
19 {1, nullptr, "CreateReport"},
20 {2, nullptr, "Unknown1"},
21 {3, nullptr, "Unknown2"},
22 {4, nullptr, "Unknown3"},
23 {5, nullptr, "Unknown4"},
24 {6, nullptr, "Unknown5"},
25 };
26 // clang-format on
27
28 RegisterHandlers(functions);
29 }
30};
31
32class ErrorReportSession final : public ServiceFramework<ErrorReportSession> {
33public:
34 explicit ErrorReportSession() : ServiceFramework{"erpt:r"} {
35 // clang-format off
36 static const FunctionInfo functions[] = {
37 {0, nullptr, "OpenReport"},
38 {1, nullptr, "OpenManager"},
39 };
40 // clang-format on
41
42 RegisterHandlers(functions);
43 }
44};
45
46void InstallInterfaces(SM::ServiceManager& sm) {
47 std::make_shared<ErrorReportContext>()->InstallAsService(sm);
48 std::make_shared<ErrorReportSession>()->InstallAsService(sm);
49}
50
51} // namespace Service::ERPT
diff --git a/src/core/hle/service/erpt/erpt.h b/src/core/hle/service/erpt/erpt.h
new file mode 100644
index 000000000..de439ab6d
--- /dev/null
+++ b/src/core/hle/service/erpt/erpt.h
@@ -0,0 +1,16 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7namespace Service::SM {
8class ServiceManager;
9}
10
11namespace Service::ERPT {
12
13/// Registers all ERPT services with the specified service manager.
14void InstallInterfaces(SM::ServiceManager& sm);
15
16} // namespace Service::ERPT
diff --git a/src/core/hle/service/es/es.cpp b/src/core/hle/service/es/es.cpp
new file mode 100644
index 000000000..d40f18565
--- /dev/null
+++ b/src/core/hle/service/es/es.cpp
@@ -0,0 +1,57 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "core/hle/service/service.h"
6
7namespace Service::ES {
8
9class ETicket final : public ServiceFramework<ETicket> {
10public:
11 explicit ETicket() : ServiceFramework{"es"} {
12 static const FunctionInfo functions[] = {
13 {1, nullptr, "ImportTicket"},
14 {2, nullptr, "ImportTicketCertificateSet"},
15 {3, nullptr, "DeleteTicket"},
16 {4, nullptr, "DeletePersonalizedTicket"},
17 {5, nullptr, "DeleteAllCommonTicket"},
18 {6, nullptr, "DeleteAllPersonalizedTicket"},
19 {7, nullptr, "DeleteAllPersonalizedTicketEx"},
20 {8, nullptr, "GetTitleKey"},
21 {9, nullptr, "CountCommonTicket"},
22 {10, nullptr, "CountPersonalizedTicket"},
23 {11, nullptr, "ListCommonTicket"},
24 {12, nullptr, "ListPersonalizedTicket"},
25 {13, nullptr, "ListMissingPersonalizedTicket"},
26 {14, nullptr, "GetCommonTicketSize"},
27 {15, nullptr, "GetPersonalizedTicketSize"},
28 {16, nullptr, "GetCommonTicketData"},
29 {17, nullptr, "GetPersonalizedTicketData"},
30 {18, nullptr, "OwnTicket"},
31 {19, nullptr, "GetTicketInfo"},
32 {20, nullptr, "ListLightTicketInfo"},
33 {21, nullptr, "SignData"},
34 {22, nullptr, "GetCommonTicketAndCertificateSize"},
35 {23, nullptr, "GetCommonTicketAndCertificateData"},
36 {24, nullptr, "ImportPrepurchaseRecord"},
37 {25, nullptr, "DeletePrepurchaseRecord"},
38 {26, nullptr, "DeleteAllPrepurchaseRecord"},
39 {27, nullptr, "CountPrepurchaseRecord"},
40 {28, nullptr, "ListPrepurchaseRecord"},
41 {29, nullptr, "ListPrepurchaseRecordInfo"},
42 {30, nullptr, "Unknown1"},
43 {31, nullptr, "Unknown2"},
44 {32, nullptr, "Unknown3"},
45 {33, nullptr, "Unknown4"},
46 {34, nullptr, "Unknown5"},
47 {35, nullptr, "Unknown6"},
48 };
49 RegisterHandlers(functions);
50 }
51};
52
53void InstallInterfaces(SM::ServiceManager& service_manager) {
54 std::make_shared<ETicket>()->InstallAsService(service_manager);
55}
56
57} // namespace Service::ES
diff --git a/src/core/hle/service/es/es.h b/src/core/hle/service/es/es.h
new file mode 100644
index 000000000..afe70465b
--- /dev/null
+++ b/src/core/hle/service/es/es.h
@@ -0,0 +1,16 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7namespace Service::SM {
8class ServiceManager;
9}
10
11namespace Service::ES {
12
13/// Registers all ES services with the specified service manager.
14void InstallInterfaces(SM::ServiceManager& service_manager);
15
16} // namespace Service::ES
diff --git a/src/core/hle/service/eupld/eupld.cpp b/src/core/hle/service/eupld/eupld.cpp
new file mode 100644
index 000000000..2df30acee
--- /dev/null
+++ b/src/core/hle/service/eupld/eupld.cpp
@@ -0,0 +1,52 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <memory>
6
7#include "core/hle/service/eupld/eupld.h"
8#include "core/hle/service/service.h"
9#include "core/hle/service/sm/sm.h"
10
11namespace Service::EUPLD {
12
13class ErrorUploadContext final : public ServiceFramework<ErrorUploadContext> {
14public:
15 explicit ErrorUploadContext() : ServiceFramework{"eupld:c"} {
16 // clang-format off
17 static const FunctionInfo functions[] = {
18 {0, nullptr, "SetUrl"},
19 {1, nullptr, "ImportCrt"},
20 {2, nullptr, "ImportPki"},
21 {3, nullptr, "SetAutoUpload"},
22 };
23 // clang-format on
24
25 RegisterHandlers(functions);
26 }
27};
28
29class ErrorUploadRequest final : public ServiceFramework<ErrorUploadRequest> {
30public:
31 explicit ErrorUploadRequest() : ServiceFramework{"eupld:r"} {
32 // clang-format off
33 static const FunctionInfo functions[] = {
34 {0, nullptr, "Initialize"},
35 {1, nullptr, "UploadAll"},
36 {2, nullptr, "UploadSelected"},
37 {3, nullptr, "GetUploadStatus"},
38 {4, nullptr, "CancelUpload"},
39 {5, nullptr, "GetResult"},
40 };
41 // clang-format on
42
43 RegisterHandlers(functions);
44 }
45};
46
47void InstallInterfaces(SM::ServiceManager& sm) {
48 std::make_shared<ErrorUploadContext>()->InstallAsService(sm);
49 std::make_shared<ErrorUploadRequest>()->InstallAsService(sm);
50}
51
52} // namespace Service::EUPLD
diff --git a/src/core/hle/service/eupld/eupld.h b/src/core/hle/service/eupld/eupld.h
new file mode 100644
index 000000000..6eef2c15f
--- /dev/null
+++ b/src/core/hle/service/eupld/eupld.h
@@ -0,0 +1,16 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7namespace Service::SM {
8class ServiceManager;
9}
10
11namespace Service::EUPLD {
12
13/// Registers all EUPLD services with the specified service manager.
14void InstallInterfaces(SM::ServiceManager& sm);
15
16} // namespace Service::EUPLD
diff --git a/src/core/hle/service/ldr/ldr.cpp b/src/core/hle/service/ldr/ldr.cpp
new file mode 100644
index 000000000..ec32faf15
--- /dev/null
+++ b/src/core/hle/service/ldr/ldr.cpp
@@ -0,0 +1,81 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <memory>
6
7#include "core/hle/service/ldr/ldr.h"
8#include "core/hle/service/service.h"
9
10namespace Service::LDR {
11
12class DebugMonitor final : public ServiceFramework<DebugMonitor> {
13public:
14 explicit DebugMonitor() : ServiceFramework{"ldr:dmnt"} {
15 // clang-format off
16 static const FunctionInfo functions[] = {
17 {0, nullptr, "AddProcessToDebugLaunchQueue"},
18 {1, nullptr, "ClearDebugLaunchQueue"},
19 {2, nullptr, "GetNsoInfos"},
20 };
21 // clang-format on
22
23 RegisterHandlers(functions);
24 }
25};
26
27class ProcessManager final : public ServiceFramework<ProcessManager> {
28public:
29 explicit ProcessManager() : ServiceFramework{"ldr:pm"} {
30 // clang-format off
31 static const FunctionInfo functions[] = {
32 {0, nullptr, "CreateProcess"},
33 {1, nullptr, "GetProgramInfo"},
34 {2, nullptr, "RegisterTitle"},
35 {3, nullptr, "UnregisterTitle"},
36 };
37 // clang-format on
38
39 RegisterHandlers(functions);
40 }
41};
42
43class Shell final : public ServiceFramework<Shell> {
44public:
45 explicit Shell() : ServiceFramework{"ldr:shel"} {
46 // clang-format off
47 static const FunctionInfo functions[] = {
48 {0, nullptr, "AddProcessToLaunchQueue"},
49 {1, nullptr, "ClearLaunchQueue"},
50 };
51 // clang-format on
52
53 RegisterHandlers(functions);
54 }
55};
56
57class RelocatableObject final : public ServiceFramework<RelocatableObject> {
58public:
59 explicit RelocatableObject() : ServiceFramework{"ldr:ro"} {
60 // clang-format off
61 static const FunctionInfo functions[] = {
62 {0, nullptr, "LoadNro"},
63 {1, nullptr, "UnloadNro"},
64 {2, nullptr, "LoadNrr"},
65 {3, nullptr, "UnloadNrr"},
66 {4, nullptr, "Initialize"},
67 };
68 // clang-format on
69
70 RegisterHandlers(functions);
71 }
72};
73
74void InstallInterfaces(SM::ServiceManager& sm) {
75 std::make_shared<DebugMonitor>()->InstallAsService(sm);
76 std::make_shared<ProcessManager>()->InstallAsService(sm);
77 std::make_shared<Shell>()->InstallAsService(sm);
78 std::make_shared<RelocatableObject>()->InstallAsService(sm);
79}
80
81} // namespace Service::LDR
diff --git a/src/core/hle/service/ldr/ldr.h b/src/core/hle/service/ldr/ldr.h
new file mode 100644
index 000000000..412410c4f
--- /dev/null
+++ b/src/core/hle/service/ldr/ldr.h
@@ -0,0 +1,16 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7namespace Service::SM {
8class ServiceManager;
9}
10
11namespace Service::LDR {
12
13/// Registers all LDR services with the specified service manager.
14void InstallInterfaces(SM::ServiceManager& sm);
15
16} // namespace Service::LDR
diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp
index 0d951084b..cfe8d9178 100644
--- a/src/core/hle/service/nifm/nifm.cpp
+++ b/src/core/hle/service/nifm/nifm.cpp
@@ -5,9 +5,7 @@
5#include "core/hle/ipc_helpers.h" 5#include "core/hle/ipc_helpers.h"
6#include "core/hle/kernel/event.h" 6#include "core/hle/kernel/event.h"
7#include "core/hle/service/nifm/nifm.h" 7#include "core/hle/service/nifm/nifm.h"
8#include "core/hle/service/nifm/nifm_a.h" 8#include "core/hle/service/service.h"
9#include "core/hle/service/nifm/nifm_s.h"
10#include "core/hle/service/nifm/nifm_u.h"
11 9
12namespace Service::NIFM { 10namespace Service::NIFM {
13 11
@@ -210,28 +208,35 @@ IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") {
210 RegisterHandlers(functions); 208 RegisterHandlers(functions);
211} 209}
212 210
213void Module::Interface::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { 211class NetworkInterface final : public ServiceFramework<NetworkInterface> {
214 IPC::ResponseBuilder rb{ctx, 2, 0, 1}; 212public:
215 rb.Push(RESULT_SUCCESS); 213 explicit NetworkInterface(const char* name) : ServiceFramework{name} {
216 rb.PushIpcInterface<IGeneralService>(); 214 static const FunctionInfo functions[] = {
217 LOG_DEBUG(Service_NIFM, "called"); 215 {4, &NetworkInterface::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
218} 216 {5, &NetworkInterface::CreateGeneralService, "CreateGeneralService"},
217 };
218 RegisterHandlers(functions);
219 }
219 220
220void Module::Interface::CreateGeneralService(Kernel::HLERequestContext& ctx) { 221 void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) {
221 IPC::ResponseBuilder rb{ctx, 2, 0, 1}; 222 IPC::ResponseBuilder rb{ctx, 2, 0, 1};
222 rb.Push(RESULT_SUCCESS); 223 rb.Push(RESULT_SUCCESS);
223 rb.PushIpcInterface<IGeneralService>(); 224 rb.PushIpcInterface<IGeneralService>();
224 LOG_DEBUG(Service_NIFM, "called"); 225 LOG_DEBUG(Service_NIFM, "called");
225} 226 }
226 227
227Module::Interface::Interface(std::shared_ptr<Module> module, const char* name) 228 void CreateGeneralService(Kernel::HLERequestContext& ctx) {
228 : ServiceFramework(name), module(std::move(module)) {} 229 IPC::ResponseBuilder rb{ctx, 2, 0, 1};
230 rb.Push(RESULT_SUCCESS);
231 rb.PushIpcInterface<IGeneralService>();
232 LOG_DEBUG(Service_NIFM, "called");
233 }
234};
229 235
230void InstallInterfaces(SM::ServiceManager& service_manager) { 236void InstallInterfaces(SM::ServiceManager& service_manager) {
231 auto module = std::make_shared<Module>(); 237 std::make_shared<NetworkInterface>("nifm:a")->InstallAsService(service_manager);
232 std::make_shared<NIFM_A>(module)->InstallAsService(service_manager); 238 std::make_shared<NetworkInterface>("nifm:s")->InstallAsService(service_manager);
233 std::make_shared<NIFM_S>(module)->InstallAsService(service_manager); 239 std::make_shared<NetworkInterface>("nifm:u")->InstallAsService(service_manager);
234 std::make_shared<NIFM_U>(module)->InstallAsService(service_manager);
235} 240}
236 241
237} // namespace Service::NIFM 242} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm.h b/src/core/hle/service/nifm/nifm.h
index 11f1b5831..4616b3b48 100644
--- a/src/core/hle/service/nifm/nifm.h
+++ b/src/core/hle/service/nifm/nifm.h
@@ -4,24 +4,13 @@
4 4
5#pragma once 5#pragma once
6 6
7#include "core/hle/service/service.h" 7namespace Service::SM {
8class ServiceManager;
9}
8 10
9namespace Service::NIFM { 11namespace Service::NIFM {
10 12
11class Module final { 13/// Registers all NIFM services with the specified service manager.
12public:
13 class Interface : public ServiceFramework<Interface> {
14 public:
15 explicit Interface(std::shared_ptr<Module> module, const char* name);
16
17 void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx);
18 void CreateGeneralService(Kernel::HLERequestContext& ctx);
19
20 protected:
21 std::shared_ptr<Module> module;
22 };
23};
24
25void InstallInterfaces(SM::ServiceManager& service_manager); 14void InstallInterfaces(SM::ServiceManager& service_manager);
26 15
27} // namespace Service::NIFM 16} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm_a.cpp b/src/core/hle/service/nifm/nifm_a.cpp
deleted file mode 100644
index b7f296a20..000000000
--- a/src/core/hle/service/nifm/nifm_a.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "core/hle/service/nifm/nifm_a.h"
6
7namespace Service::NIFM {
8
9NIFM_A::NIFM_A(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "nifm:a") {
10 static const FunctionInfo functions[] = {
11 {4, &NIFM_A::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
12 {5, &NIFM_A::CreateGeneralService, "CreateGeneralService"},
13 };
14 RegisterHandlers(functions);
15}
16
17} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm_a.h b/src/core/hle/service/nifm/nifm_a.h
deleted file mode 100644
index c3ba33110..000000000
--- a/src/core/hle/service/nifm/nifm_a.h
+++ /dev/null
@@ -1,16 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/nifm/nifm.h"
8
9namespace Service::NIFM {
10
11class NIFM_A final : public Module::Interface {
12public:
13 explicit NIFM_A(std::shared_ptr<Module> module);
14};
15
16} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm_s.cpp b/src/core/hle/service/nifm/nifm_s.cpp
deleted file mode 100644
index 96e3c0cee..000000000
--- a/src/core/hle/service/nifm/nifm_s.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "core/hle/service/nifm/nifm_s.h"
6
7namespace Service::NIFM {
8
9NIFM_S::NIFM_S(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "nifm:s") {
10 static const FunctionInfo functions[] = {
11 {4, &NIFM_S::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
12 {5, &NIFM_S::CreateGeneralService, "CreateGeneralService"},
13 };
14 RegisterHandlers(functions);
15}
16
17} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm_s.h b/src/core/hle/service/nifm/nifm_s.h
deleted file mode 100644
index 8d1635a5d..000000000
--- a/src/core/hle/service/nifm/nifm_s.h
+++ /dev/null
@@ -1,16 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/nifm/nifm.h"
8
9namespace Service::NIFM {
10
11class NIFM_S final : public Module::Interface {
12public:
13 explicit NIFM_S(std::shared_ptr<Module> module);
14};
15
16} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm_u.cpp b/src/core/hle/service/nifm/nifm_u.cpp
deleted file mode 100644
index 8cb75b903..000000000
--- a/src/core/hle/service/nifm/nifm_u.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "core/hle/service/nifm/nifm_u.h"
6
7namespace Service::NIFM {
8
9NIFM_U::NIFM_U(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "nifm:u") {
10 static const FunctionInfo functions[] = {
11 {4, &NIFM_U::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
12 {5, &NIFM_U::CreateGeneralService, "CreateGeneralService"},
13 };
14 RegisterHandlers(functions);
15}
16
17} // namespace Service::NIFM
diff --git a/src/core/hle/service/nifm/nifm_u.h b/src/core/hle/service/nifm/nifm_u.h
deleted file mode 100644
index def9726b1..000000000
--- a/src/core/hle/service/nifm/nifm_u.h
+++ /dev/null
@@ -1,16 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include "core/hle/service/nifm/nifm.h"
8
9namespace Service::NIFM {
10
11class NIFM_U final : public Module::Interface {
12public:
13 explicit NIFM_U(std::shared_ptr<Module> module);
14};
15
16} // namespace Service::NIFM
diff --git a/src/core/hle/service/nvdrv/nvdrv.cpp b/src/core/hle/service/nvdrv/nvdrv.cpp
index cc5cfe34e..1555ea806 100644
--- a/src/core/hle/service/nvdrv/nvdrv.cpp
+++ b/src/core/hle/service/nvdrv/nvdrv.cpp
@@ -2,6 +2,8 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5#include <utility>
6
5#include "core/hle/ipc_helpers.h" 7#include "core/hle/ipc_helpers.h"
6#include "core/hle/service/nvdrv/devices/nvdevice.h" 8#include "core/hle/service/nvdrv/devices/nvdevice.h"
7#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h" 9#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h"
@@ -40,14 +42,14 @@ Module::Module() {
40 devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>(); 42 devices["/dev/nvhost-nvdec"] = std::make_shared<Devices::nvhost_nvdec>();
41} 43}
42 44
43u32 Module::Open(std::string device_name) { 45u32 Module::Open(const std::string& device_name) {
44 ASSERT_MSG(devices.find(device_name) != devices.end(), "Trying to open unknown device {}", 46 ASSERT_MSG(devices.find(device_name) != devices.end(), "Trying to open unknown device {}",
45 device_name); 47 device_name);
46 48
47 auto device = devices[device_name]; 49 auto device = devices[device_name];
48 u32 fd = next_fd++; 50 const u32 fd = next_fd++;
49 51
50 open_files[fd] = device; 52 open_files[fd] = std::move(device);
51 53
52 return fd; 54 return fd;
53} 55}
@@ -56,7 +58,7 @@ u32 Module::Ioctl(u32 fd, u32_le command, const std::vector<u8>& input, std::vec
56 auto itr = open_files.find(fd); 58 auto itr = open_files.find(fd);
57 ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device"); 59 ASSERT_MSG(itr != open_files.end(), "Tried to talk to an invalid device");
58 60
59 auto device = itr->second; 61 auto& device = itr->second;
60 return device->ioctl({command}, input, output); 62 return device->ioctl({command}, input, output);
61} 63}
62 64
diff --git a/src/core/hle/service/nvdrv/nvdrv.h b/src/core/hle/service/nvdrv/nvdrv.h
index 35b2c65fc..184f3c9fc 100644
--- a/src/core/hle/service/nvdrv/nvdrv.h
+++ b/src/core/hle/service/nvdrv/nvdrv.h
@@ -38,7 +38,7 @@ public:
38 } 38 }
39 39
40 /// Opens a device node and returns a file descriptor to it. 40 /// Opens a device node and returns a file descriptor to it.
41 u32 Open(std::string device_name); 41 u32 Open(const std::string& device_name);
42 /// Sends an ioctl command to the specified file descriptor. 42 /// Sends an ioctl command to the specified file descriptor.
43 u32 Ioctl(u32 fd, u32 command, const std::vector<u8>& input, std::vector<u8>& output); 43 u32 Ioctl(u32 fd, u32 command, const std::vector<u8>& input, std::vector<u8>& output);
44 /// Closes a device file descriptor and returns operation success. 44 /// Closes a device file descriptor and returns operation success.
diff --git a/src/core/hle/service/pm/pm.cpp b/src/core/hle/service/pm/pm.cpp
new file mode 100644
index 000000000..e20a25689
--- /dev/null
+++ b/src/core/hle/service/pm/pm.cpp
@@ -0,0 +1,70 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "core/hle/service/service.h"
6
7namespace Service::PM {
8
9class BootMode final : public ServiceFramework<BootMode> {
10public:
11 explicit BootMode() : ServiceFramework{"pm:bm"} {
12 static const FunctionInfo functions[] = {
13 {0, nullptr, "GetBootMode"},
14 {1, nullptr, "SetMaintenanceBoot"},
15 };
16 RegisterHandlers(functions);
17 }
18};
19
20class DebugMonitor final : public ServiceFramework<DebugMonitor> {
21public:
22 explicit DebugMonitor() : ServiceFramework{"pm:dmnt"} {
23 static const FunctionInfo functions[] = {
24 {0, nullptr, "IsDebugMode"},
25 {1, nullptr, "GetDebugProcesses"},
26 {2, nullptr, "StartDebugProcess"},
27 {3, nullptr, "GetTitlePid"},
28 {4, nullptr, "EnableDebugForTitleId"},
29 {5, nullptr, "GetApplicationPid"},
30 {6, nullptr, "EnableDebugForApplication"},
31 };
32 RegisterHandlers(functions);
33 }
34};
35
36class Info final : public ServiceFramework<Info> {
37public:
38 explicit Info() : ServiceFramework{"pm:info"} {
39 static const FunctionInfo functions[] = {
40 {0, nullptr, "GetTitleId"},
41 };
42 RegisterHandlers(functions);
43 }
44};
45
46class Shell final : public ServiceFramework<Shell> {
47public:
48 explicit Shell() : ServiceFramework{"pm:shell"} {
49 static const FunctionInfo functions[] = {
50 {0, nullptr, "LaunchProcess"},
51 {1, nullptr, "TerminateProcessByPid"},
52 {2, nullptr, "TerminateProcessByTitleId"},
53 {3, nullptr, "GetProcessEventWaiter"},
54 {4, nullptr, "GetProcessEventType"},
55 {5, nullptr, "NotifyBootFinished"},
56 {6, nullptr, "GetApplicationPid"},
57 {7, nullptr, "BoostSystemMemoryResourceLimit"},
58 };
59 RegisterHandlers(functions);
60 }
61};
62
63void InstallInterfaces(SM::ServiceManager& sm) {
64 std::make_shared<BootMode>()->InstallAsService(sm);
65 std::make_shared<DebugMonitor>()->InstallAsService(sm);
66 std::make_shared<Info>()->InstallAsService(sm);
67 std::make_shared<Shell>()->InstallAsService(sm);
68}
69
70} // namespace Service::PM
diff --git a/src/core/hle/service/pm/pm.h b/src/core/hle/service/pm/pm.h
new file mode 100644
index 000000000..9fc19fed6
--- /dev/null
+++ b/src/core/hle/service/pm/pm.h
@@ -0,0 +1,16 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7namespace Service::SM {
8class ServiceManager;
9}
10
11namespace Service::PM {
12
13/// Registers all PM services with the specified service manager.
14void InstallInterfaces(SM::ServiceManager& service_manager);
15
16} // namespace Service::PM
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 0d036bfaa..482989ea7 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -21,10 +21,14 @@
21#include "core/hle/service/apm/apm.h" 21#include "core/hle/service/apm/apm.h"
22#include "core/hle/service/audio/audio.h" 22#include "core/hle/service/audio/audio.h"
23#include "core/hle/service/bcat/bcat.h" 23#include "core/hle/service/bcat/bcat.h"
24#include "core/hle/service/erpt/erpt.h"
25#include "core/hle/service/es/es.h"
26#include "core/hle/service/eupld/eupld.h"
24#include "core/hle/service/fatal/fatal.h" 27#include "core/hle/service/fatal/fatal.h"
25#include "core/hle/service/filesystem/filesystem.h" 28#include "core/hle/service/filesystem/filesystem.h"
26#include "core/hle/service/friend/friend.h" 29#include "core/hle/service/friend/friend.h"
27#include "core/hle/service/hid/hid.h" 30#include "core/hle/service/hid/hid.h"
31#include "core/hle/service/ldr/ldr.h"
28#include "core/hle/service/lm/lm.h" 32#include "core/hle/service/lm/lm.h"
29#include "core/hle/service/mm/mm_u.h" 33#include "core/hle/service/mm/mm_u.h"
30#include "core/hle/service/nfp/nfp.h" 34#include "core/hle/service/nfp/nfp.h"
@@ -32,6 +36,7 @@
32#include "core/hle/service/ns/ns.h" 36#include "core/hle/service/ns/ns.h"
33#include "core/hle/service/nvdrv/nvdrv.h" 37#include "core/hle/service/nvdrv/nvdrv.h"
34#include "core/hle/service/pctl/pctl.h" 38#include "core/hle/service/pctl/pctl.h"
39#include "core/hle/service/pm/pm.h"
35#include "core/hle/service/prepo/prepo.h" 40#include "core/hle/service/prepo/prepo.h"
36#include "core/hle/service/service.h" 41#include "core/hle/service/service.h"
37#include "core/hle/service/set/settings.h" 42#include "core/hle/service/set/settings.h"
@@ -187,10 +192,14 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) {
187 APM::InstallInterfaces(*sm); 192 APM::InstallInterfaces(*sm);
188 BCAT::InstallInterfaces(*sm); 193 BCAT::InstallInterfaces(*sm);
189 Audio::InstallInterfaces(*sm); 194 Audio::InstallInterfaces(*sm);
195 ERPT::InstallInterfaces(*sm);
196 ES::InstallInterfaces(*sm);
197 EUPLD::InstallInterfaces(*sm);
190 Fatal::InstallInterfaces(*sm); 198 Fatal::InstallInterfaces(*sm);
191 FileSystem::InstallInterfaces(*sm); 199 FileSystem::InstallInterfaces(*sm);
192 Friend::InstallInterfaces(*sm); 200 Friend::InstallInterfaces(*sm);
193 HID::InstallInterfaces(*sm); 201 HID::InstallInterfaces(*sm);
202 LDR::InstallInterfaces(*sm);
194 LM::InstallInterfaces(*sm); 203 LM::InstallInterfaces(*sm);
195 MM::InstallInterfaces(*sm); 204 MM::InstallInterfaces(*sm);
196 NFP::InstallInterfaces(*sm); 205 NFP::InstallInterfaces(*sm);
@@ -199,6 +208,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm) {
199 Nvidia::InstallInterfaces(*sm); 208 Nvidia::InstallInterfaces(*sm);
200 PCTL::InstallInterfaces(*sm); 209 PCTL::InstallInterfaces(*sm);
201 PlayReport::InstallInterfaces(*sm); 210 PlayReport::InstallInterfaces(*sm);
211 PM::InstallInterfaces(*sm);
202 Sockets::InstallInterfaces(*sm); 212 Sockets::InstallInterfaces(*sm);
203 SPL::InstallInterfaces(*sm); 213 SPL::InstallInterfaces(*sm);
204 SSL::InstallInterfaces(*sm); 214 SSL::InstallInterfaces(*sm);
diff --git a/src/yuzu/debugger/wait_tree.cpp b/src/yuzu/debugger/wait_tree.cpp
index 416cc1dfa..2b45b8573 100644
--- a/src/yuzu/debugger/wait_tree.cpp
+++ b/src/yuzu/debugger/wait_tree.cpp
@@ -209,6 +209,9 @@ QString WaitTreeThread::GetText() const {
209 case ThreadStatus::WaitSleep: 209 case ThreadStatus::WaitSleep:
210 status = tr("sleeping"); 210 status = tr("sleeping");
211 break; 211 break;
212 case ThreadStatus::WaitIPC:
213 status = tr("waiting for IPC reply");
214 break;
212 case ThreadStatus::WaitSynchAll: 215 case ThreadStatus::WaitSynchAll:
213 case ThreadStatus::WaitSynchAny: 216 case ThreadStatus::WaitSynchAny:
214 status = tr("waiting for objects"); 217 status = tr("waiting for objects");
@@ -240,6 +243,7 @@ QColor WaitTreeThread::GetColor() const {
240 case ThreadStatus::Ready: 243 case ThreadStatus::Ready:
241 return QColor(Qt::GlobalColor::darkBlue); 244 return QColor(Qt::GlobalColor::darkBlue);
242 case ThreadStatus::WaitHLEEvent: 245 case ThreadStatus::WaitHLEEvent:
246 case ThreadStatus::WaitIPC:
243 return QColor(Qt::GlobalColor::darkRed); 247 return QColor(Qt::GlobalColor::darkRed);
244 case ThreadStatus::WaitSleep: 248 case ThreadStatus::WaitSleep:
245 return QColor(Qt::GlobalColor::darkYellow); 249 return QColor(Qt::GlobalColor::darkYellow);