summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/CMakeLists.txt5
-rw-r--r--src/core/hle/service/service.cpp2
-rw-r--r--src/core/hle/service/sockets/bsd_u.cpp67
-rw-r--r--src/core/hle/service/sockets/bsd_u.h29
-rw-r--r--src/core/hle/service/sockets/sfdnsres.h22
-rw-r--r--src/core/hle/service/sockets/sockets.cpp18
-rw-r--r--src/core/hle/service/sockets/sockets.h16
7 files changed, 159 insertions, 0 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index c05244b7e..4cdfffecb 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -128,6 +128,11 @@ add_library(core STATIC
128 hle/service/sm/controller.h 128 hle/service/sm/controller.h
129 hle/service/sm/sm.cpp 129 hle/service/sm/sm.cpp
130 hle/service/sm/sm.h 130 hle/service/sm/sm.h
131 hle/service/sockets/bsd_u.cpp
132 hle/service/sockets/bsd_u.h
133 hle/service/sockets/sfdnsres.h
134 hle/service/sockets/sockets.cpp
135 hle/service/sockets/sockets.h
131 hle/service/time/time.cpp 136 hle/service/time/time.cpp
132 hle/service/time/time.h 137 hle/service/time/time.h
133 hle/service/vi/vi.cpp 138 hle/service/vi/vi.cpp
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index fe76b381c..9a49d9e9c 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -26,6 +26,7 @@
26#include "core/hle/service/service.h" 26#include "core/hle/service/service.h"
27#include "core/hle/service/sm/controller.h" 27#include "core/hle/service/sm/controller.h"
28#include "core/hle/service/sm/sm.h" 28#include "core/hle/service/sm/sm.h"
29#include "core/hle/service/sockets/sockets.h"
29#include "core/hle/service/time/time.h" 30#include "core/hle/service/time/time.h"
30#include "core/hle/service/vi/vi.h" 31#include "core/hle/service/vi/vi.h"
31 32
@@ -174,6 +175,7 @@ void Init() {
174 LM::InstallInterfaces(*SM::g_service_manager); 175 LM::InstallInterfaces(*SM::g_service_manager);
175 Nvidia::InstallInterfaces(*SM::g_service_manager); 176 Nvidia::InstallInterfaces(*SM::g_service_manager);
176 PCTL::InstallInterfaces(*SM::g_service_manager); 177 PCTL::InstallInterfaces(*SM::g_service_manager);
178 Sockets::InstallInterfaces(*SM::g_service_manager);
177 Time::InstallInterfaces(*SM::g_service_manager); 179 Time::InstallInterfaces(*SM::g_service_manager);
178 VI::InstallInterfaces(*SM::g_service_manager); 180 VI::InstallInterfaces(*SM::g_service_manager);
179 181
diff --git a/src/core/hle/service/sockets/bsd_u.cpp b/src/core/hle/service/sockets/bsd_u.cpp
new file mode 100644
index 000000000..a819acc96
--- /dev/null
+++ b/src/core/hle/service/sockets/bsd_u.cpp
@@ -0,0 +1,67 @@
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/ipc_helpers.h"
6#include "core/hle/service/sockets/bsd_u.h"
7
8namespace Service {
9namespace Sockets {
10
11void BSD_U::RegisterClient(Kernel::HLERequestContext& ctx) {
12 LOG_WARNING(Service, "(STUBBED) called");
13
14 IPC::RequestBuilder rb{ctx, 3};
15
16 rb.Push(RESULT_SUCCESS);
17 rb.Push<u32>(0); // bsd errno
18}
19
20void BSD_U::Socket(Kernel::HLERequestContext& ctx) {
21 IPC::RequestParser rp{ctx};
22
23 u32 domain = rp.Pop<u32>();
24 u32 type = rp.Pop<u32>();
25 u32 protocol = rp.Pop<u32>();
26
27 LOG_WARNING(Service, "(STUBBED) called domain=%u type=%u protocol=%u", domain, type, protocol);
28
29 u32 fd = next_fd++;
30
31 IPC::RequestBuilder rb{ctx, 4};
32
33 rb.Push(RESULT_SUCCESS);
34 rb.Push<u32>(fd);
35 rb.Push<u32>(0); // bsd errno
36}
37
38void BSD_U::Connect(Kernel::HLERequestContext& ctx) {
39 LOG_WARNING(Service, "(STUBBED) called");
40
41 IPC::RequestBuilder rb{ctx, 4};
42
43 rb.Push(RESULT_SUCCESS);
44 rb.Push<u32>(0); // ret
45 rb.Push<u32>(0); // bsd errno
46}
47
48void BSD_U::SendTo(Kernel::HLERequestContext& ctx) {
49 LOG_WARNING(Service, "(STUBBED) called");
50
51 IPC::RequestBuilder rb{ctx, 4};
52
53 rb.Push(RESULT_SUCCESS);
54 rb.Push<u32>(0); // ret
55 rb.Push<u32>(0); // bsd errno
56}
57
58BSD_U::BSD_U() : ServiceFramework("bsd:u") {
59 static const FunctionInfo functions[] = {{0, &BSD_U::RegisterClient, "RegisterClient"},
60 {2, &BSD_U::Socket, "Socket"},
61 {11, &BSD_U::SendTo, "SendTo"},
62 {14, &BSD_U::Connect, "Connect"}};
63 RegisterHandlers(functions);
64}
65
66} // namespace Sockets
67} // namespace Service
diff --git a/src/core/hle/service/sockets/bsd_u.h b/src/core/hle/service/sockets/bsd_u.h
new file mode 100644
index 000000000..1fe96d850
--- /dev/null
+++ b/src/core/hle/service/sockets/bsd_u.h
@@ -0,0 +1,29 @@
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/kernel/hle_ipc.h"
8#include "core/hle/service/service.h"
9
10namespace Service {
11namespace Sockets {
12
13class BSD_U final : public ServiceFramework<BSD_U> {
14public:
15 BSD_U();
16 ~BSD_U() = default;
17
18private:
19 void RegisterClient(Kernel::HLERequestContext& ctx);
20 void Socket(Kernel::HLERequestContext& ctx);
21 void Connect(Kernel::HLERequestContext& ctx);
22 void SendTo(Kernel::HLERequestContext& ctx);
23
24 /// Id to use for the next open file descriptor.
25 u32 next_fd = 1;
26};
27
28} // namespace Sockets
29} // namespace Service
diff --git a/src/core/hle/service/sockets/sfdnsres.h b/src/core/hle/service/sockets/sfdnsres.h
new file mode 100644
index 000000000..32a3ac8c5
--- /dev/null
+++ b/src/core/hle/service/sockets/sfdnsres.h
@@ -0,0 +1,22 @@
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/kernel/hle_ipc.h"
8#include "core/hle/service/service.h"
9
10namespace Service {
11namespace Sockets {
12
13class SFDNSRES final : public ServiceFramework<SFDNSRES> {
14public:
15 SFDNSRES() : ServiceFramework("sfdnsres") {}
16 ~SFDNSRES() = default;
17
18private:
19};
20
21} // namespace Sockets
22} // namespace Service
diff --git a/src/core/hle/service/sockets/sockets.cpp b/src/core/hle/service/sockets/sockets.cpp
new file mode 100644
index 000000000..f1396eaa1
--- /dev/null
+++ b/src/core/hle/service/sockets/sockets.cpp
@@ -0,0 +1,18 @@
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/sockets/bsd_u.h"
6#include "core/hle/service/sockets/sfdnsres.h"
7#include "core/hle/service/sockets/sockets.h"
8
9namespace Service {
10namespace Sockets {
11
12void InstallInterfaces(SM::ServiceManager& service_manager) {
13 std::make_shared<BSD_U>()->InstallAsService(service_manager);
14 std::make_shared<SFDNSRES>()->InstallAsService(service_manager);
15}
16
17} // namespace Sockets
18} // namespace Service
diff --git a/src/core/hle/service/sockets/sockets.h b/src/core/hle/service/sockets/sockets.h
new file mode 100644
index 000000000..7e89c8d2c
--- /dev/null
+++ b/src/core/hle/service/sockets/sockets.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
7#include "core/hle/service/service.h"
8
9namespace Service {
10namespace Sockets {
11
12/// Registers all Sockets services with the specified service manager.
13void InstallInterfaces(SM::ServiceManager& service_manager);
14
15} // namespace Sockets
16} // namespace Service