mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2025-09-10 11:06:27 -05:00
Move solution and projects to src
This commit is contained in:
39
src/Ryujinx.Horizon/Sdk/ServiceUtil.cs
Normal file
39
src/Ryujinx.Horizon/Sdk/ServiceUtil.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using Ryujinx.Horizon.Common;
|
||||
using Ryujinx.Horizon.Sdk.Sf.Cmif;
|
||||
using Ryujinx.Horizon.Sdk.Sf.Hipc;
|
||||
using System;
|
||||
|
||||
namespace Ryujinx.Horizon.Sdk
|
||||
{
|
||||
static class ServiceUtil
|
||||
{
|
||||
public static Result SendRequest(out CmifResponse response, int sessionHandle, uint requestId, bool sendPid, scoped ReadOnlySpan<byte> data)
|
||||
{
|
||||
ulong tlsAddress = HorizonStatic.ThreadContext.TlsAddress;
|
||||
int tlsSize = Api.TlsMessageBufferSize;
|
||||
|
||||
using (var tlsRegion = HorizonStatic.AddressSpace.GetWritableRegion(tlsAddress, tlsSize))
|
||||
{
|
||||
CmifRequest request = CmifMessage.CreateRequest(tlsRegion.Memory.Span, new CmifRequestFormat()
|
||||
{
|
||||
DataSize = data.Length,
|
||||
RequestId = requestId,
|
||||
SendPid = sendPid
|
||||
});
|
||||
|
||||
data.CopyTo(request.Data);
|
||||
}
|
||||
|
||||
Result result = HorizonStatic.Syscall.SendSyncRequest(sessionHandle);
|
||||
|
||||
if (result.IsFailure)
|
||||
{
|
||||
response = default;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
return CmifMessage.ParseResponse(out response, HorizonStatic.AddressSpace.GetWritableRegion(tlsAddress, tlsSize).Memory.Span, false, 0);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user