diff options
author | Princess of Sleeping | 2020-09-03 12:26:31 +0900 |
---|---|---|
committer | GitHub | 2020-09-03 12:26:31 +0900 |
commit | 53edefaeba6e139164642c2287cc098197be895a (patch) | |
tree | be8549da947123b18390bcfcd696737e021aa2b9 /include | |
parent | Merge branch 'pr/465' into master (diff) | |
download | vds-libraries-53edefaeba6e139164642c2287cc098197be895a.tar.gz |
Add SceProcEvent (#466)
* add SceProcEvent
* Create proc_event.h
* Fix args name
Diffstat (limited to 'include')
-rw-r--r-- | include/kernel/kernel/proc_event.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/include/kernel/kernel/proc_event.h b/include/kernel/kernel/proc_event.h new file mode 100644 index 0000000..37af5f9 --- /dev/null +++ b/include/kernel/kernel/proc_event.h @@ -0,0 +1,73 @@ +#ifndef _PSP2_KERNEL_PROC_EVENT_H_ +#define _PSP2_KERNEL_PROC_EVENT_H_ + +#include <psp2kern/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SceProcEventInvokeParam1 { + SceSize size; // SceProcEventInvokeParam1 struct size : 0x10 + int unk_0x04; + int unk_0x08; + int unk_0x0C; +} SceProcEventInvokeParam1; + +typedef struct SceProcEventInvokeParam2 { + SceSize size; // SceProcEventInvokeParam2 struct size : 0x14 + SceUID pid; + int unk_0x08; + int unk_0x0C; + int unk_0x10; +} SceProcEventInvokeParam2; + +typedef struct SceProcEventHandler { + SceSize size; // SceProcEventHandler struct size : 0x1C + int (* create)(SceUID pid, SceProcEventInvokeParam2 *a2, int a3); + int (* exit)(SceUID pid, SceProcEventInvokeParam1 *a2, int a3); // current process exit + int (* kill)(SceUID pid, SceProcEventInvokeParam1 *a2, int a3); // by SceShell + int (* stop)(SceUID pid, int event_type, SceProcEventInvokeParam1 *a3, int a4); + int (* start)(SceUID pid, int event_type, SceProcEventInvokeParam1 *a3, int a4); + int (* switch_process)(int event_id, int event_type, SceProcEventInvokeParam2 *a3, int a4); // switch display frame? +} SceProcEventHandler; + +/** + * Register process event handler + * + * @param[in] name - Name of handler + * @param[in] handler - The pointer of handler + * @param[in] a3 - unknown, set to 0 + * + * @return uid on success, < 0 on error. + */ +SceUID sceKernelRegisterProcEventHandler(const char *name, const SceProcEventHandler *handler, int a3); + +/** + * Unregister process event handler + * + * @param[in] uid - ProcEvent uid + * + * @return uid on success, < 0 on error. + */ +int sceKernelUnregisterProcEventHandler(SceUID uid); + +/** + * Invoke process event handler + * + * @param[in] pid - The ProccessId + * @param[in] event_id - event_id, [1, 2, 3, 4, 5, 0x10, 0x11] + * @param[in] event_type - Various event types + * @param[in] param - The pointer of invoke parameter + * @param[in] a5 - Unknown + * @param[in] a6 - Unknown + * + * @return uid on success, < 0 on error. + */ +int sceKernelInvokeProcEventHandler(SceUID pid, int event_id, int event_type, void *param, void *a5, int a6); + +#ifdef __cplusplus +} +#endif + +#endif /* _PSP2_KERNEL_PROC_EVENT_H_ */ |