亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? msgqdistgrplib.c

?? vxworks操作系統(tǒng)的源代碼 供研究學(xué)習(xí)
?? C
?? 第 1 頁 / 共 4 頁
字號:
* message queues option, VxFusion.** RETURNS: N/A** NOTE: Call with <distGrpDbSemaphore> taken.** NOMANUAL*/void msgQDistGrpLclSetId    (    DIST_GRP_DB_NODE *   pGrpDbNode,   /* the node to change */    DIST_MSG_Q_GRP_ID    grpId         /* the new ID */    )    {    DIST_OBJ_NODE *   pObjNode;    DIST_MSG_Q_ID     dMsgQId;    int               ix = pGrpDbNode->ixNode;    hashTblRemove (distGrpDbIdId, (HASH_NODE *) &(distGrpDbId[ix]));    pGrpDbNode->grpDbId = grpId;    pObjNode = MSG_Q_ID_TO_DIST_OBJ_NODE (pGrpDbNode->grpDbMsgQId);    dMsgQId = DIST_MSG_Q_GRP_ID_TO_DIST_MSG_Q_ID (grpId);    pObjNode->objNodeId = DIST_MSG_Q_ID_TO_DIST_OBJ_ID (dMsgQId);    hashTblPut (distGrpDbIdId, (HASH_NODE *) &(distGrpDbId[ix]));    }/***************************************************************************** msgQDistGrpLclCreate - create a new group in local database (VxFusion option)** This routine creates a new group in the local database.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: A ptr to the group node.** NOTE: Call with <distGrpDbSemaphore> taken.** NOMANUAL*/DIST_GRP_DB_NODE * msgQDistGrpLclCreate    (    char *               grpName,     /* group name */    DIST_MSG_Q_GRP_ID    grpId,       /* group ID */    DIST_GRP_STATE       grpState     /* initial state */    )    {    DIST_GRP_DB_NODE *   pDbNode;    DIST_OBJ_NODE *      pObjNode;    /* get a free database node */    if (! (pDbNode = (DIST_GRP_DB_NODE *) sllGet (&msgQDistGrpFreeList)))        {        return (NULL);    /* database is full */        }    /* init database node */    bcopy (grpName, (char *) &(pDbNode->grpDbName), strlen (grpName) + 1);    sllInit (&(pDbNode->grpDbMsgQIdLst));    pDbNode->grpDbState = grpState;    pDbNode->grpDbId = grpId;    pDbNode->pGrpDbGapNode = NULL;    /* Create message queue id. */    pObjNode = distObjNodeGet();    pObjNode->objNodeType    = DIST_OBJ_TYPE_MSG_Q;    pObjNode->objNodeId      = DIST_MSG_Q_GRP_ID_TO_DIST_OBJ_ID (grpId);    pDbNode->grpDbMsgQId = DIST_OBJ_NODE_TO_MSG_Q_ID (pObjNode);    /* Link group name hash node in name hash table. */    hashTblPut (distGrpDbNmId, (HASH_NODE *) &(distGrpDbNm[pDbNode->ixNode]));    /* Link group id hash node in id hash table. */    hashTblPut (distGrpDbIdId, (HASH_NODE *) &(distGrpDbId[pDbNode->ixNode]));#ifdef DIST_MSG_Q_GRP_REPORT    printf ("msgQDistGrpLclCreate: `%s' (id 0x%lx, state %d) created\n",            grpName, grpId, grpState);#endif    return (pDbNode);    }/***************************************************************************** msgQDistGrpLclAddMember - add a member to a group in the local database (VxFusion option)** This routine adds a member to a group in the local database.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, if the member was added; ERROR, if not.** NOMANUAL*/STATUS msgQDistGrpLclAddMember    (    DIST_GRP_DB_NODE * pDbNode,      /* ptr to node of group */    MSG_Q_ID           msgQId        /* msgQ ID to add to group */    )    {    DIST_GRP_MSG_Q_NODE * distGrpMsgQNode;    distGrpMsgQNode = (DIST_GRP_MSG_Q_NODE *)                        malloc (sizeof (DIST_GRP_MSG_Q_NODE));    if (distGrpMsgQNode == NULL)        return (ERROR);    /* out of memory */    distGrpMsgQNode->msgQId = msgQId;    msgQDistGrpDbLock();    sllPutAtHead (&(pDbNode->grpDbMsgQIdLst), (SL_NODE *) distGrpMsgQNode);    msgQDistGrpDbUnlock();    return (OK);    }/***************************************************************************** msgQDistGrpLclFindById - Find a group's node given in group ID (VxFusion option)** This routine looks up a group node when given the group ID.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: A pointer to a group node, or NULL.** NOTE: Take <distGrpDbSemaphore> before calling.** NOMANUAL*/DIST_GRP_DB_NODE * msgQDistGrpLclFindById    (    DIST_MSG_Q_GRP_ID distGrpId    /* the group ID to look for */    )    {    DIST_GRP_HASH_NODE    hMatchNode;    DIST_GRP_HASH_NODE *  pHNode;    DIST_GRP_DB_NODE      dbMatchNode;    hMatchNode.pDbNode = &dbMatchNode;    dbMatchNode.grpDbId = distGrpId;    pHNode = (DIST_GRP_HASH_NODE *) hashTblFind (distGrpDbIdId,                                                 (HASH_NODE *) &hMatchNode,                                                 KEY_CMP_ARG_ID);    if (pHNode == NULL)        return (NULL);    /* not found */    return (pHNode->pDbNode);    }/***************************************************************************** msgQDistGrpLclFindByName - Find a group node given a group name (VxFusion option)** This routine looks up a group node when given the name of the group.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: A pointer to a group node, or NULL.** NOTE: Call with <distGrpDbSemaphore> taken.** NOMANUAL*/DIST_GRP_DB_NODE * msgQDistGrpLclFindByName    (    char * grpName         /* group name to find */    )    {    DIST_GRP_HASH_NODE  hMatchNode, *pHNode;    DIST_GRP_DB_NODE    dbMatchNode;    hMatchNode.pDbNode = &dbMatchNode;    bcopy (grpName, (char *) &(dbMatchNode.grpDbName), strlen (grpName) + 1);    pHNode = (DIST_GRP_HASH_NODE *) hashTblFind (distGrpDbNmId,                                                 (HASH_NODE *) &hMatchNode,                                                 KEY_CMP_ARG_STR);    if (pHNode == NULL)        return (NULL);    /* not found */    return (pHNode->pDbNode);    }/***************************************************************************** msgQDistGrpLclEach - Step through nodes in the database (VxFusion option)** This routine steps through all nodes in the database, calling <routine>* with argument <routineArg> for each node.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: N/A** NOTE: Takes <distGrpDbSemaphore>.** NOMANUAL*/void msgQDistGrpLclEach    (    FUNCPTR routine,        /* routine to call for each node */    int     routineArg      /* argument to pass to routine */    )    {    msgQDistGrpDbLock();        hashTblEach (distGrpDbNmId, routine, routineArg);    msgQDistGrpDbUnlock();    }/***************************************************************************** msgQDistGrpBurst - burst out group database (VxFusion option)** This routine is used by INCO to update the remote group database on* node <nodeId>. All entries in the database are transmitted.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: STATUS of remote operation.** NOMANUAL*/STATUS msgQDistGrpBurst    (    DIST_NODE_ID    nodeId          /* node to update */    )    {    DIST_GRP_BURST    burst;    burst.burstNodeId = nodeId;    burst.burstStatus = OK;    msgQDistGrpLclEach ((FUNCPTR) msgQDistGrpBurstOne, (int) &burst);    return (burst.burstStatus);    }/***************************************************************************** msgQDistGrpBurstOne - burst out single group database entry (VxFusion option)** This routine bursts out a database entry to a node.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: TRUE, if successfully; FALSE, if not.** NOMANUAL*/BOOL msgQDistGrpBurstOne    (    DIST_GRP_HASH_NODE * pGrpHashNode,   /* specifies node to send */    DIST_GRP_BURST *     pBurst          /* target node */    )    {    DIST_PKT_DGDB_ADD    pktAdd;    DIST_GRP_DB_NODE *   pNode = pGrpHashNode->pDbNode;    DIST_IOVEC           distIOVec[2];    STATUS               status;    pktAdd.pktDgdbAddHdr.pktType = DIST_PKT_TYPE_DGDB;    pktAdd.pktDgdbAddHdr.pktSubType = DIST_PKT_TYPE_DGDB_ADD;    pktAdd.pktDgdbAddId = htons (pNode->grpDbId);    pktAdd.pktDgdbAddCreator = htonl (pNode->grpDbNodeId);    /* use IOV stuff here, since we do not want to copy data */    distIOVec[0].pIOBuffer = &pktAdd;    distIOVec[0].IOLen = DIST_PKT_HDR_SIZEOF (DIST_PKT_DGDB_ADD);    distIOVec[1].pIOBuffer = (char *) &pNode->grpDbName;    distIOVec[1].IOLen = strlen ((char *) &pNode->grpDbName) + 1;    status = distNetIOVSend (pBurst->burstNodeId, &distIOVec[0], 2,            WAIT_FOREVER, DIST_DGDB_PRIO);    if ((pBurst->burstStatus = status) == ERROR)        return (FALSE);    return (TRUE);    }/***************************************************************************** msgQDistGrpHCmpStr - determine if two nodes have the same name (VxFusion option)** This routine is the hash compare function for group names.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: TRUE, if the nodes have the same name; FALSE, otherwise.** NOMANUAL*/LOCAL BOOL msgQDistGrpHCmpStr    (    DIST_GRP_HASH_NODE * pMatchHNode,   /* first node */    DIST_GRP_HASH_NODE * pHNode,        /* second node */    int                  keyCmpArg      /* not used */    )    {        UNUSED_ARG(keyCmpArg);        if (strcmp ((char *) &pMatchHNode->pDbNode->grpDbName,                (char *) &pHNode->pDbNode->grpDbName) == 0)        return (TRUE);    else        return (FALSE);    }/***************************************************************************** msgQDistGrpHFuncStr - hash function for strings (VxFusion option)** This routine computes the hash value for a node's group name.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: The hash value.** NOMANUAL*/LOCAL INT32 msgQDistGrpHFuncStr    (    int                    elements,    /* elements in hash table */    DIST_GRP_HASH_NODE *   pHNode,      /* node whose name to hash */    int                    seed         /* seed for hashing */    )    {    char * tkey;    int    hash = 0;    for (tkey = (char *) &pHNode->pDbNode->grpDbName; *tkey != '\0'; tkey++)        hash = hash * seed + (unsigned int) *tkey;    return (hash & (elements - 1));    }/***************************************************************************** msgQDistGrpHCmpId - compare two group ID's (VxFusion option)** This routine is the hash compare function for group ID's.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: TRUE, if ID's match; FALSE, otherwise.** NOMANUAL*/LOCAL BOOL msgQDistGrpHCmpId    (    DIST_GRP_HASH_NODE *   pMatchNode,  /* first node */    DIST_GRP_HASH_NODE *   pHNode,      /* second node */    int                    keyArg       /* unused */    )    {    DIST_MSG_Q_GRP_ID    distGrpId1 = pMatchNode->pDbNode->grpDbId;    DIST_MSG_Q_GRP_ID    distGrpId2 = pHNode->pDbNode->grpDbId;        UNUSED_ARG(keyArg);        if (distGrpId1 == distGrpId2)        return (TRUE);    else        return (FALSE);    }/***************************************************************************** msgQDistGrpHFuncId - hash function for group ID's (VxFusion option)** This routine computes a hash value for a group's ID.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: The hash value.** NOMANUAL*/LOCAL INT32 msgQDistGrpHFuncId    (    int                    elements,   /* elements in hash table */    DIST_GRP_HASH_NODE *   pHNode,     /* node whose ID to hash */    int                    divisor     /* used by hash computation */    )    {    return ((pHNode->pDbNode->grpDbId % divisor) & (elements - 1));    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av激情综合网| 亚洲国产人成综合网站| 亚洲一级二级三级在线免费观看| 日本中文一区二区三区| 91日韩一区二区三区| 久久久精品天堂| 日韩制服丝袜先锋影音| 一本一道综合狠狠老| 亚洲国产精品99久久久久久久久| 日韩国产精品久久| 欧美亚洲日本国产| 亚洲天天做日日做天天谢日日欢| 经典三级视频一区| 日韩一级高清毛片| 五月婷婷欧美视频| 欧美三级在线看| 亚洲欧美在线视频| 国产精品一区二区在线播放| 日韩亚洲欧美高清| 首页国产欧美久久| 欧美人xxxx| 午夜精品福利在线| 精品久久久久久久久久久久包黑料| 亚洲码国产岛国毛片在线| 国产成人综合亚洲91猫咪| 日韩欧美一区电影| 男女激情视频一区| 精品日本一线二线三线不卡| 日本vs亚洲vs韩国一区三区 | 久久久久国产一区二区三区四区 | 日韩精品一区国产麻豆| 日本午夜一区二区| 欧美一区二区三区免费| 蜜桃视频免费观看一区| 日韩免费观看2025年上映的电影| 日韩福利电影在线| 欧美欧美欧美欧美| 日本成人超碰在线观看| 欧美不卡在线视频| 国产电影精品久久禁18| 国产欧美日韩精品a在线观看| 成人午夜视频免费看| 中文字幕一区二区三区在线播放| 91色九色蝌蚪| 五月激情六月综合| 26uuu亚洲综合色| 国产精品1区2区3区在线观看| 欧美国产日韩亚洲一区| 91在线精品秘密一区二区| 亚洲一区二区三区四区在线| 9191成人精品久久| 国产一区二区三区电影在线观看| 国产女人18毛片水真多成人如厕 | 国产精品一二三在| 国产精品色噜噜| 欧美在线免费观看亚洲| 日韩—二三区免费观看av| 日韩午夜在线影院| 粉嫩嫩av羞羞动漫久久久| 亚洲精品精品亚洲| 精品国产乱码久久| 一本一道久久a久久精品| 日本欧美一区二区三区| 国产清纯美女被跳蛋高潮一区二区久久w| 成人激情视频网站| 日本va欧美va精品| 亚洲欧美综合另类在线卡通| 日韩一区二区三区在线观看| k8久久久一区二区三区| 轻轻草成人在线| 中文字幕在线一区免费| 欧美一区二区在线免费播放| 成人免费福利片| 麻豆专区一区二区三区四区五区| 国产三区在线成人av| 欧美视频精品在线| av欧美精品.com| 国精产品一区一区三区mba桃花| 亚洲欧美偷拍三级| 精品播放一区二区| 欧美性色黄大片| 国产 欧美在线| 日本免费在线视频不卡一不卡二| 最新久久zyz资源站| 久久久精品免费观看| 337p亚洲精品色噜噜| 91亚洲国产成人精品一区二三| 狠狠色狠狠色综合系列| 婷婷六月综合亚洲| 一区二区成人在线| 国产精品久99| 国产性色一区二区| 精品欧美久久久| 欧美日本在线播放| 色婷婷久久久亚洲一区二区三区| 国产成人啪免费观看软件| 日韩av中文字幕一区二区三区 | 国产精品久久久久久久久免费丝袜 | 日韩精品一区二区三区老鸭窝 | 一本大道久久a久久综合| 国产不卡视频在线播放| 日本中文字幕一区二区有限公司| 亚洲午夜一二三区视频| 中文字幕一区二区三区在线观看| 中文欧美字幕免费| 中文字幕va一区二区三区| 国产日韩欧美精品一区| 国产日产欧美一区| 久久精品欧美一区二区三区不卡| 欧美成人国产一区二区| 欧美一区二区三区四区在线观看| 欧美日产在线观看| 91精品免费观看| 欧美一级二级三级蜜桃| 日韩欧美高清在线| 日韩午夜激情av| 精品国产一区a| 国产日韩精品一区二区三区在线| 国产欧美日韩激情| ㊣最新国产の精品bt伙计久久| 综合久久国产九一剧情麻豆| 中文字幕中文字幕一区| 一区二区三区在线视频免费| 亚洲综合区在线| 亚洲成a人片综合在线| 午夜精品久久久久久久| 久久精品99国产精品| 国产精品996| 成人av在线网| 在线观看免费成人| 欧美一区二区三区视频在线观看 | 欧美日韩色综合| 欧美一级在线观看| 国产欧美一区二区三区在线老狼 | 美女一区二区视频| 国产不卡在线播放| 91精品福利视频| 欧美精品九九99久久| 久久影院电视剧免费观看| 亚洲国产精品激情在线观看| 一区二区三区精品视频| 日韩福利视频导航| 成人免费黄色大片| 欧美日本乱大交xxxxx| 欧美变态tickling挠脚心| 国产精品午夜春色av| 午夜精品久久久久久久久久| 国产精品一级黄| 欧美日韩精品二区第二页| 2017欧美狠狠色| 亚洲国产精品一区二区尤物区| 美女视频一区在线观看| www.激情成人| 精品国产乱子伦一区| 亚洲色图欧美在线| 国产一区二区网址| 欧美性色综合网| 中国色在线观看另类| 青娱乐精品视频在线| 色噜噜狠狠一区二区三区果冻| 精品国产乱码久久| 午夜精品成人在线视频| 不卡一二三区首页| 欧美一级爆毛片| 亚洲自拍偷拍图区| 国产成人av电影在线播放| 3atv一区二区三区| 亚洲宅男天堂在线观看无病毒| 韩国毛片一区二区三区| 欧美高清视频一二三区| 亚洲人成网站在线| 国产成都精品91一区二区三| 欧美一区午夜视频在线观看 | 洋洋成人永久网站入口| 国产高清精品网站| 日韩美一区二区三区| 亚洲韩国精品一区| 9人人澡人人爽人人精品| 日韩欧美一二三区| 天堂午夜影视日韩欧美一区二区| 99精品视频在线观看| 国产婷婷精品av在线| 激情综合网最新| 欧美一区在线视频| 日韩中文字幕av电影| 欧美日韩一区视频| 亚洲一区二区三区中文字幕| 成人av中文字幕| 国产精品久久久久久久久免费丝袜| 激情五月播播久久久精品| 日韩一区二区影院| 日本亚洲三级在线| 欧美特级限制片免费在线观看| 亚洲色图另类专区| 99re热这里只有精品免费视频| 国产精品网曝门| 波多野结衣精品在线| 国产精品免费视频一区| 成人午夜视频在线观看| 中文字幕在线不卡|