diff options
| author | Ac_K <Acoustik666@gmail.com> | 2023-01-08 13:13:39 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-01-08 12:13:39 +0000 |
| commit | 550747eac6c0f6da14070c8b6d208bde6f1d1eb9 (patch) | |
| tree | 1be203777156dae17a4221589c852c638b273d94 /Ryujinx.Horizon/Sdk/Sm | |
| parent | 3ffceab1fb220c13f5982de599d788f2e3e7cc47 (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.cs | 8 | ||||
| -rw-r--r-- | Ryujinx.Horizon/Sdk/Sm/IUserService.cs | 13 | ||||
| -rw-r--r-- | Ryujinx.Horizon/Sdk/Sm/SmApi.cs | 22 |
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 |
