vitasdk
Documentation of the vitasdk

Exports for Kernel. More...

Data Structures

struct  SceKernelIntrOptHandlers
 
struct  SceKernelIntrOptParam
 

Macros

#define ksceKernelMaskIntr(intr_code)   ksceKernelDisableIntr(intr_code)
 
#define ksceKernelSetIntrMasked(intr_code, masked)   ksceKernelEnableIntr(intr_code)
 
#define ksceKernelUnmaskIntr(intr_code)   ksceKernelEnableIntr(intr_code)
 
#define ksceKernelGetIntrMasked   ksceKernelSuspendIntr
 

Typedefs

typedef int(* SceKernelIntrHandler) (int unk, void *userCtx)
 
typedef int(* SceKernelSubIntrHandler) (void *subintr_arg, void *register_arg, unsigned char intr_priority)
 
typedef int(* SceKernelIntrHookHandler) (int intr_code, void *user_ctx, int intr_priority)
 Primary interrupt-hook handler installed by ksceKernelRegisterIntrHookHandler.
 
typedef int(* SceKernelIntrOptHandlersCb1) (int intr_code, int subintr_code)
 
typedef int(* SceKernelIntrOptHandlersCb2) (int intr_code, int subintr_code, void *arg)
 
typedef int(* SceKernelIntrOptHandlersCb3) (int intr_code, int subintr_code, SceKernelSubIntrHandler handler, void *register_arg)
 

Functions

 VITASDK_BUILD_ASSERT_EQ (0x28, SceKernelIntrOptHandlers)
 
 VITASDK_BUILD_ASSERT_EQ (0x14, SceKernelIntrOptParam)
 
int ksceKernelRegisterIntrHandler (int intr_code, const char *name, int interrupt_type, SceKernelIntrHandler handler, void *user_ctx, int priority, int target_cpu, SceKernelIntrOptParam *opt)
 
int ksceKernelReleaseIntrHandler (int intr_code)
 
int ksceKernelEnableIntr (int intr_code)
 
int ksceKernelDisableIntr (int intr_code)
 
int ksceKernelResumeIntr (int intr_code, int enabled)
 
int ksceKernelSuspendIntr (int intr_code, int *enabled)
 
int ksceKernelIsIntrPending (int intr_code)
 
int ksceKernelClearIntrPending (int intr_code)
 
int ksceKernelSetIntrPriority (int intr_code, int priority)
 
int ksceKernelGetIntrPriority (int intr_code, int *priority)
 
int ksceKernelSetIntrTarget (int intr_code, int cpu_target_list)
 
int ksceKernelGetIntrTarget (int intr_code, int *cpu_target_list)
 
int ksceKernelTriggerSGI (int intr_code, unsigned int target_list_filter, unsigned int cpu_target_list)
 
int ksceKernelIsIntrAllowedInCurrentContext (int intr_code)
 
int ksceKernelRegisterSubIntrHandler (int intr_code, int subintr_code, const char *name, SceKernelSubIntrHandler handler, void *register_arg)
 
int ksceKernelReleaseSubIntrHandler (int intr_code, int subintr_code)
 
int ksceKernelTriggerSubIntr (int intr_code, int subintr_code, void *subintr_arg)
 
int ksceKernelEnableSubIntr (int intr_code, int subintr_code)
 
int ksceKernelDisableSubIntr (int intr_code, int subintr_code)
 
int ksceKernelQueryIntrHandlerInfo (unsigned int intr_code, unsigned int a2, int a3)
 
int ksceKernelIsSubInterruptOccurred (int intr_code, int subintr_code)
 Query a subinterrupt controller's occurrence state.
 
int ksceKernelRegisterIntrHookHandler (int intr_code, SceKernelIntrHookHandler new_handler, SceKernelIntrHookHandler *old_handler)
 Replace a registered primary interrupt handler with a hook.
 
int ksceKernelReleaseIntrHookHandler (int intr_code)
 Remove an interrupt hook and restore the internally saved primary handler.
 
int ksceKernelResumeSubIntr (int intr_code, int subintr_code, int state)
 Call a subinterrupt controller's resume operation.
 
int ksceKernelSuspendSubIntr (int intr_code, int subintr_code, void *arg)
 Call a subinterrupt controller's suspend operation.
 

Variables

uint32_t SceKernelIntrOptHandlers::size
 
SceKernelIntrOptHandlersCb3 * SceKernelIntrOptHandlers::pre_register_subintr_cb
 
SceKernelIntrOptHandlersCb3 * SceKernelIntrOptHandlers::post_register_subintr_cb
 
SceKernelIntrOptHandlersCb1 * SceKernelIntrOptHandlers::release_subintr_cb
 
SceKernelIntrOptHandlersCb1 * SceKernelIntrOptHandlers::fptr0
 
SceKernelIntrOptHandlersCb1 * SceKernelIntrOptHandlers::enable_subintr_cb
 
SceKernelIntrOptHandlersCb1 * SceKernelIntrOptHandlers::disable_subintr_cb
 
SceKernelIntrOptHandlersCb2 * SceKernelIntrOptHandlers::fptr3
 
SceKernelIntrOptHandlersCb1 * SceKernelIntrOptHandlers::fptr4
 
SceKernelIntrOptHandlersCb1 * SceKernelIntrOptHandlers::fptr5
 
uint32_t SceKernelIntrOptParam::size
 
uint32_t SceKernelIntrOptParam::num
 
SceKernelIntrOptHandlers * SceKernelIntrOptParam::handlers
 
uint32_t SceKernelIntrOptParam::unk_C
 
uint32_t SceKernelIntrOptParam::unk_10
 

Detailed Description

Exports for Kernel.


Using this library in your project

Include the header file in your project:


Link the library to the executable:

SceIntrmgrForDriver_stub




Data Structure Documentation

◆ SceKernelIntrOptHandlers

struct SceKernelIntrOptHandlers
Data Fields
uint32_t size
SceKernelIntrOptHandlersCb3 * pre_register_subintr_cb
SceKernelIntrOptHandlersCb3 * post_register_subintr_cb
SceKernelIntrOptHandlersCb1 * release_subintr_cb
SceKernelIntrOptHandlersCb1 * fptr0
SceKernelIntrOptHandlersCb1 * enable_subintr_cb
SceKernelIntrOptHandlersCb1 * disable_subintr_cb
SceKernelIntrOptHandlersCb2 * fptr3
SceKernelIntrOptHandlersCb1 * fptr4
SceKernelIntrOptHandlersCb1 * fptr5

◆ SceKernelIntrOptParam

struct SceKernelIntrOptParam
Data Fields
uint32_t size
uint32_t num
SceKernelIntrOptHandlers * handlers
uint32_t unk_C
uint32_t unk_10

Macro Definition Documentation

◆ ksceKernelMaskIntr

#define ksceKernelMaskIntr (   intr_code)    ksceKernelDisableIntr(intr_code)

◆ ksceKernelSetIntrMasked

#define ksceKernelSetIntrMasked (   intr_code,
  masked 
)    ksceKernelEnableIntr(intr_code)

◆ ksceKernelUnmaskIntr

#define ksceKernelUnmaskIntr (   intr_code)    ksceKernelEnableIntr(intr_code)

◆ ksceKernelGetIntrMasked

#define ksceKernelGetIntrMasked   ksceKernelSuspendIntr

Typedef Documentation

◆ SceKernelIntrHandler

typedef int(* SceKernelIntrHandler) (int unk, void *userCtx)

◆ SceKernelSubIntrHandler

typedef int(* SceKernelSubIntrHandler) (void *subintr_arg, void *register_arg, unsigned char intr_priority)

◆ SceKernelIntrHookHandler

typedef int(* SceKernelIntrHookHandler) (int intr_code, void *user_ctx, int intr_priority)

Primary interrupt-hook handler installed by ksceKernelRegisterIntrHookHandler.

Parameters
[in]intr_code- Registered interrupt code.
[in]user_ctx- Context supplied to ksceKernelRegisterIntrHandler.
[in]intr_priority- Registered interrupt priority.
Returns
Interrupt-handler result.

◆ SceKernelIntrOptHandlersCb1

typedef int(* SceKernelIntrOptHandlersCb1) (int intr_code, int subintr_code)

◆ SceKernelIntrOptHandlersCb2

typedef int(* SceKernelIntrOptHandlersCb2) (int intr_code, int subintr_code, void *arg)

◆ SceKernelIntrOptHandlersCb3

typedef int(* SceKernelIntrOptHandlersCb3) (int intr_code, int subintr_code, SceKernelSubIntrHandler handler, void *register_arg)

Function Documentation

◆ VITASDK_BUILD_ASSERT_EQ() [1/2]

VITASDK_BUILD_ASSERT_EQ ( 0x28  ,
SceKernelIntrOptHandlers   
)

◆ VITASDK_BUILD_ASSERT_EQ() [2/2]

VITASDK_BUILD_ASSERT_EQ ( 0x14  ,
SceKernelIntrOptParam   
)

◆ ksceKernelRegisterIntrHandler()

int ksceKernelRegisterIntrHandler ( int  intr_code,
const char *  name,
int  interrupt_type,
SceKernelIntrHandler  handler,
void *  user_ctx,
int  priority,
int  target_cpu,
SceKernelIntrOptParam *  opt 
)

◆ ksceKernelReleaseIntrHandler()

int ksceKernelReleaseIntrHandler ( int  intr_code)

◆ ksceKernelEnableIntr()

int ksceKernelEnableIntr ( int  intr_code)

◆ ksceKernelDisableIntr()

int ksceKernelDisableIntr ( int  intr_code)

◆ ksceKernelResumeIntr()

int ksceKernelResumeIntr ( int  intr_code,
int  enabled 
)

◆ ksceKernelSuspendIntr()

int ksceKernelSuspendIntr ( int  intr_code,
int *  enabled 
)

◆ ksceKernelIsIntrPending()

int ksceKernelIsIntrPending ( int  intr_code)

◆ ksceKernelClearIntrPending()

int ksceKernelClearIntrPending ( int  intr_code)

◆ ksceKernelSetIntrPriority()

int ksceKernelSetIntrPriority ( int  intr_code,
int  priority 
)

◆ ksceKernelGetIntrPriority()

int ksceKernelGetIntrPriority ( int  intr_code,
int *  priority 
)

◆ ksceKernelSetIntrTarget()

int ksceKernelSetIntrTarget ( int  intr_code,
int  cpu_target_list 
)

◆ ksceKernelGetIntrTarget()

int ksceKernelGetIntrTarget ( int  intr_code,
int *  cpu_target_list 
)

◆ ksceKernelTriggerSGI()

int ksceKernelTriggerSGI ( int  intr_code,
unsigned int  target_list_filter,
unsigned int  cpu_target_list 
)

◆ ksceKernelIsIntrAllowedInCurrentContext()

int ksceKernelIsIntrAllowedInCurrentContext ( int  intr_code)

◆ ksceKernelRegisterSubIntrHandler()

int ksceKernelRegisterSubIntrHandler ( int  intr_code,
int  subintr_code,
const char *  name,
SceKernelSubIntrHandler  handler,
void *  register_arg 
)

◆ ksceKernelReleaseSubIntrHandler()

int ksceKernelReleaseSubIntrHandler ( int  intr_code,
int  subintr_code 
)

◆ ksceKernelTriggerSubIntr()

int ksceKernelTriggerSubIntr ( int  intr_code,
int  subintr_code,
void *  subintr_arg 
)

◆ ksceKernelEnableSubIntr()

int ksceKernelEnableSubIntr ( int  intr_code,
int  subintr_code 
)

◆ ksceKernelDisableSubIntr()

int ksceKernelDisableSubIntr ( int  intr_code,
int  subintr_code 
)

◆ ksceKernelQueryIntrHandlerInfo()

int ksceKernelQueryIntrHandlerInfo ( unsigned int  intr_code,
unsigned int  a2,
int  a3 
)

◆ ksceKernelIsSubInterruptOccurred()

int ksceKernelIsSubInterruptOccurred ( int  intr_code,
int  subintr_code 
)

Query a subinterrupt controller's occurrence state.

The controller-specific callback registered for intr_code supplies the result. IntrMgr calls it while holding the parent interrupt's spinlock.

Parameters
[in]intr_code- Parent interrupt code, from 0 through 255.
[in]subintr_code- Subinterrupt index registered for the parent.
Returns
The controller-specific result, SCE_KERNEL_ERROR_ILLEGAL_INTRCODE for an invalid parent or subinterrupt index, or SCE_KERNEL_ERROR_NOTFOUND_HANDLER when the parent, operation table, or occurrence callback is not registered.

◆ ksceKernelRegisterIntrHookHandler()

int ksceKernelRegisterIntrHookHandler ( int  intr_code,
SceKernelIntrHookHandler  new_handler,
SceKernelIntrHookHandler *  old_handler 
)

Replace a registered primary interrupt handler with a hook.

Only one hook can be installed for each interrupt. On success, IntrMgr saves the current handler internally, writes it to old_handler, and atomically installs new_handler. The hook receives the interrupt code, the context supplied when the primary handler was registered, and the registered interrupt priority.

Parameters
[in]intr_code- Interrupt code, from 0 through 255.
[in]new_handler- Required replacement handler.
[out]old_handler- Required output that receives the replaced handler.
Returns
0 on success, SCE_KERNEL_ERROR_ILLEGAL_CONTEXT when installing a hook is not allowed in the current context, SCE_KERNEL_ERROR_ILLEGAL_INTRCODE for an invalid interrupt code, SCE_KERNEL_ERROR_ILLEGAL_HANDLER for a NULL new_handler, SCE_KERNEL_ERROR_INVALID_ARGUMENT for a NULL old_handler, SCE_KERNEL_ERROR_FOUND_HANDLER when a hook is already installed, or SCE_KERNEL_ERROR_NOTFOUND_HANDLER when no primary handler is registered.

◆ ksceKernelReleaseIntrHookHandler()

int ksceKernelReleaseIntrHookHandler ( int  intr_code)

Remove an interrupt hook and restore the internally saved primary handler.

Parameters
[in]intr_code- Interrupt code, from 0 through 255.
Returns
0 on success, SCE_KERNEL_ERROR_ILLEGAL_CONTEXT when removing a hook is not allowed in the current context, SCE_KERNEL_ERROR_ILLEGAL_INTRCODE for an invalid interrupt code, or SCE_KERNEL_ERROR_NOTFOUND_HANDLER when no hook is installed.

◆ ksceKernelResumeSubIntr()

int ksceKernelResumeSubIntr ( int  intr_code,
int  subintr_code,
int  state 
)

Call a subinterrupt controller's resume operation.

The controller-specific callback defines what state means and which results it returns for success or error.

Parameters
[in]intr_code- Parent interrupt code, from 0 through 255.
[in]subintr_code- Subinterrupt index registered for the parent.
[in]state- Controller-specific resume state.
Returns
The controller-specific result, SCE_KERNEL_ERROR_ILLEGAL_INTRCODE for an invalid parent or subinterrupt index, or SCE_KERNEL_ERROR_NOTFOUND_HANDLER when the parent, operation table, or resume callback is not registered.

◆ ksceKernelSuspendSubIntr()

int ksceKernelSuspendSubIntr ( int  intr_code,
int  subintr_code,
void *  arg 
)

Call a subinterrupt controller's suspend operation.

The controller-specific callback defines how arg is used and which results it returns for success or error. arg must be non-NULL. For example, SceSdif's implementation ignores arg and performs the same action as disabling that subinterrupt.

Parameters
[in]intr_code- Parent interrupt code, from 0 through 255.
[in]subintr_code- Subinterrupt index registered for the parent.
[in,out]arg- Required controller-specific argument.
Returns
The controller-specific result, SCE_KERNEL_ERROR_ILLEGAL_INTRCODE for an invalid parent or subinterrupt index, 0x80020001 for a NULL arg, or SCE_KERNEL_ERROR_NOTFOUND_HANDLER when the parent, operation table, or suspend callback is not registered.

Variable Documentation

◆ size [1/2]

uint32_t SceKernelIntrOptHandlers::size

◆ pre_register_subintr_cb

SceKernelIntrOptHandlersCb3* SceKernelIntrOptHandlers::pre_register_subintr_cb

◆ post_register_subintr_cb

SceKernelIntrOptHandlersCb3* SceKernelIntrOptHandlers::post_register_subintr_cb

◆ release_subintr_cb

SceKernelIntrOptHandlersCb1* SceKernelIntrOptHandlers::release_subintr_cb

◆ fptr0

SceKernelIntrOptHandlersCb1* SceKernelIntrOptHandlers::fptr0

◆ enable_subintr_cb

SceKernelIntrOptHandlersCb1* SceKernelIntrOptHandlers::enable_subintr_cb

◆ disable_subintr_cb

SceKernelIntrOptHandlersCb1* SceKernelIntrOptHandlers::disable_subintr_cb

◆ fptr3

SceKernelIntrOptHandlersCb2* SceKernelIntrOptHandlers::fptr3

◆ fptr4

SceKernelIntrOptHandlersCb1* SceKernelIntrOptHandlers::fptr4

◆ fptr5

SceKernelIntrOptHandlersCb1* SceKernelIntrOptHandlers::fptr5

◆ size [2/2]

uint32_t SceKernelIntrOptParam::size

◆ num

uint32_t SceKernelIntrOptParam::num

◆ handlers

SceKernelIntrOptHandlers* SceKernelIntrOptParam::handlers

◆ unk_C

uint32_t SceKernelIntrOptParam::unk_C

◆ unk_10

uint32_t SceKernelIntrOptParam::unk_10