Difference between revisions of "IOS/Resource request"
< IOS
Jump to navigation
Jump to search
Hallowizer (talk | contribs) m (Categorized) |
Hallowizer (talk | contribs) (close seems to have no args, added an empty struct for it) |
||
Line 36: | Line 36: | ||
u32 uid; // some sort of ID (UID/PID?) | u32 uid; // some sort of ID (UID/PID?) | ||
u16 gid; // probably gid based on the SetGid syscall | u16 gid; // probably gid based on the SetGid syscall | ||
+ | }; | ||
+ | |||
+ | struct IOSResourceCloseRequest | ||
+ | { | ||
}; | }; | ||
Line 83: | Line 87: | ||
{ | { | ||
IOSResourceOpenRequest open; | IOSResourceOpenRequest open; | ||
+ | IOSResourceCloseRequest close; | ||
IOSResourceReadWriteRequest read; | IOSResourceReadWriteRequest read; | ||
IOSResourceReadWriteRequest write; | IOSResourceReadWriteRequest write; |
Revision as of 05:06, 27 December 2021
// For IPCCommandType, IOSOpenMode and SeekMode:
// Copyright 2008 Dolphin Emulator Project
// Licensed under GPLv2+
#include <stddef.h>
typedef int32_t s32;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
enum IPCCommandType : u32
{
IPC_CMD_OPEN = 1,
IPC_CMD_CLOSE = 2,
IPC_CMD_READ = 3,
IPC_CMD_WRITE = 4,
IPC_CMD_SEEK = 5,
IPC_CMD_IOCTL = 6,
IPC_CMD_IOCTLV = 7,
IPC_REPLY = 8,
};
enum IOSOpenMode : s32
{
IOS_OPEN_READ = 1,
IOS_OPEN_WRITE = 2,
IOS_OPEN_RW = (IOS_OPEN_READ | IOS_OPEN_WRITE)
};
struct IOSResourceOpenRequest
{
const u8* path;
IOSOpenMode flags;
u32 uid; // some sort of ID (UID/PID?)
u16 gid; // probably gid based on the SetGid syscall
};
struct IOSResourceCloseRequest
{
};
struct IOSResourceReadWriteRequest
{
u8* data;
u32 length;
};
enum SeekMode : u32
{
IOS_SEEK_SET = 0,
IOS_SEEK_CUR = 1,
IOS_SEEK_END = 2,
};
struct IOSResourceSeekRequest
{
u32 offset;
SeekMode mode;
};
struct IOSResourceIOCtlRequest
{
u32 request;
u8* in;
u32 in_size;
u8* out;
u32 out_size;
};
struct IOVector
{
u8* base;
u32 length;
};
struct IOSResourceIOCtlVRequest
{
u32 request;
u32 in_count;
u32 io_count;
IOVector* vectors;
};
union IOSResourceArgs
{
IOSResourceOpenRequest open;
IOSResourceCloseRequest close;
IOSResourceReadWriteRequest read;
IOSResourceReadWriteRequest write;
IOSResourceSeekRequest seek;
IOSResourceIOCtlRequest ioctl;
IOSResourceIOCtlVRequest ioctlv;
};
struct IOSRequest
{
IPCCommandType cmd;
s32 ret;
u32 fd;
IOSResourceArgs args;
};