src/lib/occlib/ipc_ping.c
//Note: This runs in a critical interrupt on the 405 but SSX functions
//      can not be called from a critical interrupt.  Instead, it must be
//      deferred to a non-critical handler.
This runs in a critical interrupt on the 405 but SSX functions
can not be called from a critical interrupt.  Instead, it must be
deferred to a non-critical handler.
This runs in a critical interrupt on the 405 but SSX functions can not be called from a critical interrupt . Instead it must be deferred to a non - critical handler .
void ipc_ping_response(ipc_msg_t* rsp, void* arg)
{
    ipc_ping_cmd_t* ping_cmd = (ipc_ping_cmd_t*)rsp;
    if(KERN_CONTEXT_CRITICAL_INTERRUPT())
    {
        IPC_DEFER_TO_NONCRITICAL(rsp);
    }
    else
    {
        KERN_SEMAPHORE_POST(&ping_cmd->sem);
        ipc_free_msg(&ping_cmd->msg);
    }
}
void ipc_ping_response ( ipc_msg_t * rsp , void * arg ) { ipc_ping_cmd_t * ping_cmd = ( ipc_ping_cmd_t * ) rsp ; if ( KERN_CONTEXT_CRITICAL_INTERRUPT ( ) ) { IPC_DEFER_TO_NONCRITICAL ( rsp ) ; } else { KERN_SEMAPHORE_POST ( & ping_cmd -> sem ) ; ipc_free_msg ( & ping_cmd -> msg ) ; } }
Note: This runs in a critical interrupt on the 405 but SSX functions
can not be called from a critical interrupt.
Note : This runs in a critical interrupt on the 405 but SSX functions can not be called from a critical interrupt .
//NOTE: this is a no-op on PPE