Ejemplo n.º 1
0
/*****************************************************************************
 Function   : V_IntUnlock
 Description: Turn on the interrupt
 Input      : CPSR
 Return     : void;
 Other      : none
 *****************************************************************************/
VOS_VOID V_IntUnlock(VOS_INT lLockKey)
{
    g_stVosIntLockNestedInfo.ulSuffix--;

    if ( VOS_NESTED_INTLOCK_MAX_NUM <= g_stVosIntLockNestedInfo.ulSuffix )
    {
        SRE_IntRestore((VOS_UINT32)lLockKey);

        return;
    }

    if ( VOS_INTLOCK_MAX_INTERVAL <
        (VOS_GetSlice() - g_stVosIntLockNestedInfo.astNestedInfo[g_stVosIntLockNestedInfo.ulSuffix].ulSlice) )
    {
         LogPrint2("# Info: intlock time too big.F %d L %d.\r\n",
            (VOS_INT32)g_stVosIntLockNestedInfo.astNestedInfo[g_stVosIntLockNestedInfo.ulSuffix].ulFile,
            (VOS_INT32)g_stVosIntLockNestedInfo.astNestedInfo[g_stVosIntLockNestedInfo.ulSuffix].lLine);
    }

    SRE_IntRestore((VOS_UINT32)lLockKey);

    return;
}
SINT32 SOS_SpinUnLock(SpinLockType spinLockType)
{
    SOS_IRQ_SPIN_LOCK *pSosSpinLock = NULL;

    pSosSpinLock = GetSpinLockByEnum(spinLockType);

    if (pSosSpinLock != NULL)
    {
        SRE_IntRestore(pSosSpinLock->irq_lock);
        return OSAL_OK;
    }
    else
    {
        return OSAL_ERR;
    }
}