/***************************************************************************** 函 数 名 : IMM_ZcRemoveMacHead 功能描述 : 移除零拷贝结构MAC头 输入参数 : IMM_ZC_STRU *pstImmZc 输出参数 : 无 返 回 值 : VOS_OK 添加成功 VOS_ERR 添加失败 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011年12月2日 修改内容 : Created *****************************************************************************/ unsigned long IMM_ZcRemoveMacHead(IMM_ZC_STRU *pstImmZc) { IMM_DEBUG_TRACE_FUNC_ENTER(); if ( NULL == pstImmZc ) { IMM_LOG(UEPS_PID_IMM_RB_RECYCLE, IMM_PRINT_ERROR, "IMM_ZcRemoveMacHead pstImmZc ptr is null! \n"); return VOS_ERR; } if ( IMM_MAC_HEADER_RES_LEN > (pstImmZc->tail - pstImmZc->data) ) { IMM_LOG2(UEPS_PID_IMM_RB_RECYCLE, IMM_PRINT_ERROR, "IMM_ZcRemoveMacHead invalid data Len! tail = 0x%x, data = 0x%x \n", (VOS_INT32)pstImmZc->tail, (VOS_INT32)pstImmZc->data); return VOS_ERR; } IMM_ZcPull(pstImmZc, IMM_MAC_HEADER_RES_LEN); IMM_DEBUG_TRACE_FUNC_LEAVE(); return VOS_OK; }
VOS_VOID IMM_MntnMemTraceInfoRptSaveMemData ( VOS_UINT8 ucPoolId, IMM_BLK_MEM_TRACE_INFO_STRU *pstBlkMemTraceInfo, IMM_MEM_STRU *pMem ) { if ( ucPoolId != pMem->enPoolId ) { IMM_LOG2(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "IMM_MntnMemTraceInfoRptSaveMemData, ucPoolId %d, pMem->enPoolId %d Mismatch! \n", ucPoolId, pMem->enPoolId); return; } if ( IMM_MEM_POOL_ID_SHARE == ucPoolId ) { if ( NULL != pMem->pstMemBlk ) { pstBlkMemTraceInfo->aucMemData[0] = pMem->pstMemBlk[0]; pstBlkMemTraceInfo->aucMemData[1] = pMem->pstMemBlk[1]; pstBlkMemTraceInfo->aucMemData[2] = pMem->pstMemBlk[2]; pstBlkMemTraceInfo->aucMemData[3] = pMem->pstMemBlk[3]; } else { VOS_MemSet(pstBlkMemTraceInfo->aucMemData, 0, 4); IMM_LOG1(UEPS_PID_IMM_RB_FREE, IMM_PRINT_ERROR, "IMM_MntnMemTraceInfoRptSaveMemData, ucPoolId %d Mem Ptr is Null! \n", ucPoolId); } return; } if ( IMM_MEM_POOL_ID_EXT == ucPoolId ) { *((VOS_UINT32 *)pstBlkMemTraceInfo->aucMemData) = (VOS_UINT32)pMem->pstMemBlk; } return; }/* IMM_MntnMemTraceInfoRptSaveMemData */
/***************************************************************************** 函 数 名 : IMM_ZcAddMacHead 功能描述 : 给IMM_ZC_STRU 零拷贝结构添加MAC头 输入参数 : IMM_ZC_STRU *pstImmZc unsigned char* pucAddData VOS_UINT16 usLen 输出参数 : 无 返 回 值 : VOS_OK 添加成功 VOS_ERR 添加失败 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2011年12月2日 修改内容 : Created *****************************************************************************/ unsigned long IMM_ZcAddMacHead (IMM_ZC_STRU *pstImmZc, const unsigned char* pucAddData) { unsigned char *pucDestAddr; IMM_DEBUG_TRACE_FUNC_ENTER(); if ( NULL == pstImmZc ) { IMM_LOG(UEPS_PID_IMM_RB_RECYCLE, IMM_PRINT_ERROR, "IMM_ZcAddMacHead pstImmZc ptr is null! \n"); return VOS_ERR; } if ( NULL == pucAddData ) { IMM_LOG(UEPS_PID_IMM_RB_RECYCLE, IMM_PRINT_ERROR, "IMM_ZcAddMacHead pucData ptr is null! \n"); return VOS_ERR; } if( IMM_MAC_HEADER_RES_LEN > (pstImmZc->data - pstImmZc->head) ) { IMM_LOG2(UEPS_PID_IMM_RB_RECYCLE, IMM_PRINT_ERROR, "IMM_ZcAddMacHead invalid data Len! data = 0x%x, head = 0x%x \n", (VOS_INT32)pstImmZc->data, (VOS_INT32)pstImmZc->head); return VOS_ERR; } pucDestAddr = IMM_ZcPush(pstImmZc,IMM_MAC_HEADER_RES_LEN); memcpy(pucDestAddr,pucAddData,IMM_MAC_HEADER_RES_LEN); IMM_DEBUG_TRACE_FUNC_LEAVE(); return VOS_OK; }
VOS_VOID IMM_MntnPrintBlkMemPoolUsedInfo( IMM_MEM_POOL_STRU *pstImmMemPoolInfo ) { #if (FEATURE_ON == FEATURE_IMM_MEM_DEBUG) VOS_UINT16 usImmMemNum; IMM_BLK_MEM_DEBUG_STRU *pstImmMemDebugInfo; #endif IMM_MEM_STRU *pMem; if (VOS_NULL_PTR == pstImmMemPoolInfo) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_WARNING, "pstImmMemPoolInfo is NULL ! \n"); return ; } if (IMM_TRUE != pstImmMemPoolInfo->ucUsedFlag) { IMM_LOG(UEPS_PID_IMM_RB_FREE, IMM_PRINT_WARNING, "POOL not uesed ! \n"); return ; } pMem = pstImmMemPoolInfo->pstImmMemStStartAddr; IMM_LOG2(UEPS_PID_IMM_RB_FREE, IMM_PRINT_NORMAL, "Pool ID %u Blk Mem used %u \n", pMem->enPoolId, pstImmMemPoolInfo->usImmMemUsedCnt); if( IMM_FALSE == g_ucPrintDetail ) { return; } #if (FEATURE_ON == FEATURE_IMM_MEM_DEBUG) for (usImmMemNum = 0; usImmMemNum < pstImmMemPoolInfo->usImmMemTotalCnt; usImmMemNum ++) { pMem = pstImmMemPoolInfo->pstImmMemStStartAddr + usImmMemNum; pstImmMemDebugInfo = &pMem->stDbgInfo; if ( MEM_BLK_STATE_FREE != pstImmMemDebugInfo->enMemStateFlag) { IMM_LOG4(UEPS_PID_IMM_RB_FREE, IMM_PRINT_NORMAL, "Alloc: File %4d L %5d T %11u, Blk Mem Level: %4u, ", (VOS_INT32)pstImmMemDebugInfo->usAllocFileID, (VOS_INT32)pstImmMemDebugInfo->usAllocLineNum, (VOS_INT32)pstImmMemDebugInfo->ulAllocTick, usImmMemNum); /*lint -e713*/ IMM_LOG4(UEPS_PID_IMM_RB_FREE, IMM_PRINT_NORMAL, "Status: %d, Status: %d, TraceFile:%4d, TraceLine:%5d, TraceTick:%11d, \n", pstImmMemDebugInfo->enMemStateFlag, (VOS_INT32)pstImmMemDebugInfo->usTraceFileID, (VOS_INT32)pstImmMemDebugInfo->usTraceLineNum, (VOS_INT32)pstImmMemDebugInfo->ulTraceTick); /*lint +e713*/ /* 打印PDU内容 */ IMM_LOG1(UEPS_PID_IMM_RB_FREE, IMM_PRINT_NORMAL, "Data ptr: 0x%x\n ", (VOS_INT32)pMem->pstMemBlk); } } #endif }/* IMM_MntnPrintBlkMemPoolUsedInfo */