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;
        }

    }
Пример #2
0
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;
}