예제 #1
0
파일: module.c 프로젝트: Kaegell/uofw
//Subroutine LoadCoreForKernel_001B57BB - Address 0x00006E38
s32 sceKernelDeleteModule(SceModule *mod)
{
    s32 status;
    u32 intrState;

    intrState = loadCoreCpuSuspendIntr(); //0x00006E48
    
    status = sceKernelDeleteUID(mod->modId); //0x00006E54
    
    loadCoreCpuResumeIntr(intrState); //0x00006E60
    return status;
}
예제 #2
0
파일: thmbox.c 프로젝트: joel16/utopia
//5e98
int sceKernelDeleteMbx(SceUID mbxid)
{
  SET_K1_SRL16;

  if(sceKernelIsIntrContext())
  {
    RESET_K1;

    return SCE_KERNEL_ERROR_ILLEGAL_CONTEXT;
  }

  int intr = sceKernelCpuSuspendIntr();

  uidControlBlock *cb;
  if(sceKernelGetUIDcontrolBlockWithType(mbxid, uidMboxType, &cb) != 0)
  {
    sceKernelCpuResumeIntr(intr);

    RESET_K1;

    return SCE_KERNEL_ERROR_UNKNOWN_MBXID;
  }

  if(IS_USER_MODE && !(cb->attr & 0x10))
  {
    sceKernelCpuResumeIntr(intr);

    RESET_K1;

    return SCE_KERNEL_ERROR_ILLEGAL_PERM;
  }

  THREADMAN_TRACE(0x48, 1, mbxid);

  ASSERT(sceKernelDeleteUID(mbxid) <= 0);

  sceKernelCpuResumeIntr(intr);

  RESET_K1;

  return 0;
}
예제 #3
0
파일: module.c 프로젝트: Kaegell/uofw
//Subroutine LoadCoreForKernel_84D5C971 - Address 0x00006E80
SceModule *sceKernelCreateAssignModule(SceLoadCoreExecFileInfo *execFileInfo)
{
    u32 intrState;
    u32 intrState2; 
    SceModule *mod = NULL;    
          
    intrState = loadCoreCpuSuspendIntr(); //0x00006E94
    
    mod = sceKernelCreateModule(); //0x00006E9C
    if (mod != NULL) { //0x00006EAC
        if (sceKernelAssignModule(mod, execFileInfo) < SCE_ERROR_OK) { //0x00006EB4 - 0x00006EC0            
            intrState2 = loadCoreCpuSuspendIntr(); //0x00006EE8
            
            sceKernelDeleteUID(mod->modId); //0x00006EF8
            mod = NULL; //0x00006EFC
            
            loadCoreCpuResumeIntr(intrState2); //0x00006F00
        }
    }   
    loadCoreCpuResumeIntr(intrState); //0x00006EC4
    return mod; //0x00006ECC
}