aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Horizon/Sdk/Sm
diff options
context:
space:
mode:
authorAc_K <Acoustik666@gmail.com>2023-01-08 13:13:39 +0100
committerGitHub <noreply@github.com>2023-01-08 12:13:39 +0000
commit550747eac6c0f6da14070c8b6d208bde6f1d1eb9 (patch)
tree1be203777156dae17a4221589c852c638b273d94 /Ryujinx.Horizon/Sdk/Sm
parent3ffceab1fb220c13f5982de599d788f2e3e7cc47 (diff)
Horizon: Impl Prepo, Fixes bugs, Clean things (#4220)
* Horizon: Impl Prepo, Fixes bugs, Clean things * remove ToArray() * resultCode > status * Remove old services * Addresses gdkchan's comments and more cleanup * Addresses Gdkchan's feedback 2 * Reorganize services, make sure service are loaded before guest Co-Authored-By: gdkchan <5624669+gdkchan@users.noreply.github.com> * Create interfaces for lm and sm Co-authored-by: gdkchan <5624669+gdkchan@users.noreply.github.com>
Diffstat (limited to 'Ryujinx.Horizon/Sdk/Sm')
-rw-r--r--Ryujinx.Horizon/Sdk/Sm/IManagerService.cs8
-rw-r--r--Ryujinx.Horizon/Sdk/Sm/IUserService.cs13
-rw-r--r--Ryujinx.Horizon/Sdk/Sm/SmApi.cs22
3 files changed, 35 insertions, 8 deletions
diff --git a/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs b/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs
new file mode 100644
index 00000000..64428583
--- /dev/null
+++ b/Ryujinx.Horizon/Sdk/Sm/IManagerService.cs
@@ -0,0 +1,8 @@
+using Ryujinx.Horizon.Sdk.Sf;
+
+namespace Ryujinx.Horizon.Sdk.Sm
+{
+ interface IManagerService : IServiceObject
+ {
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.Horizon/Sdk/Sm/IUserService.cs b/Ryujinx.Horizon/Sdk/Sm/IUserService.cs
new file mode 100644
index 00000000..ad9bc9d7
--- /dev/null
+++ b/Ryujinx.Horizon/Sdk/Sm/IUserService.cs
@@ -0,0 +1,13 @@
+using Ryujinx.Horizon.Common;
+using Ryujinx.Horizon.Sdk.Sf;
+
+namespace Ryujinx.Horizon.Sdk.Sm
+{
+ interface IUserService : IServiceObject
+ {
+ Result Initialize(ulong clientProcessId);
+ Result GetService(out int handle, ServiceName name);
+ Result RegisterService(out int handle, ServiceName name, int maxSessions, bool isLight);
+ Result UnregisterService(ServiceName name);
+ }
+} \ No newline at end of file
diff --git a/Ryujinx.Horizon/Sdk/Sm/SmApi.cs b/Ryujinx.Horizon/Sdk/Sm/SmApi.cs
index e4b0eea1..533e68d9 100644
--- a/Ryujinx.Horizon/Sdk/Sm/SmApi.cs
+++ b/Ryujinx.Horizon/Sdk/Sm/SmApi.cs
@@ -7,16 +7,18 @@ namespace Ryujinx.Horizon.Sdk.Sm
{
class SmApi
{
+ private const string SmName = "sm:";
+
private int _portHandle;
public Result Initialize()
{
- Result result = HorizonStatic.Syscall.ConnectToNamedPort(out int portHandle, "sm:");
+ Result result = HorizonStatic.Syscall.ConnectToNamedPort(out int portHandle, SmName);
while (result == KernelResult.NotFound)
{
HorizonStatic.Syscall.SleepThread(50000000L);
- result = HorizonStatic.Syscall.ConnectToNamedPort(out portHandle, "sm:");
+ result = HorizonStatic.Syscall.ConnectToNamedPort(out portHandle, SmName);
}
if (result.IsFailure)
@@ -33,7 +35,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
{
Span<byte> data = stackalloc byte[8];
- SpanWriter writer = new SpanWriter(data);
+ SpanWriter writer = new(data);
writer.Write(0UL);
@@ -44,7 +46,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
{
Span<byte> data = stackalloc byte[8];
- SpanWriter writer = new SpanWriter(data);
+ SpanWriter writer = new(data);
writer.Write(name);
@@ -53,10 +55,12 @@ namespace Ryujinx.Horizon.Sdk.Sm
if (result.IsFailure)
{
handle = 0;
+
return result;
}
handle = response.MoveHandles[0];
+
return Result.Success;
}
@@ -64,7 +68,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
{
Span<byte> data = stackalloc byte[16];
- SpanWriter writer = new SpanWriter(data);
+ SpanWriter writer = new(data);
writer.Write(name);
writer.Write(isLight ? 1 : 0);
@@ -75,10 +79,12 @@ namespace Ryujinx.Horizon.Sdk.Sm
if (result.IsFailure)
{
handle = 0;
+
return result;
}
handle = response.MoveHandles[0];
+
return Result.Success;
}
@@ -86,7 +92,7 @@ namespace Ryujinx.Horizon.Sdk.Sm
{
Span<byte> data = stackalloc byte[8];
- SpanWriter writer = new SpanWriter(data);
+ SpanWriter writer = new(data);
writer.Write(name);
@@ -97,11 +103,11 @@ namespace Ryujinx.Horizon.Sdk.Sm
{
Span<byte> data = stackalloc byte[8];
- SpanWriter writer = new SpanWriter(data);
+ SpanWriter writer = new(data);
writer.Write(0UL);
return ServiceUtil.SendRequest(out _, _portHandle, 4, sendPid: true, data);
}
}
-}
+} \ No newline at end of file