summaryrefslogtreecommitdiff
path: root/src/core/hle/service/sockets
diff options
context:
space:
mode:
authorGravatar Morph2021-09-24 08:20:32 -0400
committerGravatar Morph2021-09-24 16:46:52 -0400
commit06f22c3d284114f5df2c66260e20aaae70db3cf9 (patch)
treeb0fd83639672f157f1b3d9190f1c95aafb04f967 /src/core/hle/service/sockets
parentMerge pull request #7084 from ameerj/clang-12 (diff)
downloadyuzu-06f22c3d284114f5df2c66260e20aaae70db3cf9.tar.gz
yuzu-06f22c3d284114f5df2c66260e20aaae70db3cf9.tar.xz
yuzu-06f22c3d284114f5df2c66260e20aaae70db3cf9.zip
service: bsd: Implement Read
- Used by Diablo II: Resurrected
Diffstat (limited to 'src/core/hle/service/sockets')
-rw-r--r--src/core/hle/service/sockets/bsd.cpp15
-rw-r--r--src/core/hle/service/sockets/bsd.h1
2 files changed, 15 insertions, 1 deletions
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp
index 7d85ecb6a..95a70dfd3 100644
--- a/src/core/hle/service/sockets/bsd.cpp
+++ b/src/core/hle/service/sockets/bsd.cpp
@@ -415,6 +415,19 @@ void BSD::Write(Kernel::HLERequestContext& ctx) {
415 }); 415 });
416} 416}
417 417
418void BSD::Read(Kernel::HLERequestContext& ctx) {
419 IPC::RequestParser rp{ctx};
420 const s32 fd = rp.Pop<s32>();
421
422 LOG_DEBUG(Service, "called. fd={} len={}", fd, ctx.GetWriteBufferSize());
423
424 ExecuteWork(ctx, RecvWork{
425 .fd = fd,
426 .flags = 0,
427 .message = std::vector<u8>(ctx.GetWriteBufferSize()),
428 });
429}
430
418void BSD::Close(Kernel::HLERequestContext& ctx) { 431void BSD::Close(Kernel::HLERequestContext& ctx) {
419 IPC::RequestParser rp{ctx}; 432 IPC::RequestParser rp{ctx};
420 const s32 fd = rp.Pop<s32>(); 433 const s32 fd = rp.Pop<s32>();
@@ -855,7 +868,7 @@ BSD::BSD(Core::System& system_, const char* name) : ServiceFramework{system_, na
855 {22, &BSD::Shutdown, "Shutdown"}, 868 {22, &BSD::Shutdown, "Shutdown"},
856 {23, nullptr, "ShutdownAllSockets"}, 869 {23, nullptr, "ShutdownAllSockets"},
857 {24, &BSD::Write, "Write"}, 870 {24, &BSD::Write, "Write"},
858 {25, nullptr, "Read"}, 871 {25, &BSD::Read, "Read"},
859 {26, &BSD::Close, "Close"}, 872 {26, &BSD::Close, "Close"},
860 {27, nullptr, "DuplicateSocket"}, 873 {27, nullptr, "DuplicateSocket"},
861 {28, nullptr, "GetResourceStatistics"}, 874 {28, nullptr, "GetResourceStatistics"},
diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h
index 1d2df9c61..d68beef5c 100644
--- a/src/core/hle/service/sockets/bsd.h
+++ b/src/core/hle/service/sockets/bsd.h
@@ -135,6 +135,7 @@ private:
135 void Send(Kernel::HLERequestContext& ctx); 135 void Send(Kernel::HLERequestContext& ctx);
136 void SendTo(Kernel::HLERequestContext& ctx); 136 void SendTo(Kernel::HLERequestContext& ctx);
137 void Write(Kernel::HLERequestContext& ctx); 137 void Write(Kernel::HLERequestContext& ctx);
138 void Read(Kernel::HLERequestContext& ctx);
138 void Close(Kernel::HLERequestContext& ctx); 139 void Close(Kernel::HLERequestContext& ctx);
139 void EventFd(Kernel::HLERequestContext& ctx); 140 void EventFd(Kernel::HLERequestContext& ctx);
140 141