diff options
author | Sergi Granell | 2017-02-13 23:02:51 +0100 |
---|---|---|
committer | GitHub | 2017-02-13 23:02:51 +0100 |
commit | 1e6677970851427c5177cfd4947266167ec03e9b (patch) | |
tree | 2359dfab83c0fa2460361e6b51691f1a60d3999f /include/kernel | |
parent | Merge pull request #135 from xerpi/cpu_nids (diff) | |
parent | Add ksceKernelDisableSubIntr NID (diff) | |
download | vds-libraries-1e6677970851427c5177cfd4947266167ec03e9b.tar.gz |
Merge pull request #137 from xerpi/master
Add some SceKernelIntrMgr NIDs
Diffstat (limited to 'include/kernel')
-rw-r--r-- | include/kernel/kernel/intrmgr.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/include/kernel/kernel/intrmgr.h b/include/kernel/kernel/intrmgr.h new file mode 100644 index 0000000..ca11136 --- /dev/null +++ b/include/kernel/kernel/intrmgr.h @@ -0,0 +1,60 @@ +#ifndef _PSP2_KERNEL_INTRMGR_H_ +#define _PSP2_KERNEL_INTRMGR_H_ + +#include <psp2kern/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef int (*SceKernelIntrOptParam2Callback)(int intr_code, int subintr_code); + +typedef struct SceKernelIntrOptParam2 { + uint32_t size; // 0x28 + uint32_t unk_4; + uint32_t unk_8; + uint32_t unk_C; + SceKernelIntrOptParam2Callback *fptr0; // function pointer + SceKernelIntrOptParam2Callback *enable_subinterrupt_cb; + SceKernelIntrOptParam2Callback *fptr2; // function pointer + uint32_t unk_1C; + uint32_t unk_20; + uint32_t unk_24; +} SceKernelIntrOptParam2; + +typedef struct SceKernelIntrOptParam { + uint32_t size; // 0x14 + uint32_t num; + SceKernelIntrOptParam2 *opt2; + uint32_t unk_C; + uint32_t unk_10; +} SceKernelIntrOptParam; + +typedef int (*SceKernelIntrHandler)(int unk, void *userCtx); +typedef int (*SceKernelSubIntrHandler)(void *arg, int unk0, int unk1); + +int sceKernelRegisterIntrHandler(int intr_code, const char *name, int interrupt_type, + SceKernelIntrHandler *handler, void *userCtx, int priority, int targetcpu, SceKernelIntrOptParam *opt); +int sceKernelReleaseIntrHandler(int intr_code); +int sceKernelMaskIntr(int intr_code); +int sceKernelUnmaskIntr(int intr_code); +int sceKernelSetIntrMasked(int intr_code, int masked); +int sceKernelGetIntrMasked(int intr_code, int *masked); +int sceKernelIsIntrPending(int intr_code); +int sceKernelClearIntrPending(int intr_code); +int sceKernelSetIntrPriority(int intr_code, unsigned char priority); +int sceKernelSetIntrTarget(int intr_code, int cpu_target_list); +int sceKernelTriggerSGI(int intr_code, unsigned int target_list_filter, unsigned int cpu_target_list); +int sceKernelIsIntrAllowedInCurrentContext(int intr_code); +int sceKernelRegisterSubIntrHandler(int intr_code, int subintr_code, const char *name, + SceKernelSubIntrHandler handler, void *register_arg); +int sceKernelTriggerSubIntr(int intr_code, int subintr_code, void *subintr_arg); +int sceKernelEnableSubIntr(int intr_code, int subintr_code); +int sceKernelDisableSubIntr(int intr_code, int subintr_code); + +#ifdef __cplusplus +} +#endif + +#endif /* _PSP2_KERNEL_INTRMGR_H_ */ + |