diff options
author | Yifan Lu | 2017-05-13 13:53:51 -0700 |
---|---|---|
committer | Yifan Lu | 2017-05-13 13:53:51 -0700 |
commit | dcb38024c9984155685483be668284f477d8c454 (patch) | |
tree | 6dd016875353404712d2d67e9fcdacd8008b0b67 | |
parent | Fix code style of power.h (diff) | |
download | vds-libraries-dcb38024c9984155685483be668284f477d8c454.tar.gz |
Added sysmem uid object reference counting functions
Removed duplicate NID ksceSysrootUseExternalStorage == ksceSysrootIsManufacturingMode
Added headder for ksceSysrootIsManufacturingMode
-rw-r--r-- | include/kernel/kernel/sysmem.h | 38 | ||||
-rw-r--r-- | nids/360/SceSysmem.yml | 3 |
2 files changed, 40 insertions, 1 deletions
diff --git a/include/kernel/kernel/sysmem.h b/include/kernel/kernel/sysmem.h index 9c5d0aa..6c5f461 100644 --- a/include/kernel/kernel/sysmem.h +++ b/include/kernel/kernel/sysmem.h @@ -141,7 +141,43 @@ typedef struct { 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); + +/** + * Gets an object from a UID. + * + * This retains the object internally! You must call `sceKernelUidRelease` + * after you are done using it. + * + * @param[in] uid The uid + * @param cls The class + * @param obj The object + * + * @return 0 on success, < 0 on error. + */ int sceKernelGetObjForUid(SceUID uid, SceClass *cls, SceObjectBase **obj); + +/** + * Retains an object referenced by the UID. + * + * This increases the internal reference count. + * + * @param[in] uid The uid + * + * @return 0 on success, < 0 on error. + */ +int sceKernelUidRetain(SceUID uid); + +/** + * Releases an object referenced by the UID. + * + * This decreases the internal reference count. + * + * @param[in] uid The uid + * + * @return 0 on success, < 0 on error. + */ +int sceKernelUidRelease(SceUID uid); + SceClass *sceKernelGetUidClass(void); typedef int (*SceClassCallback)(void *item); int sceKernelCreateClass(SceClass *cls, const char *name, void *uidclass, size_t itemsize, SceClassCallback create, SceClassCallback destroy); @@ -159,6 +195,8 @@ int sceKernelMapBlockUserVisible(SceUID uid); int sceKernelGetPaddr(void *addr, uintptr_t *paddr); +int sceSysrootIsManufacturingMode(void); + #ifdef __cplusplus } #endif diff --git a/nids/360/SceSysmem.yml b/nids/360/SceSysmem.yml index e8ec2d6..d67fe2d 100644 --- a/nids/360/SceSysmem.yml +++ b/nids/360/SceSysmem.yml @@ -174,6 +174,8 @@ modules: sceKernelStrncpyUserToKernel: 0xDB3EC244 sceKernelStrnlenUserForPid: 0x9929EB07 sceKernelSwitchVmaForPid: 0x6F2ACDAE + sceKernelUidRelease: 0x149885C4 + sceKernelUidRetain: 0x0F5C84B7 sceKernelUnmapMemBlock: 0xFFCD9B60 SceSysmemForKernel: nid: 0x63A519E5 @@ -191,5 +193,4 @@ modules: sceSysrootIsSafeMode: 0x834439A7 sceSysrootIsUpdateMode: 0xB0E1FC67 sceSysrootIsUsbEnumWakeup: 0x79C9AE10 - sceSysrootUseExternalStorage: 0x55392965 sceSysrootUseInternalStorage: 0x50FE3B4D |