#pragma once #include "Common.h" using SceFiosOpCallback = s32(vm::ptr pContext, s32 op, u8 event, s32 err); using SceFiosVprintfCallback = s32(vm::cptr fmt, arm_va_args_t ap /* va_list */); using SceFiosMemcpyCallback = vm::ptr(vm::ptr dst, vm::cptr src, u32 len); enum SceFiosWhence : s32 { SCE_FIOS_SEEK_SET = 0, SCE_FIOS_SEEK_CUR = 1, SCE_FIOS_SEEK_END = 2, }; struct SceFiosBuffer { vm::lptr pPtr; le_t length; }; struct SceFiosOpAttr { le_t deadline; vm::lptr pCallback; vm::lptr pCallbackContext; //le_t priority : 8; //le_t opflags : 24; le_t params; // priority, opflags le_t userTag; vm::lptr userPtr; vm::lptr pReserved; }; struct SceFiosDirEntry { le_t fileSize; le_t statFlags; le_t nameLength; le_t fullPathLength; le_t offsetToName; le_t reserved[3]; char fullPath[1024]; }; struct SceFiosStat { le_t fileSize; le_t accessDate; le_t modificationDate; le_t creationDate; le_t statFlags; le_t reserved; le_t uid; le_t gid; le_t dev; le_t ino; le_t mode; }; struct SceFiosOpenParams { le_t openFlags; le_t reserved; SceFiosBuffer buffer; }; struct SceFiosTuple { le_t offset; le_t size; char path[1024]; }; struct SceFiosParams { //le_t initialized : 1; //le_t paramsSize : 14; //le_t pathMax : 16; le_t params; // initialized, paramsSize, pathMax le_t profiling; SceFiosBuffer opStorage; SceFiosBuffer fhStorage; SceFiosBuffer dhStorage; SceFiosBuffer chunkStorage; vm::lptr pVprintf; vm::lptr pMemcpy; le_t threadPriority[2]; le_t threadAffinity[2]; }; struct SceFiosOverlay { u8 type; u8 order; u8 reserved[10]; le_t id; char dst[292]; char src[292]; }; using SceFiosIOFilterCallback = void(); struct SceFiosPsarcDearchiverContext { le_t sizeOfContext; le_t workBufferSize; vm::lptr pWorkBuffer; le_t reserved[4]; };