Difference between revisions of "IOS/Resource request"
< IOS
Jump to navigation
Jump to search
Hallowizer (talk | contribs) (9 is used by IOSP to handle incoming messages that haven't been processed) |
(ios actually uses a lot more of the data then we thought) |
||
Line 103: | Line 103: | ||
IOSResourceArgs args; | IOSResourceArgs args; | ||
}; | }; | ||
+ | |||
+ | |||
+ | struct IOSMessage | ||
+ | { | ||
+ | IOSRequest request; | ||
+ | void *callback; | ||
+ | u32 caller_data; | ||
+ | u32 relaunch; | ||
+ | }; | ||
+ | |||
</source> | </source> | ||
[[Category:IOS]] | [[Category:IOS]] |
Latest revision as of 14:49, 16 January 2023
// 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,
IPC_INTERRUPT = 9,
};
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;
};
struct IOSMessage
{
IOSRequest request;
void *callback;
u32 caller_data;
u32 relaunch;
};