summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/kernel/kernel/sysmem.h41
-rw-r--r--include/kernel/kernel/sysmem/memblock.h52
-rw-r--r--nids/360/SceSysmem.yml117
-rw-r--r--nids/365/SceSysmem.yml5
4 files changed, 113 insertions, 102 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
diff --git a/nids/360/SceSysmem.yml b/nids/360/SceSysmem.yml
index 86ae8ac..2d11b96 100644
--- a/nids/360/SceSysmem.yml
+++ b/nids/360/SceSysmem.yml
@@ -360,8 +360,21 @@ modules:
SceSysmemForDriver:
nid: 0x6F25E18A
functions:
+ sceGUIDClose: 0x047D32F2
+ sceGUIDCreate: 0x89A44858
+ sceGUIDGetClass: 0xC74B0152
+ sceGUIDGetName: 0xA78755EB
+ sceGUIDGetName2: 0xE655852F
+ sceGUIDGetObject: 0x0FC24464
+ sceGUIDKernelCreate: 0x56A13E90
+ sceGUIDOpenByName: 0xD76E7452
+ sceGUIDReferObject: 0x0F5C84B7
+ sceGUIDReferObjectWithClass: 0x00ED6C14
sceGUIDReferObjectWithClassLevel: 0x77066FD1
- sceKernelAddressSpaceVAtoPABySW: 0x65419BD3
+ sceGUIDReferObjectWithLevel: 0xF6DB54BA
+ sceGUIDReferObjectWithSubclass: 0x72A98D17
+ sceGUIDReleaseObject: 0x149885C4
+ sceGUIDSetName: 0x4CFA4100
sceKernelAllocHeapMemory: 0x7B4CB60A
sceKernelAllocHeapMemoryFromGlobalHeap: 0x7750CEA7
sceKernelAllocHeapMemoryFromGlobalHeapWithOpt: 0x0B4ED16A
@@ -369,21 +382,19 @@ modules:
sceKernelAllocHeapMemoryWithOption: 0x49D4DD9B
sceKernelAllocMemBlock: 0xC94850C9
sceKernelAllocMemBlockWithInfo: 0xD44F464D
+ sceKernelCopyFromUser: 0xBC996A7A
+ sceKernelCopyFromUserProc: 0x605275F8
+ sceKernelCopyToUser: 0x6D88EF8A
+ sceKernelCopyToUserProc: 0x6B825479
+ sceKernelCopyUser: 0x1BD44DD5
+ sceKernelCopyUserProc: 0x8E086C33
sceKernelCreateClass: 0x61317102
sceKernelCreateHeap: 0x9328E0E8
- sceKernelCreateUidObj2: 0x56A13E90
- sceKernelCreateUidObjForUid: 0x89A44858
- sceKernelCreateUserUid: 0xBF209859
- sceKernelCreateUserUidForClass: 0xCED1547B
- sceKernelCreateUserUidForName: 0x513B9DDD
- sceKernelCreateUserUidForNameWithClass: 0x8DA0BCA5
+ sceKernelDecRefCountMemBlock: 0xF50BDC0C
sceKernelDeleteHeap: 0xD6437637
- sceKernelDeleteUid: 0x047D32F2
- sceKernelDeleteUserUid: 0x84A4AF5E
sceKernelFindMemBlock: 0x9C78064C
sceKernelFindMemBlockByAddr: 0x8A1742F6
- sceKernelFindMemBlockByAddrForDefaultSize: 0xF3BBE2E1
- sceKernelFindMemBlockByAddrForPid: 0x857F1D5A
+ sceKernelFindProcMemBlockByAddr: 0x857F1D5A
sceKernelFirstDifferentBlock32User: 0xBDA6E42B
sceKernelFirstDifferentBlock64User: 0xBB3B02C2
sceKernelFirstDifferentBlock64UserForPid: 0xE83855FD
@@ -391,46 +402,23 @@ modules:
sceKernelFreeHeapMemory: 0x3EBCE343
sceKernelFreeHeapMemoryFromGlobalHeap: 0xFB817A59
sceKernelFreeMemBlock: 0x009E1C61
- sceKernelGUIDGetObject: 0x0FC24464
- sceKernelGetClassForPidForUid: 0xE9728A12
- sceKernelGetClassForUid: 0xC74B0152
sceKernelGetMemBlockBase: 0xA841EDDA
sceKernelGetMemBlockMappedBase: 0x0B1FD5C3
+ sceKernelGetMemBlockMemtypeByAddr: 0xF3BBE2E1
sceKernelGetMemBlockPARange: 0x98C15666
- sceKernelGetMemBlockPaddrListForUid: 0x19A51AC7
+ sceKernelGetMemBlockPAVector: 0x19A51AC7
sceKernelGetMemBlockVBase: 0xB81CF0A3
- sceKernelGetNameForPidByUid: 0x09896EB7
- sceKernelGetNameForUid: 0xA78755EB
- sceKernelGetNameForUid2: 0xE655852F
- sceKernelGetObjForUid: 0x00ED6C14
- sceKernelGetObjectForPidForUid: 0xFE6D7FAE
- sceKernelGetObjectForUidForAttr: 0xF6DB54BA
- sceKernelGetObjectForUidForClassTree: 0x72A98D17
- sceKernelGetPaddr: 0x8D160E65
- sceKernelGetPaddrList: 0xE68BEEBD
- sceKernelGetPaddrListForLargePage: 0x08A8A7E8
- sceKernelGetPaddrListForSmallPage: 0x16844CE6
- sceKernelGetPaddrPair: 0xAE36C775
- sceKernelGetPaddrPairForLargePage: 0x32257A24
- sceKernelGetPaddrPairForSmallPage: 0xB3575090
sceKernelGetPhysicalMemoryType: 0x0AAA4FDD
sceKernelGetPidContext: 0x2ECF7944
sceKernelGetUidClass: 0x85336A1C
+ sceKernelIncRefCountMemBlock: 0xEAF3849B
sceKernelIsAccessibleRangeProc: 0x9F6E45E3
sceKernelIsPaddrWithinSameSectionForUid: 0xF4AD89D8
- sceKernelKernelUidForUserUid: 0x45D22597
- sceKernelKernelUidForUserUidForClass: 0x184172B1
- sceKernelMapBlockUserVisible: 0x58D21746
- sceKernelMapBlockUserVisibleWithFlag: 0x04059C4B
- sceKernelMapUserBlock: 0x7D4F8B5F
- sceKernelMapUserBlockDefaultType: 0x278BC201
- sceKernelMapUserBlockDefaultTypeForPid: 0x0091D74D
- sceKernelMemBlockDecRefCounterAndReleaseUid: 0xF50BDC0C
+ sceKernelMapMemBlock: 0x58D21746
+ sceKernelMapMemBlockWithFlags: 0x04059C4B
sceKernelMemBlockGetInfoEx: 0x24A99FFF
sceKernelMemBlockGetInfoExForVisibilityLevel: 0xA73CFFEF
sceKernelMemBlockGetSomeSize: 0x78337B62
- sceKernelMemBlockIncRefCounterAndReleaseUid: 0xEAF3849B
- sceKernelMemBlockRelease: 0x00575B00
sceKernelMemBlockType2Memtype: 0x20C811FA
sceKernelMemBlockTypeGetPrivileges: 0x6A0792A3
sceKernelMemRangeRelease: 0x75C70DE0
@@ -439,41 +427,55 @@ modules:
sceKernelMemRangeRetain: 0x59A4402F
sceKernelMemRangeRetainForPid: 0x659586BF
sceKernelMemRangeRetainWithPerm: 0xBC0A1D60
- sceKernelMemcpyKernelToUser: 0x6D88EF8A
- sceKernelMemcpyKernelToUserForPid: 0x6B825479
- sceKernelMemcpyKernelToUserForPidUnchecked: 0xFED82F2D
- sceKernelMemcpyUserToKernel: 0xBC996A7A
- sceKernelMemcpyUserToKernelForPid: 0x605275F8
- sceKernelMemcpyUserToUser: 0x1BD44DD5
- sceKernelMemcpyUserToUserForPid: 0x8E086C33
- sceKernelOpenUidForName: 0xD76E7452
sceKernelProcModeVAtoPA: 0x61A67D32
sceKernelRemapBlock: 0xDFE2C8CB
- sceKernelSetNameForPidForUid: 0x12624884
- sceKernelSetObjectForUid: 0x4CFA4100
- sceKernelStrncpyKernelToUser: 0x80BD6FEB
- sceKernelStrncpyUserForPid: 0x75AAF178
- sceKernelStrncpyUserToKernel: 0xDB3EC244
- sceKernelStrnlenUser: 0xB429D419
- sceKernelStrnlenUserForPid: 0x9929EB07
+ sceKernelStrncpyFromUser: 0xDB3EC244
+ sceKernelStrncpyFromUserProc: 0x75AAF178
+ sceKernelStrncpyToUser: 0x80BD6FEB
+ sceKernelStrncpyToUserProc: 0xFED82F2D
+ sceKernelStrnlenFromUser: 0xB429D419
+ sceKernelStrnlenFromUserProc: 0x9929EB07
sceKernelSwitchPidContext: 0x2D711589
- sceKernelUidRelease: 0x149885C4
- sceKernelUidRetain: 0x0F5C84B7
sceKernelUnmapMemBlock: 0xFFCD9B60
+ sceKernelUserMap: 0x278BC201
+ sceKernelUserMapProc: 0x0091D74D
+ sceKernelUserMapWithFlags: 0x7D4F8B5F
+ sceKernelUserUnmap: 0x00575B00
+ sceKernelVARangeToPARange: 0xAE36C775
+ sceKernelVARangeToPARangeForLargePage: 0x32257A24
+ sceKernelVARangeToPARangeForSmallPage: 0xB3575090
+ sceKernelVARangeToPAVector: 0xE68BEEBD
+ sceKernelVARangeToPAVectorForLargePage: 0x08A8A7E8
+ sceKernelVARangeToPAVectorForSmallPage: 0x16844CE6
+ sceKernelVAtoPA: 0x8D160E65
+ sceKernelVAtoPABySW: 0x65419BD3
+ scePUIDClose: 0x84A4AF5E
+ scePUIDGetClass: 0xE9728A12
+ scePUIDGetName: 0x09896EB7
+ scePUIDGetObject: 0xFE6D7FAE
+ scePUIDOpenByGUID: 0xBF209859
+ scePUIDOpenByGUIDWithFlags: 0xCED1547B
+ scePUIDOpenByName: 0x513B9DDD
+ scePUIDOpenByNameWithClass: 0x8DA0BCA5
+ scePUIDSetName: 0x12624884
+ scePUIDtoGUID: 0x45D22597
+ scePUIDtoGUIDWithClass: 0x184172B1
SceSysmemForKernel:
nid: 0x63A519E5
functions:
sceGUIDGetObjectWithClass: 0x7ABFA9A7
sceGUIDGetUIDVectorByClass: 0xEC7D36EF
sceGUIDKernelCreateWithAttr: 0x53E1FFDE
+ sceGUIDKernelCreateWithOpt: 0xDF0288D7
sceGUIDOpenByGUID: 0xCF53EEE4
+ sceGUIDSet: 0xD7B323EB
sceKernelAddressSpaceFreeAllMemBlock: 0x89CE1F31
sceKernelAddressSpaceSetPhyMemPart: 0x67955EE9
sceKernelAddressSpaceUnmap: 0xCE72839E
sceKernelAddressSpaceVAtoPA: 0xF2179820
sceKernelAllocSystemCallTable: 0x5FFE4B79
+ sceKernelCopyToUserProcTextDomain: 0x30931572
sceKernelCreateAddressSpace: 0x4A3737F0
- sceKernelCreateUidObj: 0xDF0288D7
sceKernelDeleteAddressSpace: 0xF2D7FE3A
sceKernelFindClassByName: 0x62989905
sceKernelFreeSimpleMemBlock: 0xA1FFA2C9
@@ -485,7 +487,6 @@ modules:
sceKernelGetUidHeapClass: 0x4CCA935D
sceKernelGetUidMemBlockClass: 0xAF729575
sceKernelNameHeapGetInfo: 0xE443253B
- sceKernelRxMemcpyKernelToUserForPid: 0x30931572
sceKernelSysrootAlloc: 0xC0A4D2F3
sceKernelUIDEntryHeapGetInfo: 0x686AA15C
SceSysrootForDriver:
diff --git a/nids/365/SceSysmem.yml b/nids/365/SceSysmem.yml
index 0fa3b00..e2be720 100644
--- a/nids/365/SceSysmem.yml
+++ b/nids/365/SceSysmem.yml
@@ -23,10 +23,11 @@ modules:
SceSysmemForKernel:
nid: 0x02451F0F
functions:
- sceKernelCreateUidObj: 0xFB6390CE
+ sceGUIDKernelCreateWithOpt: 0xFB6390CE
+ sceGUIDSet: 0xBF275C5A
+ sceKernelCopyToUserProcTextDomain: 0x2995558D
sceKernelFindClassByName: 0x7D87F706
sceKernelGetMemBlockType: 0xD44FE44B
- sceKernelRxMemcpyKernelToUserForPid: 0x2995558D
SceUartForKernel:
nid: 0x1CCD9BA3
functions: