From 5b9c5009887713bdb011f3da77577e86179341bd Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sun, 29 Aug 2021 11:05:00 -0400 Subject: Update structs and prototypes in sysmem SceKernelPAVector field names comes from 0.990 prototype update_mgr.elf and update_service_sm.elf. --- include/kernel/kernel/sysmem.h | 15 +++++++------ include/kernel/kernel/sysmem/memblock.h | 40 ++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 25 deletions(-) diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 3d5b5e4..c0f28dd 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -32,7 +32,7 @@ typedef struct SceKernelHeapCreateOpt { SceUInt32 field_18; } SceKernelHeapCreateOpt; -typedef struct SceCreateUidObjOpt { +typedef struct SceGUIDKernelCreateOpt { SceUInt32 flags; SceUInt32 field_4; SceUInt32 field_8; @@ -40,7 +40,8 @@ typedef struct SceCreateUidObjOpt { SceUInt32 field_10; SceUInt32 field_14; SceUInt32 field_18; -} SceCreateUidObjOpt; + SceUInt32 field_1C; +} SceGUIDKernelCreateOpt; typedef enum SceKernelModel { SCE_KERNEL_MODEL_VITA = 0x10000, @@ -89,9 +90,9 @@ int sceKernelStrncpyFromUser(void *dst, uintptr_t src, SceSize len); int sceKernelStrncpyToUser(uintptr_t dst, const void *src, SceSize len); int sceKernelStrncpyFromUserProc(SceUID pid, void *dst, uintptr_t src, SceSize len); -SceUID scePUIDtoGUID(SceUID pid, SceUID user_uid); -SceUID scePUIDOpenByGUID(SceUID pid, SceUID kern_uid); -SceUID sceGUIDKernelCreateWithOpt(SceClass *cls, const char *name, SceCreateUidObjOpt *opt, SceObjectBase **obj); +SceUID scePUIDtoGUID(SceUID pid, SceUID puid); +SceUID scePUIDOpenByGUID(SceUID pid, SceUID guid); +SceUID sceGUIDKernelCreateWithOpt(SceClass *cls, const char *name, SceGUIDKernelCreateOpt *opt, SceObjectBase **obj); /** * Gets an object from a UID. @@ -139,8 +140,8 @@ SceClass *sceKernelGetUidHeapClass(void); SceClass *sceKernelGetUidMemBlockClass(void); int sceKernelCreateClass(SceClass *cls, const char *name, void *uidclass, SceSize itemsize, SceClassCallback create, SceClassCallback destroy); -int scePUIDClose(SceUID pid, SceUID user_uid); -int sceGUIDClose(SceUID uid); +int scePUIDClose(SceUID pid, SceUID puid); +int sceGUIDClose(SceUID guid); int sceKernelFindClassByName(const char *name, SceClass **cls); int sceKernelGetPidContext(SceUID pid, SceKernelProcessContext **ctx); diff --git a/include/kernel/kernel/sysmem/memblock.h b/include/kernel/kernel/sysmem/memblock.h index 0050e5b..1e62493 100644 --- a/include/kernel/kernel/sysmem/memblock.h +++ b/include/kernel/kernel/sysmem/memblock.h @@ -32,18 +32,22 @@ typedef enum SceKernelMemoryRefPerm { SCE_KERNEL_MEMORY_REF_PERM_KERN_X = 0x40, } SceKernelMemoryRefPerm; -typedef struct SceKernelAddrPair { - uint32_t addr; //!< Address - uint32_t length; //!< Length -} SceKernelAddrPair; - -typedef struct SceKernelPaddrList { - uint32_t size; //!< sizeof(SceKernelPaddrList) - uint32_t list_size; //!< Size in elements of the list array - uint32_t ret_length; //!< Total physical size of the memory pairs - uint32_t ret_count; //!< Number of elements of list filled by sceKernelVARangeToPAVector - SceKernelAddrPair *list; //!< Array of physical addresses and their lengths pairs -} SceKernelPaddrList; +typedef struct SceKernelAddressRange { + uint32_t addr; //!< Address + uint32_t length; //!< Length +} SceKernelAddressRange; + +typedef SceKernelAddressRange SceKernelPARange; + +typedef SceKernelAddressRange SceKernelVARange; + +typedef struct SceKernelPAVector { + SceSize size; //!< sizeof(SceKernelPAVector) + uint32_t nRanges; //!< Size in elements of the vector + uint32_t nDataInVector; //!< Total physical size of the address ranges + uint32_t nTotalSize; //!< Number of elements of list filled by sceKernelVARangeToPAVector + SceKernelPARange *pVector; //!< Vector of address ranges +} SceKernelPAVector; // specific to 3.60 typedef struct SceKernelAllocMemBlockKernelOpt { @@ -57,7 +61,7 @@ typedef struct SceKernelAllocMemBlockKernelOpt { SceUInt32 extraHigh; SceUInt32 mirror_blockid; SceUID pid; - SceKernelPaddrList *pVector; + SceKernelPAVector *pVector; SceUInt32 field_2C; SceUInt32 field_30; SceUInt32 field_34; @@ -79,7 +83,7 @@ typedef struct SceKernelAllocMemBlockKernelOpt { * * @return 0 on success, < 0 on error. */ -int sceKernelGetMemBlockType(SceUID uid, unsigned int *type); +int sceKernelGetMemBlockType(SceUID uid, SceKernelMemBlockType *type); /** * Find the SceUID of a memory block for a PID @@ -104,7 +108,7 @@ int sceKernelRemapBlock(SceUID uid, SceKernelMemBlockType type); int sceKernelMapMemBlock(SceUID uid); -int sceKernelUserMapWithFlags(const char *name, int permission, int type, +int sceKernelUserMapWithFlags(const char *name, int permission, int flags, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, unsigned int *kernel_offset); @@ -129,12 +133,12 @@ int sceKernelVAtoPA(const void *addr, uintptr_t *paddr); /** * Get the physical address list of a given virtual address range * - * @param[in] input - The virtual address range - * @param[out] list - The list of physical addresses + * @param[in] pRange - The virtual address range + * @param[out] pVector - The list of physical addresses * * @return 0 on success, < 0 on error. */ -int sceKernelVARangeToPAVector(const SceKernelAddrPair *input, SceKernelPaddrList *list); +int sceKernelVARangeToPAVector(const SceKernelVARange *pRange, SceKernelPAVector *pVector); /** * Releases a memblock referenced by the UID. -- cgit v1.2.3