mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
typedef struct {
|
|
size_t NumSend; // A
|
|
size_t NumRecv; // B
|
|
size_t NumStaticSend; // X
|
|
size_t NumStaticRecv; // C
|
|
void* Buffers[8];
|
|
size_t Sizes[8];
|
|
u8 Flags[8];
|
|
|
|
bool SendPid;
|
|
size_t NumHandles;
|
|
Handle Handles[8];
|
|
} IpcCommand;
|
|
|
|
static inline void ipcInitialize(IpcCommand* cmd) {
|
|
cmd->NumSend = 0;
|
|
cmd->NumRecv = 0;
|
|
cmd->NumStaticSend = 0;
|
|
cmd->NumStaticRecv = 0;
|
|
|
|
cmd->SendPid = false;
|
|
cmd->NumHandles = 0;
|
|
}
|
|
|
|
static inline void ipcAddSendBuffer(IpcCommand* cmd, void* buffer, size_t size, u8 Flags) {
|
|
size_t off = cmd->NumSend;
|
|
cmd->Buffers[off] = buffer;
|
|
cmd->Sizes[off] = size;
|
|
cmd->Flags[off] = flags;
|
|
cmd->NumSend++;
|
|
}
|
|
|
|
static inline void ipcAddRecvBuffer(IpcCommand* cmd, void* buffer, size_t size, u8 Flags) {
|
|
size_t off = cmd->NumSend + cmd->NumRecv;
|
|
cmd->Buffers[off] = buffer;
|
|
cmd->Sizes[off] = size;
|
|
cmd->Flags[off] = flags;
|
|
cmd->NumRecv++;
|
|
}
|
|
|
|
static inline void ipcSendPid(IpcCommand* cmd) {
|
|
cmd->SendPid = true;
|
|
}
|