Start to implement/stub BSD:U and SFDNSRES services (#78)
* bsd: start stubbing bsd:u and sfdnsres * bsd: stubbed RegisterClient * bsd: attempt to get past socket() * bsd: fix some wrong assumptions about IPC * bsd: fix format specifiers * bsd: stubbed Connect() * bsd: stubbed SendTo() * made requested changes * sockets: respect alphabetical order at service installation * run clang-format * bsd: start stubbing bsd:u and sfdnsres * bsd: stubbed RegisterClient * bsd: attempt to get past socket() * bsd: fix some wrong assumptions about IPC * bsd: fix format specifiers * bsd: stubbed Connect() * bsd: stubbed SendTo() * made requested changes * sockets: respect alphabetical order at service installation * run clang-format * run clang-format (2)
This commit is contained in:
		
							parent
							
								
									2ff1cebfbe
								
							
						
					
					
						commit
						463356f0a7
					
				| @ -128,6 +128,11 @@ add_library(core STATIC | ||||
|     hle/service/sm/controller.h | ||||
|     hle/service/sm/sm.cpp | ||||
|     hle/service/sm/sm.h | ||||
|     hle/service/sockets/bsd_u.cpp | ||||
|     hle/service/sockets/bsd_u.h | ||||
|     hle/service/sockets/sfdnsres.h | ||||
|     hle/service/sockets/sockets.cpp | ||||
|     hle/service/sockets/sockets.h | ||||
|     hle/service/time/time.cpp | ||||
|     hle/service/time/time.h | ||||
|     hle/service/vi/vi.cpp | ||||
|  | ||||
| @ -26,6 +26,7 @@ | ||||
| #include "core/hle/service/service.h" | ||||
| #include "core/hle/service/sm/controller.h" | ||||
| #include "core/hle/service/sm/sm.h" | ||||
| #include "core/hle/service/sockets/sockets.h" | ||||
| #include "core/hle/service/time/time.h" | ||||
| #include "core/hle/service/vi/vi.h" | ||||
| 
 | ||||
| @ -174,6 +175,7 @@ void Init() { | ||||
|     LM::InstallInterfaces(*SM::g_service_manager); | ||||
|     Nvidia::InstallInterfaces(*SM::g_service_manager); | ||||
|     PCTL::InstallInterfaces(*SM::g_service_manager); | ||||
|     Sockets::InstallInterfaces(*SM::g_service_manager); | ||||
|     Time::InstallInterfaces(*SM::g_service_manager); | ||||
|     VI::InstallInterfaces(*SM::g_service_manager); | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										67
									
								
								src/core/hle/service/sockets/bsd_u.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								src/core/hle/service/sockets/bsd_u.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,67 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/ipc_helpers.h" | ||||
| #include "core/hle/service/sockets/bsd_u.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace Sockets { | ||||
| 
 | ||||
| void BSD_U::RegisterClient(Kernel::HLERequestContext& ctx) { | ||||
|     LOG_WARNING(Service, "(STUBBED) called"); | ||||
| 
 | ||||
|     IPC::RequestBuilder rb{ctx, 3}; | ||||
| 
 | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push<u32>(0); // bsd errno
 | ||||
| } | ||||
| 
 | ||||
| void BSD_U::Socket(Kernel::HLERequestContext& ctx) { | ||||
|     IPC::RequestParser rp{ctx}; | ||||
| 
 | ||||
|     u32 domain = rp.Pop<u32>(); | ||||
|     u32 type = rp.Pop<u32>(); | ||||
|     u32 protocol = rp.Pop<u32>(); | ||||
| 
 | ||||
|     LOG_WARNING(Service, "(STUBBED) called domain=%u type=%u protocol=%u", domain, type, protocol); | ||||
| 
 | ||||
|     u32 fd = next_fd++; | ||||
| 
 | ||||
|     IPC::RequestBuilder rb{ctx, 4}; | ||||
| 
 | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push<u32>(fd); | ||||
|     rb.Push<u32>(0); // bsd errno
 | ||||
| } | ||||
| 
 | ||||
| void BSD_U::Connect(Kernel::HLERequestContext& ctx) { | ||||
|     LOG_WARNING(Service, "(STUBBED) called"); | ||||
| 
 | ||||
|     IPC::RequestBuilder rb{ctx, 4}; | ||||
| 
 | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push<u32>(0); // ret
 | ||||
|     rb.Push<u32>(0); // bsd errno
 | ||||
| } | ||||
| 
 | ||||
| void BSD_U::SendTo(Kernel::HLERequestContext& ctx) { | ||||
|     LOG_WARNING(Service, "(STUBBED) called"); | ||||
| 
 | ||||
|     IPC::RequestBuilder rb{ctx, 4}; | ||||
| 
 | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push<u32>(0); // ret
 | ||||
|     rb.Push<u32>(0); // bsd errno
 | ||||
| } | ||||
| 
 | ||||
| BSD_U::BSD_U() : ServiceFramework("bsd:u") { | ||||
|     static const FunctionInfo functions[] = {{0, &BSD_U::RegisterClient, "RegisterClient"}, | ||||
|                                              {2, &BSD_U::Socket, "Socket"}, | ||||
|                                              {11, &BSD_U::SendTo, "SendTo"}, | ||||
|                                              {14, &BSD_U::Connect, "Connect"}}; | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| } // namespace Sockets
 | ||||
| } // namespace Service
 | ||||
							
								
								
									
										29
									
								
								src/core/hle/service/sockets/bsd_u.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/core/hle/service/sockets/bsd_u.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/kernel/hle_ipc.h" | ||||
| #include "core/hle/service/service.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace Sockets { | ||||
| 
 | ||||
| class BSD_U final : public ServiceFramework<BSD_U> { | ||||
| public: | ||||
|     BSD_U(); | ||||
|     ~BSD_U() = default; | ||||
| 
 | ||||
| private: | ||||
|     void RegisterClient(Kernel::HLERequestContext& ctx); | ||||
|     void Socket(Kernel::HLERequestContext& ctx); | ||||
|     void Connect(Kernel::HLERequestContext& ctx); | ||||
|     void SendTo(Kernel::HLERequestContext& ctx); | ||||
| 
 | ||||
|     /// Id to use for the next open file descriptor.
 | ||||
|     u32 next_fd = 1; | ||||
| }; | ||||
| 
 | ||||
| } // namespace Sockets
 | ||||
| } // namespace Service
 | ||||
							
								
								
									
										22
									
								
								src/core/hle/service/sockets/sfdnsres.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/core/hle/service/sockets/sfdnsres.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,22 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/kernel/hle_ipc.h" | ||||
| #include "core/hle/service/service.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace Sockets { | ||||
| 
 | ||||
| class SFDNSRES final : public ServiceFramework<SFDNSRES> { | ||||
| public: | ||||
|     SFDNSRES() : ServiceFramework("sfdnsres") {} | ||||
|     ~SFDNSRES() = default; | ||||
| 
 | ||||
| private: | ||||
| }; | ||||
| 
 | ||||
| } // namespace Sockets
 | ||||
| } // namespace Service
 | ||||
							
								
								
									
										18
									
								
								src/core/hle/service/sockets/sockets.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/core/hle/service/sockets/sockets.cpp
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/service/sockets/bsd_u.h" | ||||
| #include "core/hle/service/sockets/sfdnsres.h" | ||||
| #include "core/hle/service/sockets/sockets.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace Sockets { | ||||
| 
 | ||||
| void InstallInterfaces(SM::ServiceManager& service_manager) { | ||||
|     std::make_shared<BSD_U>()->InstallAsService(service_manager); | ||||
|     std::make_shared<SFDNSRES>()->InstallAsService(service_manager); | ||||
| } | ||||
| 
 | ||||
| } // namespace Sockets
 | ||||
| } // namespace Service
 | ||||
							
								
								
									
										16
									
								
								src/core/hle/service/sockets/sockets.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/core/hle/service/sockets/sockets.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,16 @@ | ||||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/service.h" | ||||
| 
 | ||||
| namespace Service { | ||||
| namespace Sockets { | ||||
| 
 | ||||
| /// Registers all Sockets services with the specified service manager.
 | ||||
| void InstallInterfaces(SM::ServiceManager& service_manager); | ||||
| 
 | ||||
| } // namespace Sockets
 | ||||
| } // namespace Service
 | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 flerovium^-^
						flerovium^-^