SceSblSsSmComm: Difference between revisions
Jump to navigation
Jump to search
CelesteBlue (talk | contribs) No edit summary |
CelesteBlue (talk | contribs) |
||
Line 103: | Line 103: | ||
|} | |} | ||
<source lang="c">int sceSblSmCommStartSm_ForKernel(SceBool priority, const char *path, SceBool some_bool, SceSblSmCommContext130* | <source lang="c">int sceSblSmCommStartSm_ForKernel(SceBool priority, const char *path, SceBool some_bool, int unk_a4, int unk_a5, int unk_a6, SceSblSmCommContext130 *pCtx, SceSmSchedRequestId *pReqId);</source> | ||
=== sceSblSmCommCallFuncForKernel === | === sceSblSmCommCallFuncForKernel === |
Revision as of 02:33, 6 June 2020
SceSblSsSmComm is a kernel module that is primarily responsible for calling SM functions.
Module
Version | Name | World | Privilege |
---|---|---|---|
0.931-3.60 | SceSblSsSmComm | Non-secure | Kernel |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
0.931-3.60 | SceSblSmCommForKernel | Non-secure | Kernel | 0xCD3C89B6 |
0.931-1.69 | SceSblSsSmComm | Non-secure | User | 0xD8DC7847 |
Types
/* example of caller_self_info char data[0x90] = { 0x01,0x00,0x00,0x00, 0x00,0x00,0x08,0x28, // KBL program-authority-id 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x80,0x00,0x00,0x00, 0xC0,0x00,0xF0,0x00, 0x00,0x00,0x00,0x00, 0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x80,0x09,0x80,0x03, 0x00,0x00,0xC3,0x00, 0x00,0x00,0x80,0x09, 0x80,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, }; */ typedef struct SceSblSmCommContext130 { // size is 0x130 as its name indicates uint32_t unk_0; uint32_t self_type; // kernel = 0, user = 1, SM = 2 SceSelfAuthInfo caller_self_info; // can be obtained with sceKernelGetSelfAuthInfoForKernel SceSelfAuthInfo called_self_info; // set by SK in SceSblSmCommContext130 response uint32_t pathId; // can be obtained with sceSblACMgrGetMediaTypeForKernel or sceIoGetMediaTypeForDriver uint32_t unk_12C; // if (kbl_param->boot_type_indicator_1????? & 0x40) == true set unk_12C to 1, else set to 0xA } SceSblSmCommContext130;
SceSblSmCommForKernel
sceSblSmCommStopSmForKernel
Version | NID |
---|---|
0.931-3.60 | 0x0631F8ED |
This function calls sceSblSmCommCallFuncForKernel with -1
as command_id
and then calls sceSblSmSchedProxyWaitForKernel.
int sceSblSmCommStopSmForKernel(SceSmSchedRequestId req_id, status_handler *pStatusHandler);
sceSblSmCommStartSmFromDataForKernel
Version | NID |
---|---|
3.60 | 0x039C73B1 |
int sceSblSmCommStartSmFromDataForKernel(SceBool priority, const char *sm_self, SceSize sm_self_size, int cmd_id, SceSblSmCommContext130 *ctx_130, SceSmSchedRequestId *req_id);
sceSblSmCommStartSmForKernel
Version | NID |
---|---|
0.931-3.60 | 0x7863A0CC |
Priority is binary: 1 = low, 0 = high. Running a high priority SM while a low priority one is currently running will suspend the low one.
int sceSblSmCommStartSmForKernel(SceBool priority, void *sm_self, SceSize sm_self_size, SceSblSmCommContext130* ctx_130, SceSmSchedRequestId *req_id);
sceSblSmCommStartSm_ForKernel
Version | NID |
---|---|
0.931-1.69 | 0x992BB9DB |
int sceSblSmCommStartSm_ForKernel(SceBool priority, const char *path, SceBool some_bool, int unk_a4, int unk_a5, int unk_a6, SceSblSmCommContext130 *pCtx, SceSmSchedRequestId *pReqId);
sceSblSmCommCallFuncForKernel
Version | NID |
---|---|
0.931-3.60 | 0xDB9FC204 |
int sceSblSmCommCallFuncForKernel(SceSmSchedRequestId req_id, SceUInt32 func_id, SceUInt32 *pResponse, void *pData, SceSize dataSize);
sceSblSmCommCallFunc_ForKernel
Version | NID |
---|---|
0.931 | 0x4960DF9E |
typedef struct sceSblSmCommCallFunc_Param { void *pData; SceSize dataSize; } sceSblSmCommCallFunc_Param; int sceSblSmCommCallFunc_ForKernel(SceSmSchedRequestId req_id, SceUInt32 func_id, SceUInt32 *pResponse, sceSblSmCommCallFunc_Param *pParam);
sceSblSmCommStopCommForKernel
Version | NID |
---|---|
0.931 | 0xC35FB95A |
int sceSblSmCommStopCommForKernel(SceSmSchedRequestId req_id);
SceSblSsSmComm
This library is present on 1.69 but is not present on 3.60.
sceSblSmCommStopSm
Version | NID |
---|---|
0.931-1.69 | 0x0631F8ED |
sceSblSmCommStartSm
Version | NID |
---|---|
0.931 | 0x7863A0CC |
sceSblSmCommStartSm_
Version | NID |
---|---|
0.931-1.69 | 0x992BB9DB |
sceSblSmCommCallFunc
Version | NID |
---|---|
0.931 | 0xDB9FC204 |
sceSblSmCommCallFunc_
Version | NID |
---|---|
0.931-1.69 | 0x4960DF9E |
sceSblSmCommStopComm
Version | NID |
---|---|
0.931 | 0xC35FB95A |