IPC refactor part 3+4: New server HIPC message processor (#4188)

* IPC refactor part 3 + 4: New server HIPC message processor with source generator based serialization

* Make types match on calls to AlignUp/AlignDown

* Formatting

* Address some PR feedback

* Move BitfieldExtensions to Ryujinx.Common.Utilities and consolidate implementations

* Rename Reader/Writer to SpanReader/SpanWriter and move to Ryujinx.Common.Memory

* Implement EventType

* Address more PR feedback

* Log request processing errors since they are not normal

* Rename waitable to multiwait and add missing lock

* PR feedback

* Ac_K PR feedback
This commit is contained in:
gdkchan 2023-01-04 19:15:45 -03:00 committed by GitHub
parent c6a139a6e7
commit 08831eecf7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
213 changed files with 9762 additions and 1010 deletions

View file

@ -0,0 +1,33 @@
using System;
namespace Ryujinx.Horizon.Common
{
public interface ISyscallApi
{
Result SetHeapSize(out ulong address, ulong size);
void SleepThread(long timeout);
Result CloseHandle(int handle);
Result WaitSynchronization(out int handleIndex, ReadOnlySpan<int> handles, long timeout);
Result CancelSynchronization(int handle);
Result GetProcessId(out ulong pid, int handle);
Result ConnectToNamedPort(out int handle, string name);
Result SendSyncRequest(int handle);
Result CreateSession(out int serverSessionHandle, out int clientSessionHandle, bool isLight, string name);
Result AcceptSession(out int sessionHandle, int portHandle);
Result ReplyAndReceive(out int handleIndex, ReadOnlySpan<int> handles, int replyTargetHandle, long timeout);
Result CreateEvent(out int writableHandle, out int readableHandle);
Result SignalEvent(int handle);
Result ClearEvent(int handle);
Result ResetSignal(int handle);
Result CreatePort(out int serverPortHandle, out int clientPortHandle, int maxSessions, bool isLight, string name);
Result ManageNamedPort(out int handle, string name, int maxSessions);
Result ConnectToPort(out int clientSessionHandle, int clientPortHandle);
}
}