Some functions registered

This commit is contained in:
Nekotekina 2015-01-24 03:18:25 +03:00
parent 2647b77c01
commit 08c0c90a05
3 changed files with 165 additions and 34 deletions

View file

@ -11,7 +11,7 @@
#define RETURN_ERROR(code) { Emu.Pause(); sceLibKernel.Error("%s() failed: %s", __FUNCTION__, #code); return code; }
u32 sceKernelCreateThread(
s32 sceKernelCreateThread(
vm::psv::ptr<const char> pName,
vm::psv::ptr<SceKernelThreadEntry> entry,
s32 initPriority,
@ -122,28 +122,28 @@ s32 sceKernelChangeThreadCpuAffinityMask(s32 threadId, s32 cpuAffinityMask)
{
sceLibKernel.Todo("sceKernelChangeThreadCpuAffinityMask(threadId=0x%x, cpuAffinityMask=0x%x)", threadId, cpuAffinityMask);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetThreadCpuAffinityMask(s32 threadId)
{
sceLibKernel.Todo("sceKernelGetThreadCpuAffinityMask(threadId=0x%x)", threadId);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelChangeThreadPriority(s32 threadId, s32 priority)
{
sceLibKernel.Todo("sceKernelChangeThreadPriority(threadId=0x%x, priority=%d)", threadId, priority);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetThreadCurrentPriority()
{
sceLibKernel.Todo("sceKernelGetThreadCurrentPriority()");
return SCE_OK;
throw __FUNCTION__;
}
u32 sceKernelGetThreadId(ARMv7Context& context)
@ -157,84 +157,84 @@ s32 sceKernelChangeCurrentThreadAttr(u32 clearAttr, u32 setAttr)
{
sceLibKernel.Todo("sceKernelChangeCurrentThreadAttr()");
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetThreadExitStatus(s32 threadId, vm::psv::ptr<s32> pExitStatus)
{
sceLibKernel.Todo("sceKernelGetThreadExitStatus(threadId=0x%x, pExitStatus=0x%x)", threadId, pExitStatus);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetProcessId()
{
sceLibKernel.Todo("sceKernelGetProcessId()");
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelCheckWaitableStatus()
{
sceLibKernel.Todo("sceKernelCheckWaitableStatus()");
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetThreadInfo(s32 threadId, vm::psv::ptr<SceKernelThreadInfo> pInfo)
{
sceLibKernel.Todo("sceKernelGetThreadInfo(threadId=0x%x, pInfo=0x%x)", threadId, pInfo);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetThreadRunStatus(vm::psv::ptr<SceKernelThreadRunStatus> pStatus)
{
sceLibKernel.Todo("sceKernelGetThreadRunStatus(pStatus=0x%x)", pStatus);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetSystemInfo(vm::psv::ptr<SceKernelSystemInfo> pInfo)
{
sceLibKernel.Todo("sceKernelGetSystemInfo(pInfo=0x%x)", pInfo);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetThreadmgrUIDClass(s32 uid)
{
sceLibKernel.Todo("sceKernelGetThreadmgrUIDClass(uid=0x%x)", uid);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelChangeThreadVfpException(s32 clearMask, s32 setMask)
{
sceLibKernel.Todo("sceKernelChangeThreadVfpException(clearMask=0x%x, setMask=0x%x)", clearMask, setMask);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelGetCurrentThreadVfpException()
{
sceLibKernel.Todo("sceKernelGetCurrentThreadVfpException()");
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelDelayThread(u32 usec)
{
sceLibKernel.Todo("sceKernelDelayThread()");
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelDelayThreadCB(u32 usec)
{
sceLibKernel.Todo("sceKernelDelayThreadCB()");
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelWaitThreadEnd(s32 threadId, vm::psv::ptr<s32> pExitStatus, vm::psv::ptr<u32> pTimeout)
@ -272,13 +272,104 @@ s32 sceKernelWaitThreadEnd(s32 threadId, vm::psv::ptr<s32> pExitStatus, vm::psv:
return SCE_OK;
}
// Callback functions
s32 sceKernelWaitThreadEndCB(s32 threadId, vm::psv::ptr<s32> pExitStatus, vm::psv::ptr<u32> pTimeout)
{
sceLibKernel.Todo("sceKernelWaitThreadEndCB(threadId=0x%x, pExitStatus=0x%x, pTimeout=0x%x)", threadId, pExitStatus, pTimeout);
return SCE_OK;
throw __FUNCTION__;
}
s32 sceKernelCreateCallback(vm::psv::ptr<const char> pName, u32 attr, vm::psv::ptr<SceKernelCallbackFunction> callbackFunc, vm::psv::ptr<void> pCommon)
{
throw __FUNCTION__;
}
s32 sceKernelDeleteCallback(s32 callbackId)
{
throw __FUNCTION__;
}
s32 sceKernelNotifyCallback(s32 callbackId, s32 notifyArg)
{
throw __FUNCTION__;
}
s32 sceKernelCancelCallback(s32 callbackId)
{
throw __FUNCTION__;
}
s32 sceKernelGetCallbackCount(s32 callbackId)
{
throw __FUNCTION__;
}
s32 sceKernelCheckCallback()
{
throw __FUNCTION__;
}
s32 sceKernelGetCallbackInfo(s32 callbackId, vm::psv::ptr<SceKernelCallbackInfo> pInfo)
{
throw __FUNCTION__;
}
s32 sceKernelRegisterCallbackToEvent(s32 eventId, s32 callbackId)
{
throw __FUNCTION__;
}
s32 sceKernelUnregisterCallbackFromEvent(s32 eventId, s32 callbackId)
{
throw __FUNCTION__;
}
s32 sceKernelUnregisterCallbackFromEventAll(s32 eventId)
{
throw __FUNCTION__;
}
// Event functions
s32 sceKernelWaitEvent(s32 eventId, u32 waitPattern, vm::psv::ptr<u32> pResultPattern, vm::psv::ptr<u64> pUserData, vm::psv::ptr<u32> pTimeout)
{
throw __FUNCTION__;
}
s32 sceKernelWaitEventCB(s32 eventId, u32 waitPattern, vm::psv::ptr<u32> pResultPattern, vm::psv::ptr<u64> pUserData, vm::psv::ptr<u32> pTimeout)
{
throw __FUNCTION__;
}
s32 sceKernelPollEvent(s32 eventId, u32 bitPattern, vm::psv::ptr<u32> pResultPattern, vm::psv::ptr<u64> pUserData)
{
throw __FUNCTION__;
}
s32 sceKernelCancelEvent(s32 eventId, vm::psv::ptr<s32> pNumWaitThreads)
{
throw __FUNCTION__;
}
s32 sceKernelGetEventInfo(s32 eventId, vm::psv::ptr<SceKernelEventInfo> pInfo)
{
throw __FUNCTION__;
}
s32 sceKernelWaitMultipleEvents(vm::psv::ptr<SceKernelWaitEvent> pWaitEventList, s32 numEvents, u32 waitMode, vm::psv::ptr<SceKernelResultEvent> pResultEventList, vm::psv::ptr<u32> pTimeout)
{
throw __FUNCTION__;
}
s32 sceKernelWaitMultipleEventsCB(vm::psv::ptr<SceKernelWaitEvent> pWaitEventList, s32 numEvents, u32 waitMode, vm::psv::ptr<SceKernelResultEvent> pResultEventList, vm::psv::ptr<u32> pTimeout)
{
throw __FUNCTION__;
}
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceLibKernel, #name, &name)
psv_log_base sceLibKernel("sceLibKernel", []()
@ -287,6 +378,8 @@ psv_log_base sceLibKernel("sceLibKernel", []()
sceLibKernel.on_unload = nullptr;
sceLibKernel.on_stop = nullptr;
// REG_FUNC(???, sceKernelGetEventInfo);
//REG_FUNC(0x23EAA62, sceKernelPuts);
//REG_FUNC(0xB0335388, sceClibToupper);
//REG_FUNC(0x4C5471BC, sceClibTolower);
@ -430,21 +523,21 @@ psv_log_base sceLibKernel("sceLibKernel", []()
REG_FUNC(0xF994FE65, sceKernelGetThreadmgrUIDClass);
//REG_FUNC(0xB4DE10C7, sceKernelGetActiveCpuMask);
REG_FUNC(0x2C1321A3, sceKernelChangeThreadVfpException);
//REG_FUNC(0x3849359A, sceKernelCreateCallback);
//REG_FUNC(0x88DD1BC8, sceKernelGetCallbackInfo);
//REG_FUNC(0x464559D3, sceKernelDeleteCallback);
//REG_FUNC(0xBD9C8F2B, sceKernelNotifyCallback);
//REG_FUNC(0x3137A687, sceKernelCancelCallback);
//REG_FUNC(0x76A2EF81, sceKernelGetCallbackCount);
//REG_FUNC(0xD4F75281, sceKernelRegisterCallbackToEvent);
//REG_FUNC(0x8D3940DF, sceKernelUnregisterCallbackFromEvent);
//REG_FUNC(0x2BD1E682, sceKernelUnregisterCallbackFromEventAll);
//REG_FUNC(0x120F03AF, sceKernelWaitEvent);
//REG_FUNC(0xA0490795, sceKernelWaitEventCB);
//REG_FUNC(0x241F3634, sceKernelPollEvent);
//REG_FUNC(0x603AB770, sceKernelCancelEvent);
//REG_FUNC(0x10586418, sceKernelWaitMultipleEvents);
//REG_FUNC(0x4263DBC9, sceKernelWaitMultipleEventsCB);
REG_FUNC(0x3849359A, sceKernelCreateCallback);
REG_FUNC(0x88DD1BC8, sceKernelGetCallbackInfo);
REG_FUNC(0x464559D3, sceKernelDeleteCallback);
REG_FUNC(0xBD9C8F2B, sceKernelNotifyCallback);
REG_FUNC(0x3137A687, sceKernelCancelCallback);
REG_FUNC(0x76A2EF81, sceKernelGetCallbackCount);
REG_FUNC(0xD4F75281, sceKernelRegisterCallbackToEvent);
REG_FUNC(0x8D3940DF, sceKernelUnregisterCallbackFromEvent);
REG_FUNC(0x2BD1E682, sceKernelUnregisterCallbackFromEventAll);
REG_FUNC(0x120F03AF, sceKernelWaitEvent);
REG_FUNC(0xA0490795, sceKernelWaitEventCB);
REG_FUNC(0x241F3634, sceKernelPollEvent);
REG_FUNC(0x603AB770, sceKernelCancelEvent);
REG_FUNC(0x10586418, sceKernelWaitMultipleEvents);
REG_FUNC(0x4263DBC9, sceKernelWaitMultipleEventsCB);
//REG_FUNC(0x8516D040, sceKernelCreateEventFlag);
//REG_FUNC(0x11FE9B8B, sceKernelDeleteEventFlag);
//REG_FUNC(0xE04EC73A, sceKernelOpenEventFlag);
@ -644,7 +737,7 @@ psv_log_base sceLibKernel("sceLibKernel", []()
REG_FUNC(0x751C9B7A, sceKernelChangeCurrentThreadAttr);
REG_FUNC(0xD9BD74EB, sceKernelCheckWaitableStatus);
REG_FUNC(0x9DCB4B7A, sceKernelGetProcessId);
//REG_FUNC(0xE53E41F6, sceKernelCheckCallback);
REG_FUNC(0xE53E41F6, sceKernelCheckCallback);
//REG_FUNC(0xF4EE4FA9, sceKernelGetSystemTimeWide);
//REG_FUNC(0x47F6DE49, sceKernelGetSystemTimeLow);
//REG_FUNC(0xC0FAF6A3, sceKernelCreateThreadForUser);

View file

@ -11,6 +11,12 @@ union SceKernelSysClock
u64 quad;
};
struct SceKernelCallFrame
{
u32 sp;
u32 pc;
};
// Memory Manager definitions
typedef s32 SceKernelMemoryType;
@ -303,6 +309,27 @@ struct SceKernelRWLockInfo
s32 numWriteWaitThreads;
};
// IO/File Manager definitions
struct SceIoStat
{
s32 mode;
u32 attr;
s64 size;
SceDateTime ctime;
SceDateTime atime;
SceDateTime mtime;
u64 _private[6];
};
struct SceIoDirent
{
SceIoStat d_stat;
char d_name[256];
vm::psv::ptr<void> d_private;
s32 dummy;
};
// Module
extern psv_log_base sceLibKernel;

View file

@ -410,6 +410,17 @@ enum psv_error_codes
SCE_KERNEL_ERROR_NO_AUTH = 0x8002F001,
};
struct SceDateTime
{
u16 year;
u16 month;
u16 day;
u16 hour;
u16 minute;
u16 second;
u32 microsecond;
};
class psv_func_caller
{
public: