VOS_VOID IMM_RbRemoteFreeMem(VOS_VOID *pucAddr) { VOS_UINT32 ulResult; VOS_UINT32 ulNum; VOS_INT32 lIsrRet; /* 中断操作返回值 */ VOS_ULONG ulFlags = 0UL; if ( VOS_NULL_PTR == pucAddr ) { VOS_SpinLockIntLock(&g_stImmRbSpinLock, ulFlags); g_stImmMemFreeMntnEntity.ulImmMemExtFreeFailCnt++; VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_WARNING, "IMM_RB, IMM_RbRemoteFreeMem, pucAddr is Null!\n"); return; } VOS_SpinLockIntLock (&g_stImmRbSpinLock, ulFlags); /* 将TTF_MEM地址放入释放队列 */ ulResult = LUP_EnSharedQueAcpu(g_pstAcpuTTFMemFreeQue, pucAddr); g_stImmMemRbMntnEntity.ulImmMemRbEnQTotalCnt++; ulNum = LUP_QueCnt(g_pstAcpuTTFMemFreeQue); VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); if (PS_SUCC != ulResult) { VOS_SpinLockIntLock (&g_stImmRbSpinLock, ulFlags); g_stImmMemRbMntnEntity.ulImmMemRbEnQFailCnt++; VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "ERROR:IMM_RbRemoteFreeMem: LUP_EnSharedQueAcpu fail!\n"); } #ifndef WTTF_PS_FUSION_PC_ST if ( 0 == (ulNum & g_ulFreeIMMMemBlkNoticNum)) { /* 触发IPC中断 */ lIsrRet = IMM_MEM_TRIG_IPC_MEMRB_INT(IPC_CORE_COMARM, IMM_IPC_MEM_RECYCLE_INT); VOS_SpinLockIntLock (&g_stImmRbSpinLock, ulFlags); g_stImmMemRbMntnEntity.ulImmMemRbSendIntCnt++; VOS_SpinUnlockIntUnlock(&g_stImmRbSpinLock, ulFlags); if (lIsrRet != VOS_OK) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "ERROR:IMM_RbRemoteFreeMem: mdrv_ipc_int_send fail!\n"); } } #else lIsrRet = VHW_IPC_IntSend((IPC_INT_CORE_E)IPC_CORE_COMARM, (IPC_INT_LEV_E)IPC_INT_DICC_RELDATA); g_stImmMemRbMntnEntity.ulImmMemRbSendIntCnt++; if (lIsrRet != VOS_OK) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "ERROR:IMM_RbRemoteFreeMem: mdrv_ipc_int_send fail!\n"); } #endif return; }/*IMM_RbRemoteFreeMem*/
VOS_VOID TTF_MemRbRemoteFreeMem( VOS_VOID *pucAddr) { VOS_ULONG ulLockLevel; VOS_UINT32 ulResult; VOS_UINT32 ulNum; VOS_INT32 lIsrRet; /* 中断操作返回值 */ VOS_SpinLockIntLock(&g_stTtfMemRBSpinLock, ulLockLevel); ulResult = LUP_EnQue(g_pstCcpuIMMMemFreeQue, pucAddr); g_stTtfMemRbMntnEntity.ulTtfMemRbEnQTotalCnt++; ulNum = LUP_QueCnt(g_pstCcpuIMMMemFreeQue); VOS_SpinUnlockIntUnlock(&g_stTtfMemRBSpinLock, ulLockLevel); if (PS_SUCC != ulResult) { g_stTtfMemRbMntnEntity.ulTtfMemRbEnQFailCnt++; vos_printf("TTF_MemRbRemoteFreeMem: LUP_EnQue fail!\n"); } #ifndef WTTF_PS_FUSION_PC_ST if ( 0 == (g_ulFreeTtfMemBlkNoticNum & ulNum)) { lIsrRet = TTF_MEM_TRIG_IPC_MEMRB_INT(IPC_CORE_APPARM, TTF_IPC_MEM_RECYCLE_INT); g_stTtfMemRbMntnEntity.ulTtfMemRbSendIntCnt++; if (lIsrRet != VOS_OK) { TTF_LOG(UEPS_PID_TTF_MEM_RB_FREE, PS_PRINT_ERROR, "ERROR:TTF_MemRbRemoteFreeMem: DRV_IPC_INTSEND fail!\n"); } } #else lIsrRet = VHW_IPC_IntSend((IPC_INT_CORE_E)IPC_CORE_APPARM, (IPC_INT_LEV_E)IPC_INT_DICC_RELDATA); g_stTtfMemRbMntnEntity.ulTtfMemRbSendIntCnt++; if (lIsrRet != VOS_OK) { TTF_LOG(UEPS_PID_TTF_MEM_RB_FREE, PS_PRINT_ERROR, "ERROR:TTF_MemRbRemoteFreeMem: DRV_IPC_INTSEND fail!\n"); } #endif return; }/*TTF_MemRbRemoteFreeMem*/