core/sockets: Add missing socket services and functions from switchbrew

- Add Unknown39 and Unknown40 functions to BSD service for [20.0.0+]
- Implement bsd:nu service with ISfUserService and ISfAssignedNetworkInterfaceService
- Add dns:priv and ethc:c/ethc:i service stubs
- Update CMakeLists.txt to include new socket service files
- All new functions include basic stub implementations following existing patterns

This completes the socket services implementation based on switchbrew.org documentation.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit is contained in:
Zephyron
2025-06-29 16:57:26 +10:00
parent ed6d170c3b
commit 90dc2df21a
10 changed files with 474 additions and 0 deletions

View File

@@ -1018,6 +1018,8 @@ BSD::BSD(Core::System& system_, const char* name)
{33, &BSD::RegisterClientShared, "RegisterClientShared"},
{34, &BSD::GetSocketStatistics, "GetSocketStatistics"},
{35, &BSD::NifIoctl, "NifIoctl"},
{39, &BSD::Unknown39, "[20.0.0+] Unknown39"},
{40, &BSD::Unknown40, "[20.0.0+] Unknown40"},
{200, &BSD::SetThreadCoreMask, "SetThreadCoreMask"},
{201, &BSD::GetThreadCoreMask, "GetThreadCoreMask"},
};
@@ -1297,6 +1299,22 @@ void BSD::SocketExempt(HLERequestContext& ctx) {
rb.PushEnum(static_cast<Errno>(EOPNOTSUPP));
}
void BSD::Unknown39(HLERequestContext& ctx) {
LOG_WARNING(Service, "(STUBBED) called Unknown39 [20.0.0+]");
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(ResultSuccess);
rb.Push<s32>(-1);
rb.PushEnum(static_cast<Errno>(EOPNOTSUPP));
}
void BSD::Unknown40(HLERequestContext& ctx) {
LOG_WARNING(Service, "(STUBBED) called Unknown40 [20.0.0+]");
IPC::ResponseBuilder rb{ctx, 4};
rb.Push(ResultSuccess);
rb.Push<s32>(-1);
rb.PushEnum(static_cast<Errno>(EOPNOTSUPP));
}
void BSD::Sysctl(HLERequestContext& ctx) {
LOG_WARNING(Service, "(STUBBED) called Sysctl");
IPC::ResponseBuilder rb{ctx, 4};