L4A_RX_INFO_STRU* l4a_GetExeCmdNode(VOS_UINT32 ulMsgId,VOS_UINT32 ulFlag) { LIST_S* pHeadNode = NULL; L4A_RX_INFO_STRU* pTempNode = NULL; LIST_S* me = NULL; /* 获取链表头 */ pHeadNode= l4a_GetNodeHead(); /*添加信号量保护*/ /* coverity[check_return] */ VOS_SmP(g_ulL4aNodeSem,0); /* 在链表中查找每个子命令结点*/ blist_for_each(me, pHeadNode) { pTempNode = blist_entry(me, L4A_RX_INFO_STRU, HiL4aList); L4A_INFO_LOG("%s, msgid req 0x%x, cnf 0x%x.\n",__FUNCTION__, pTempNode->ulReqMsgId, pTempNode->ulCnfMsgId); /* 找到需要的节点*/ if (((L4A_REQ_FLAG == ulFlag)&&(ulMsgId == pTempNode->ulReqMsgId))|| \ ((L4A_CNF_FLAG == ulFlag)&&(ulMsgId == pTempNode->ulCnfMsgId))) { VOS_SmV(g_ulL4aNodeSem); return pTempNode; } }
DIAG_PORT_DATA_BUF_STRU * diag_PortGetNodeFromDataBuf(VOS_VOID) { DIAG_PORT_DATA_BUF_STRU * pNode = NULL; (VOS_VOID)VOS_SmP(g_diagPortSem,0); if(ERR_MSP_SUCCESS == diag_PortDataBufIsEmpty()) { (VOS_VOID)VOS_SmV(g_diagPortSem); return NULL; } pNode = blist_entry(g_diagPortDataBuf.dataList.next, DIAG_PORT_DATA_BUF_STRU, dataList); blist_del(&pNode->dataList); (VOS_VOID)VOS_SmV(g_diagPortSem); return pNode; }