From 59bf18d4ad777171b6a9f9733d3eff6f97c71c94 Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sat, 28 Aug 2021 14:23:52 -0400 Subject: Update names in SceSysmemForDriver Names are from 0.990 prototype sysmem.elf. --- include/kernel/kernel/sysmem.h | 16 ++++++++-------- include/kernel/kernel/sysmem/memblock.h | 14 +++++++------- 2 files changed, 15 insertions(+), 15 deletions(-) (limited to 'include/kernel') diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 026ee01..267fe4b 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -81,22 +81,22 @@ void *sceKernelAllocHeapMemory(SceUID uid, SceSize size); void sceKernelFreeHeapMemory(SceUID uid, void *ptr); int sceKernelMemcpyUserToKernelForPid(SceUID pid, void *dst, uintptr_t src, SceSize len); -int sceKernelMemcpyUserToKernel(void *dst, uintptr_t src, SceSize len); -int sceKernelMemcpyKernelToUser(uintptr_t dst, const void *src, SceSize len); +int sceKernelCopyFromUser(void *dst, uintptr_t src, SceSize len); +int sceKernelCopyToUser(uintptr_t dst, const void *src, SceSize len); int sceKernelRxMemcpyKernelToUserForPid(SceUID pid, uintptr_t dst, const void *src, SceSize len); int sceKernelStrncpyUserToKernel(void *dst, uintptr_t src, SceSize len); int sceKernelStrncpyKernelToUser(uintptr_t dst, const void *src, SceSize len); int sceKernelStrncpyUserForPid(SceUID pid, void *dst, uintptr_t src, SceSize len); -SceUID sceKernelKernelUidForUserUid(SceUID pid, SceUID user_uid); -SceUID sceKernelCreateUserUid(SceUID pid, SceUID kern_uid); +SceUID scePUIDtoGUID(SceUID pid, SceUID user_uid); +SceUID scePUIDOpenByGUID(SceUID pid, SceUID kern_uid); SceUID sceKernelCreateUidObj(SceClass *cls, const char *name, SceCreateUidObjOpt *opt, SceObjectBase **obj); /** * Gets an object from a UID. * - * This retains the object internally! You must call `sceKernelUidRelease` + * This retains the object internally! You must call `sceGUIDReleaseObject` * after you are done using it. * * @param[in] uid The uid @@ -105,7 +105,7 @@ SceUID sceKernelCreateUidObj(SceClass *cls, const char *name, SceCreateUidObjOpt * * @return 0 on success, < 0 on error. */ -int sceKernelGetObjForUid(SceUID uid, SceClass *cls, SceObjectBase **obj); +int sceGUIDReferObjectWithClass(SceUID uid, SceClass *cls, SceObjectBase **obj); /** * Retains an object referenced by the UID. @@ -127,7 +127,7 @@ int sceKernelUidRetain(SceUID uid); * * @return 0 on success, < 0 on error. */ -int sceKernelUidRelease(SceUID uid); +int sceGUIDReleaseObject(SceUID uid); SceClass *sceKernelGetUidClass(void); SceClass *sceKernelGetUidDLinkClass(void); @@ -136,7 +136,7 @@ SceClass *sceKernelGetUidMemBlockClass(void); int sceKernelCreateClass(SceClass *cls, const char *name, void *uidclass, SceSize itemsize, SceClassCallback create, SceClassCallback destroy); int sceKernelDeleteUserUid(SceUID pid, SceUID user_uid); -int sceKernelDeleteUid(SceUID uid); +int sceGUIDClose(SceUID uid); 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 d12e19d..eb9fa5b 100644 --- a/include/kernel/kernel/sysmem/memblock.h +++ b/include/kernel/kernel/sysmem/memblock.h @@ -41,7 +41,7 @@ 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 sceKernelGetPaddrList + uint32_t ret_count; //!< Number of elements of list filled by sceKernelVARangeToPAVector SceKernelAddrPair *list; //!< Array of physical addresses and their lengths pairs } SceKernelPaddrList; @@ -90,7 +90,7 @@ int sceKernelGetMemBlockType(SceUID uid, unsigned int *type); * * @return SceUID of the memory block on success, < 0 on error. */ -SceUID sceKernelFindMemBlockByAddrForPid(SceUID pid, const void *addr, SceSize size); +SceUID sceKernelFindProcMemBlockByAddr(SceUID pid, const void *addr, SceSize size); /** * Changes the block type @@ -102,13 +102,13 @@ SceUID sceKernelFindMemBlockByAddrForPid(SceUID pid, const void *addr, SceSize s */ int sceKernelRemapBlock(SceUID uid, SceKernelMemBlockType type); -int sceKernelMapBlockUserVisible(SceUID uid); +int sceKernelMapMemBlock(SceUID uid); int sceKernelMapUserBlock(const char *name, int permission, int type, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, unsigned int *kernel_offset); -int sceKernelMapUserBlockDefaultType(const char *name, int permission, const void *user_buf, +int sceKernelUserMap(const char *name, int permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, unsigned int *kernel_offset); @@ -124,7 +124,7 @@ int sceKernelMapUserBlockDefaultTypeForPid(int pid, const char *name, int permis * * @return 0 on success, < 0 on error. */ -int sceKernelGetPaddr(const void *addr, uintptr_t *paddr); +int sceKernelVAtoPA(const void *addr, uintptr_t *paddr); /** * Get the physical address list of a given virtual address range @@ -134,7 +134,7 @@ int sceKernelGetPaddr(const void *addr, uintptr_t *paddr); * * @return 0 on success, < 0 on error. */ -int sceKernelGetPaddrList(const SceKernelAddrPair *input, SceKernelPaddrList *list); +int sceKernelVARangeToPAVector(const SceKernelAddrPair *input, SceKernelPaddrList *list); /** * Releases a memblock referenced by the UID. @@ -145,7 +145,7 @@ int sceKernelGetPaddrList(const SceKernelAddrPair *input, SceKernelPaddrList *li * * @return 0 on success, < 0 on error. */ -int sceKernelMemBlockRelease(SceUID uid); +int sceKernelUserUnmap(SceUID uid); /** * Retains a memory range -- cgit v1.2.3 From dc24d731211e3a658547b4a1e926d490b90bbca3 Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sat, 28 Aug 2021 15:11:22 -0400 Subject: Update names in SceSysmemForDriver/Kernel From 0.990 prototype deci4p_dbgp.elf. --- include/kernel/kernel/sysmem.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'include/kernel') diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 267fe4b..5c30c2e 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -80,10 +80,10 @@ int sceKernelDeleteHeap(SceUID uid); void *sceKernelAllocHeapMemory(SceUID uid, SceSize size); void sceKernelFreeHeapMemory(SceUID uid, void *ptr); -int sceKernelMemcpyUserToKernelForPid(SceUID pid, void *dst, uintptr_t src, SceSize len); +int sceKernelCopyFromUserProc(SceUID pid, void *dst, uintptr_t src, SceSize len); int sceKernelCopyFromUser(void *dst, uintptr_t src, SceSize len); int sceKernelCopyToUser(uintptr_t dst, const void *src, SceSize len); -int sceKernelRxMemcpyKernelToUserForPid(SceUID pid, uintptr_t dst, const void *src, SceSize len); +int sceKernelCopyToUserProcTextDomain(SceUID pid, uintptr_t dst, const void *src, SceSize len); int sceKernelStrncpyUserToKernel(void *dst, uintptr_t src, SceSize len); int sceKernelStrncpyKernelToUser(uintptr_t dst, const void *src, SceSize len); -- cgit v1.2.3 From 3060c5527207b2795744fb5d1d49804c154e38df Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sat, 28 Aug 2021 15:34:49 -0400 Subject: Update names in SceSysmemForDriver Names from 0.990 prototype threadmgr.elf. --- include/kernel/kernel/sysmem.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include/kernel') diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 5c30c2e..6563ca8 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -135,7 +135,7 @@ SceClass *sceKernelGetUidHeapClass(void); SceClass *sceKernelGetUidMemBlockClass(void); int sceKernelCreateClass(SceClass *cls, const char *name, void *uidclass, SceSize itemsize, SceClassCallback create, SceClassCallback destroy); -int sceKernelDeleteUserUid(SceUID pid, SceUID user_uid); +int scePUIDClose(SceUID pid, SceUID user_uid); int sceGUIDClose(SceUID uid); int sceKernelFindClassByName(const char *name, SceClass **cls); -- cgit v1.2.3 From ba654ea54ba8ae4cc5aca3e195eeb1e12fe7b440 Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sat, 28 Aug 2021 19:32:45 -0400 Subject: Update names in SceSysmemForDriver These names are inferred from canon names found in debug strings. --- include/kernel/kernel/sysmem.h | 10 +++++----- include/kernel/kernel/sysmem/memblock.h | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) (limited to 'include/kernel') diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 6563ca8..bfd68c7 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -85,13 +85,13 @@ int sceKernelCopyFromUser(void *dst, uintptr_t src, SceSize len); int sceKernelCopyToUser(uintptr_t dst, const void *src, SceSize len); int sceKernelCopyToUserProcTextDomain(SceUID pid, uintptr_t dst, const void *src, SceSize len); -int sceKernelStrncpyUserToKernel(void *dst, uintptr_t src, SceSize len); -int sceKernelStrncpyKernelToUser(uintptr_t dst, const void *src, SceSize len); -int sceKernelStrncpyUserForPid(SceUID pid, void *dst, uintptr_t src, SceSize len); +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 sceKernelCreateUidObj(SceClass *cls, const char *name, SceCreateUidObjOpt *opt, SceObjectBase **obj); +SceUID sceGUIDKernelCreateWithOpt(SceClass *cls, const char *name, SceCreateUidObjOpt *opt, SceObjectBase **obj); /** * Gets an object from a UID. @@ -116,7 +116,7 @@ int sceGUIDReferObjectWithClass(SceUID uid, SceClass *cls, SceObjectBase **obj); * * @return 0 on success, < 0 on error. */ -int sceKernelUidRetain(SceUID uid); +int sceGUIDReferObject(SceUID uid); /** * Releases an object referenced by the UID. diff --git a/include/kernel/kernel/sysmem/memblock.h b/include/kernel/kernel/sysmem/memblock.h index eb9fa5b..0050e5b 100644 --- a/include/kernel/kernel/sysmem/memblock.h +++ b/include/kernel/kernel/sysmem/memblock.h @@ -104,7 +104,7 @@ int sceKernelRemapBlock(SceUID uid, SceKernelMemBlockType type); int sceKernelMapMemBlock(SceUID uid); -int sceKernelMapUserBlock(const char *name, int permission, int type, +int sceKernelUserMapWithFlags(const char *name, int permission, int type, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, unsigned int *kernel_offset); @@ -112,7 +112,7 @@ int sceKernelUserMap(const char *name, int permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, unsigned int *kernel_offset); -int sceKernelMapUserBlockDefaultTypeForPid(int pid, const char *name, int permission, +int sceKernelUserMapProc(int pid, const char *name, int permission, const void *user_buf, SceSize size, void **kernel_page, SceSize *kernel_size, unsigned int *kernel_offset); -- cgit v1.2.3 From 1f226b5384b69b64e90a7c103b8840d5918a103f Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Sat, 28 Aug 2021 21:01:15 -0400 Subject: Add sceGUIDSet{,Name} Names from 0.990 prototype sysmem.elf. --- include/kernel/kernel/sysmem.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/kernel') diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index bfd68c7..3d5b5e4 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -129,6 +129,10 @@ int sceGUIDReferObject(SceUID uid); */ int sceGUIDReleaseObject(SceUID uid); +int sceGUIDSet(SceUID guid, SceClass *pClass, const char *name, SceObjectBase *pObject); + +int sceGUIDSetName(SceUID guid, const char *name); + SceClass *sceKernelGetUidClass(void); SceClass *sceKernelGetUidDLinkClass(void); SceClass *sceKernelGetUidHeapClass(void); -- cgit v1.2.3 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(-) (limited to 'include/kernel') 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