aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Horizon.Common/ISyscallApi.cs
blob: 3d6da0416108603a7c6558585212269f2040f14c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using Ryujinx.Memory;
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);

        IExternalEvent GetExternalEvent(int handle);
        IVirtualMemoryManager GetMemoryManagerByProcessHandle(int handle);
        ulong GetTransferMemoryAddress(int handle);
    }
}