diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/kernel/kernel/sysmem.h | 41 | ||||
-rw-r--r-- | include/kernel/kernel/sysmem/memblock.h | 52 |
2 files changed, 51 insertions, 42 deletions
diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 026ee01..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, @@ -80,23 +81,23 @@ 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 sceKernelMemcpyUserToKernel(void *dst, uintptr_t src, SceSize len); -int sceKernelMemcpyKernelToUser(uintptr_t dst, const void *src, SceSize len); -int sceKernelRxMemcpyKernelToUserForPid(SceUID pid, uintptr_t dst, const void *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 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 sceKernelKernelUidForUserUid(SceUID pid, SceUID user_uid); -SceUID sceKernelCreateUserUid(SceUID pid, SceUID kern_uid); -SceUID sceKernelCreateUidObj(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. * - * 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 +106,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. @@ -116,7 +117,7 @@ int sceKernelGetObjForUid(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. @@ -127,7 +128,11 @@ int sceKernelUidRetain(SceUID uid); * * @return 0 on success, < 0 on error. */ -int sceKernelUidRelease(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); @@ -135,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 sceKernelDeleteUserUid(SceUID pid, SceUID user_uid); -int sceKernelDeleteUid(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 d12e19d..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 sceKernelGetPaddrList - 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 @@ -90,7 +94,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,17 +106,17 @@ 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, +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); -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); -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); @@ -124,17 +128,17 @@ 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 * - * @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 sceKernelGetPaddrList(const SceKernelAddrPair *input, SceKernelPaddrList *list); +int sceKernelVARangeToPAVector(const SceKernelVARange *pRange, SceKernelPAVector *pVector); /** * Releases a memblock referenced by the UID. @@ -145,7 +149,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 |