示例#1
0
/*!
 *  ======== InterruptArp32_intUnregister ========
 */
Void InterruptArp32_intUnregister(UInt16 remoteProcId,
                                   IInterrupt_IntInfo *intInfo)
{
    UInt16 index;
    UInt   mbxIdx;
    Hwi_Handle  hwiHandle;
    InterruptArp32_FxnTable *table;

    index = PROCID(remoteProcId);

    if ((remoteProcId == DSP0_ID) || (remoteProcId == BENELLI_CORE0_ID)) {
        mbxIdx = 0;
    }
    else if ((remoteProcId == DSP1_ID) || (remoteProcId == BENELLI_CORE1_ID)) {
        mbxIdx = 1;
    }
    else if (remoteProcId < InterruptArp32_NUM_EVES) {
        mbxIdx = 2;
    }

    /* Disable the mailbox interrupt source */
    InterruptArp32_intDisable(remoteProcId, intInfo);

    InterruptArp32_module->numPlugged[mbxIdx]--;
    if (InterruptArp32_module->numPlugged[mbxIdx] == 0) {
        /* Delete the Hwi */
        hwiHandle = Hwi_getHandle(InterruptArp32_eveInterruptTable[index]);
        Hwi_delete(&hwiHandle);
    }

    /* Clear the FxnTable entry for the remote processor */
    table = &(InterruptArp32_module->fxnTable[index]);
    table->func = NULL;
    table->arg  = 0;
}
示例#2
0
/*!
 *  ======== InterruptArp32_intUnregister ========
 */
Void InterruptArp32_intUnregister(UInt16 remoteProcId,
                                   IInterrupt_IntInfo *intInfo)
{
    Hwi_Handle  hwiHandle;
    InterruptArp32_FxnTable *table;

    /* Disable the mailbox interrupt source */
    InterruptArp32_intDisable(remoteProcId, intInfo);

    InterruptArp32_module->numPlugged--;
    if (InterruptArp32_module->numPlugged == 0) {
        /* Delete the Hwi */
        hwiHandle = Hwi_getHandle(intInfo->intVectorId);
        Hwi_delete(&hwiHandle);
    }

    /* Clear the FxnTable entry for the remote processor */
    table = &(InterruptArp32_module->fxnTable);
    table->func = NULL;
    table->arg  = 0;
}