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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? msgqdistgrplib.c

?? vxworks操作系統的源代碼 供研究學習
?? C
?? 第 1 頁 / 共 4 頁
字號:
     if (inquiryNode.sendInqStatus != MSG_Q_DIST_GRP_STATUS_OK)        return (ERROR);    return (OK);    }/***************************************************************************** msgQDistGrpAgent - send an inquiry to a group (VxFusion option)** This routine sends an inquiry message to a message group.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, if successfully sent; ERROR, if not sent.** NOMANUAL*/LOCAL STATUS msgQDistGrpAgent    (    DIST_NODE_ID            nodeIdSender,   /* node id of the sender  */    DIST_INQ_ID             inqIdSender,    /* inquiry id at sender   */    DIST_MSG_Q_GRP_ID       distMsgQGrpId,  /* group on which to send */    char *                  buffer,         /* message to send        */    UINT                    nBytes,         /* length of message      */    int                     timeout,        /* ticks to wait          */    int                     priority        /* priority               */    )    {    DIST_MSG_Q_GRP_SEND_INQ    inquiryNode;    /*     * Our caller cannot wait, so we have to create     * the inquiry id.     */    inquiryNode.sendInq.inqType = DIST_MSG_Q_GRP_INQ_TYPE_SEND;    semBInit (&inquiryNode.sendInqWait, SEM_Q_FIFO, SEM_EMPTY);    /* inquiryNode.sendInqTask = taskIdSelf(); */    inquiryNode.sendInqNumBlocked = 0;    inquiryNode.sendInqNumOutstanding = 1;    inquiryNode.sendInqStatus = MSG_Q_DIST_GRP_STATUS_OK;    distInqRegister ((DIST_INQ *) &inquiryNode);    if (msgQDistGrpLclSend (&inquiryNode, distMsgQGrpId, buffer, nBytes,            timeout, priority) == ERROR)        {        free (buffer);        msgQDistGrpSendStatus (nodeIdSender, inqIdSender,                MSG_Q_DIST_GRP_STATUS_ILLEGAL_OBJ_ID);        return (ERROR);        }    semTake (&inquiryNode.sendInqWait, WAIT_FOREVER);        distInqCancel ((DIST_INQ *) &inquiryNode);        free (buffer);    if (inquiryNode.sendInqStatus != MSG_Q_DIST_GRP_STATUS_OK)        {#ifdef MSG_Q_DIST_GRP_REPORT        printf ("msgQDistGrpAgent: something failed\n");#endif        msgQDistGrpSendStatus (nodeIdSender, inqIdSender,                (INT16) inquiryNode.sendInqStatus);        return (ERROR);        }#ifdef MSG_Q_DIST_GRP_REPORT    printf ("msgQDistGrpAgent: respond with OK\n");#endif    msgQDistGrpSendStatus (nodeIdSender, inqIdSender,            MSG_Q_DIST_GRP_STATUS_OK);    return (OK);    }/***************************************************************************** msgQDistGrpSendStatus - send status and errno (VxFusion option)** This routine sends local status to an inquirying node.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, if status sent; ERROR, if not sent.** NOMANUAL*/LOCAL STATUS msgQDistGrpSendStatus    (    DIST_NODE_ID        nodeIdDest,   /* node ID of destination */    DIST_INQ_ID         inqId,        /* the inquiry ID */    DIST_MSG_Q_STATUS   dStatus       /* status to send */    )    {    DIST_PKT_MSG_Q_GRP_STATUS    pktStatus;    STATUS                        status;    pktStatus.pktMsgQGrpStatusHdr.pktType = DIST_PKT_TYPE_MSG_Q_GRP;    pktStatus.pktMsgQGrpStatusHdr.pktSubType = DIST_PKT_TYPE_MSG_Q_GRP_STATUS;    pktStatus.pktMsgQGrpStatusInqId = htonl ((uint32_t) inqId);    pktStatus.pktMsgQGrpStatusErrno = htonl ((uint32_t) errnoGet());    pktStatus.pktMsgQGrpStatusDStatus = htons ((uint16_t) dStatus);    status = distNetSend (nodeIdDest, (DIST_PKT *) &pktStatus,                          DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_STATUS),                          WAIT_FOREVER, DIST_MSG_Q_GRP_PRIO);    return (status);    }/***************************************************************************** msgQDistGdbInput - called for distributed group database updates (VxFusion option)** This routine updates the local group database.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: Status of update.** NOMANUAL*/LOCAL DIST_STATUS msgQDistGdbInput    (    DIST_NODE_ID    nodeIdSrc,   /* unused */    DIST_TBUF_HDR * pTBufHdr     /* ptr to received TBUF header */    )    {    DIST_PKT * pPkt;    int        pktLen;    DIST_PKT_DGDB_ADD    pktAdd;    DIST_MSG_Q_GRP_ID    grpId;    DIST_GRP_DB_NODE *   pDbNodeNew;    DIST_NODE_ID         grpCreator;    char                 grpName[DIST_NAME_MAX_LENGTH + 1];    int                  sz;        UNUSED_ARG(nodeIdSrc);        pktLen = pTBufHdr->tBufHdrOverall;    if (pktLen < sizeof (DIST_PKT))        distPanic ("msgQDistGdbInput: packet too short\n");    pPkt = (DIST_PKT *) (DIST_TBUF_GET_NEXT (pTBufHdr))->pTBufData;    switch (pPkt->pktSubType)        {        case DIST_PKT_TYPE_DGDB_ADD:            {            if (pktLen < DIST_PKT_HDR_SIZEOF (DIST_PKT_DGDB_ADD))                distPanic ("msgQDistGdbInput: packet too short\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr), 0, (char *) &pktAdd,                          DIST_PKT_HDR_SIZEOF (DIST_PKT_DGDB_ADD));                        if ((sz = pktLen - DIST_PKT_HDR_SIZEOF (DIST_PKT_DGDB_ADD)) >                    DIST_NAME_MAX_LENGTH + 1)                distPanic ("msgQDistGdbInput: name too long\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                          DIST_PKT_HDR_SIZEOF (DIST_PKT_DGDB_ADD),                          (char *) &grpName, sz);            grpId = ntohs (pktAdd.pktDgdbAddId);            grpCreator = ntohl (pktAdd.pktDgdbAddCreator);            if (grpId >= distGrpIdNext)                distGrpIdNext = grpId + 1;#ifdef MSG_Q_DIST_GRP_REPORT            printf ("msgQDistGrpInput: group database add from node %ld\n",                    nodeIdSrc);            printf ("msgQDistGrpInput: bind `%s' to group id %d\n",                    (char *) &grpName, grpId);#endif            msgQDistGrpDbLock();            pDbNodeNew = msgQDistGrpLclCreate ((char *) &grpName, grpId,                                               DIST_GRP_STATE_GLOBAL);            if (pDbNodeNew == NULL)                {                msgQDistGrpDbUnlock();                distPanic ("msgQDistGdbInput: group creation failed\n");                }            msgQDistGrpLclSetCreator (pDbNodeNew, grpCreator);            msgQDistGrpDbUnlock();            return (DIST_GDB_STATUS_OK);            }        default:            return (DIST_GDB_STATUS_PROTOCOL_ERROR);        }    }/***************************************************************************** msgQDistGrpInput - called when a new group message arrives at the system (VxFusion option)** This routine is called whenever a group message is received.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: Status of message processing.** NOMANUAL*/LOCAL DIST_STATUS msgQDistGrpInput    (    DIST_NODE_ID    nodeIdSrc,        /* source node ID */    DIST_TBUF_HDR * pTBufHdr          /* ptr to message */    )    {    DIST_PKT * pPkt;    int        pktLen;    DIST_PKT_MSG_Q_GRP_SEND  pktSend;    DIST_MSG_Q_GRP_ID        dMsgQGrpId;    DIST_GRP_DB_NODE *       pDistGrpDbNode;    DIST_INQ_ID              inqIdSrc;    uint32_t                 timeout_msec;    UINT                     nBytes;    char *                   buffer;    int                      tid;    int                      timeout;    int                      prio;    DIST_PKT_MSG_Q_GRP_STATUS    pktStatus;    DIST_STATUS                  dStatus;    DIST_INQ_ID                  inqId;    DIST_INQ *                   pGenInq;    int                          errnoRemote;    DIST_MSG_Q_GRP_SEND_INQ *    pInq;    pktLen = pTBufHdr->tBufHdrOverall;    if (pktLen < sizeof (DIST_PKT))        distPanic ("msgQDistGrpInput: packet too short\n");    pPkt = (DIST_PKT *) ((DIST_TBUF_GET_NEXT (pTBufHdr))->pTBufData);    switch (pPkt->pktSubType)        {        case DIST_PKT_TYPE_MSG_Q_GRP_SEND:            {            if (pktLen < DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_SEND))                 distPanic ("msgQDistGrpInput/SEND: packet too short\n");            distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr), 0, (char *)&pktSend,                          DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_SEND));            inqIdSrc = (DIST_INQ_ID)                        htonl(pktSend.pktMsgQGrpSendInqId);            timeout_msec = ntohl (pktSend.pktMsgQGrpSendTimeout);            timeout = DIST_MSEC_TO_TICKS (timeout_msec);            nBytes = pktLen - DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_SEND);            dMsgQGrpId = ntohs (pktSend.pktMsgQGrpSendId);            /* Check for an empty group */            msgQDistGrpDbLock();            pDistGrpDbNode = msgQDistGrpLclFindById (dMsgQGrpId);            msgQDistGrpDbUnlock();            if (pDistGrpDbNode == NULL)                {                msgQDistGrpSendStatus (nodeIdSrc, inqIdSrc,                                       MSG_Q_DIST_GRP_STATUS_UNAVAIL);                return (MSG_Q_DIST_GRP_STATUS_UNAVAIL);                }            if (SLL_FIRST ((SL_LIST *)&pDistGrpDbNode->grpDbMsgQIdLst)                        == NULL)                {                msgQDistGrpSendStatus (nodeIdSrc, inqIdSrc,                                       MSG_Q_DIST_GRP_STATUS_OK);#ifdef MSG_Q_DIST_GRP_REPORT                printf ("msgQDistGrpInput/SEND: group has no local members\n");#endif                return (MSG_Q_DIST_GRP_STATUS_OK);                }            /* Using malloc() here is not very satisfiing. */            if ((buffer = (char *) malloc (nBytes)) == NULL)                {#ifdef MSG_Q_DIST_GRP_REPORT                printf ("msgQDistGrpInput/SEND: out of memory\n");#endif                msgQDistGrpSendStatus (nodeIdSrc,                                    inqIdSrc,                                    MSG_Q_DIST_GRP_STATUS_NOT_ENOUGH_MEMORY);                distStat.memShortage++;                distStat.msgQGrpInDiscarded++;                return (MSG_Q_DIST_GRP_STATUS_NOT_ENOUGH_MEMORY);                }                distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr),                          DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_SEND),                          buffer, nBytes);            prio = NET_PRIO_TO_DIST_MSG_Q_PRIO (pTBufHdr->tBufHdrPrio);#ifdef MSG_Q_DIST_GRP_REPORT            printf ("msgQDistGrpInput: message from node %ld to group 0x%x\n",                    nodeIdSrc, dMsgQGrpId);#endif            /*             * Send message to all members, registrated on the local node for             * this group.             */            tid = taskSpawn (NULL,                            DIST_MSG_Q_GRP_WAIT_TASK_PRIO,                            0,                            DIST_MSG_Q_GRP_WAIT_TASK_STACK_SZ,                            (FUNCPTR) msgQDistGrpAgent,                            (int) nodeIdSrc,                            (int) inqIdSrc,                            (int) dMsgQGrpId,                            (int) buffer,                            (int) nBytes,                            (int) timeout,                            (int) prio,                            0, 0, 0);            if (tid == ERROR)                {                free (buffer);                msgQDistGrpSendStatus (nodeIdSrc, inqIdSrc,                                       MSG_Q_DIST_GRP_STATUS_UNAVAIL);                return (MSG_Q_DIST_GRP_STATUS_UNAVAIL);                }            return (MSG_Q_DIST_GRP_STATUS_OK);            }        case DIST_PKT_TYPE_MSG_Q_GRP_STATUS:            {            if (pktLen != DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_STATUS))                distPanic ("msgQDistGrpInput/STATUS: packet too short\n");            /* First copy the error packet form the TBuf list. */                        distTBufCopy (DIST_TBUF_GET_NEXT (pTBufHdr), 0,                          (char *) &pktStatus,                          DIST_PKT_HDR_SIZEOF (DIST_PKT_MSG_Q_GRP_STATUS));            dStatus = (DIST_STATUS) ntohs (pktStatus.pktMsgQGrpStatusDStatus);            errnoRemote = ntohl (pktStatus.pktMsgQGrpStatusErrno);            inqId = (DIST_INQ_ID) ntohl (pktStatus.pktMsgQGrpStatusInqId);            if (! (pGenInq = distInqFind (inqId)))                return (MSG_Q_DIST_GRP_STATUS_LOCAL_TIMEOUT);            /* See who is addressed by the STATUS telegram. */            switch (pGenInq->inqType)                {                case DIST_MSG_Q_GRP_INQ_TYPE_SEND:                    {                    pInq = (DIST_MSG_Q_GRP_SEND_INQ *) pGenInq;                    /*                     * Possible errors here:                     *    MSG_Q_DIST_GRP_STATUS_OK                     *    MSG_Q_DIST_GRP_STATUS_ERROR                     *    MSG_Q_DIST_GRP_STATUS_UNAVAIL                     *    MSG_Q_DIST_GRP_STATUS_ILLEGAL_OBJ_ID                     *    MSG_Q_DIST_GRP_STATUS_NOT_ENOUGH_MEMORY                     */                    switch (dStatus)                        {                        case MSG_Q_DIST_GRP_STATUS_OK:                            if (--pInq->sendInqNumOutstanding == 0)                                semGive (&pInq->sendInqWait);                            break;                        case MSG_Q_DIST_GRP_STATUS_ERROR:                        case MSG_Q_DIST_GRP_STATUS_UNAVAIL:                        case MSG_Q_DIST_GRP_STATUS_ILLEGAL_OBJ_ID:                        case MSG_Q_DIST_GRP_STATUS_NOT_ENOUGH_MEMORY:                            errnoOfTaskSet (pInq->sendInqTask, errnoRemote);                            break;                        default:#ifdef MSG_Q_DIST_GRP_REPORT                            printf ("msgQDistGrpInput/STATUS/SEND: status?\n");#endif                            break;                        }                    return (MSG_Q_DIST_GRP_STATUS_OK);                    }                default:#ifdef MSG_Q_DIST_GRP_REPORT                    printf ("msgQDistGrpInput/STATUS: unexpected inq (%d)\n",                            pGenInq->inqType);#endif                    return (MSG_Q_DIST_GRP_STATUS_INTERNAL_ERROR);                }            }        default:#ifdef MSG_Q_DIST_GRP_REPORT            printf ("msgQDistGrpInput/STATUS: unknown group subtype (%d)\n",                    pPkt->pktSubType);#endif            return (MSG_Q_DIST_GRP_STATUS_PROTOCOL_ERROR);        }#ifdef UNDEFINED   /* supposedly unreached */    if (status == ERROR)        return (MSG_Q_DIST_GRP_STATUS_ERROR);    return (MSG_Q_DIST_GRP_STATUS_OK);#endif    }/***************************************************************************** msgQDistGrpLclSetId - change id of a group in local database (VxFusion option)** This routine changes the group id of a node in the local database.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品传媒视频| 91麻豆免费观看| 99re这里只有精品视频首页| 欧美性色黄大片| 亚洲国产成人在线| 久久黄色级2电影| 欧美色精品在线视频| 国产精品美女久久久久久久| 青青青爽久久午夜综合久久午夜| 91免费视频观看| 国产免费成人在线视频| 极品瑜伽女神91| 91精品国产综合久久久久久久久久| 国产精品污www在线观看| 美腿丝袜亚洲综合| 91精品国产综合久久久久久久久久 | 26uuu成人网一区二区三区| 亚洲一本大道在线| 色婷婷亚洲综合| 日本女优在线视频一区二区| 成人网男人的天堂| 国产日韩欧美亚洲| 韩国成人福利片在线播放| 欧美一区国产二区| 午夜久久福利影院| 欧美三区免费完整视频在线观看| 中文天堂在线一区| eeuss鲁片一区二区三区在线看| 日韩你懂的在线观看| 日本视频中文字幕一区二区三区| 欧美午夜精品电影| 亚洲成人在线网站| 欧美日韩二区三区| 日韩中文欧美在线| 欧美福利视频一区| 美女视频黄久久| 日韩欧美另类在线| 国精产品一区一区三区mba视频 | 亚洲不卡一区二区三区| 色妞www精品视频| 亚洲色图制服丝袜| 欧美亚洲综合久久| 亚洲动漫第一页| 777a∨成人精品桃花网| 日韩精品一二三区| 久久综合资源网| 国产成人午夜精品影院观看视频| 国产无一区二区| 91小宝寻花一区二区三区| 亚洲综合视频网| 91精品欧美综合在线观看最新| 日韩不卡在线观看日韩不卡视频| 日韩午夜在线观看| 国产高清久久久久| 亚洲日本韩国一区| 欧美男女性生活在线直播观看| 青青草国产成人99久久| 国产欧美一区二区精品性色| av资源网一区| 日韩电影免费在线看| 国产欧美日韩视频在线观看| 欧美精品日韩精品| 久久97超碰国产精品超碰| 中文字幕乱码亚洲精品一区 | 欧美日韩黄色影视| 国内精品在线播放| 亚洲免费观看高清完整版在线| 欧美日韩情趣电影| 国产酒店精品激情| 一区二区高清视频在线观看| 日韩精品一区二区三区三区免费 | 18涩涩午夜精品.www| 欧美日韩不卡一区二区| 国产精品91一区二区| 亚洲一区电影777| 久久精品日韩一区二区三区| 色综合久久天天| 九九国产精品视频| 亚洲一区在线观看免费观看电影高清| 欧美大尺度电影在线| jlzzjlzz亚洲女人18| 日韩福利电影在线观看| 国产精品区一区二区三| 日韩欧美一区中文| 色狠狠一区二区| 国产一区二区美女| 午夜视频在线观看一区二区| 国产精品欧美一区二区三区| 欧美精品色综合| 91网页版在线| 国产91丝袜在线播放0| 青青青爽久久午夜综合久久午夜| 中文字幕日韩欧美一区二区三区| 欧美第一区第二区| 欧美午夜影院一区| 91在线观看视频| 国产一区二区三区在线观看免费 | 国产偷国产偷精品高清尤物| 欧美日韩精品一区二区三区蜜桃| www.一区二区| 丁香五精品蜜臀久久久久99网站| 人禽交欧美网站| 亚洲国产日产av| 洋洋成人永久网站入口| 亚洲欧洲中文日韩久久av乱码| 久久综合九色欧美综合狠狠 | 麻豆精品一区二区| 亚洲gay无套男同| 亚洲精品一二三区| 亚洲天堂av一区| 国产女人水真多18毛片18精品视频| 精品久久一区二区三区| 日韩欧美精品三级| 欧美xxxxxxxx| 2019国产精品| 国产清纯美女被跳蛋高潮一区二区久久w | 91蜜桃免费观看视频| 成人精品在线视频观看| 岛国精品在线播放| 粉嫩嫩av羞羞动漫久久久| 国产99一区视频免费| 国产成人激情av| 777亚洲妇女| 欧美精品色综合| 日韩一级片网站| 久久综合色天天久久综合图片| 久久午夜色播影院免费高清| 久久久精品国产免大香伊| 欧美国产激情一区二区三区蜜月| 久久综合精品国产一区二区三区| 2024国产精品| 亚洲国产精品ⅴa在线观看| 亚洲欧洲www| 亚洲一区在线观看免费 | 国产精品无圣光一区二区| 亚洲日韩欧美一区二区在线| 亚洲美女在线一区| 午夜精品一区二区三区电影天堂 | 亚洲理论在线观看| 午夜精品在线视频一区| 久久av中文字幕片| 大胆欧美人体老妇| 91精品办公室少妇高潮对白| 在线播放欧美女士性生活| 精品久久一二三区| 综合自拍亚洲综合图不卡区| 午夜精品久久久久久久蜜桃app | 欧美成人精品高清在线播放| 国产欧美在线观看一区| 一区二区三区四区国产精品| 秋霞午夜鲁丝一区二区老狼| 欧美久久高跟鞋激| 国产日韩欧美综合一区| 亚洲成在线观看| 国产精品综合在线视频| 欧美制服丝袜第一页| 欧美www视频| 亚洲一区在线电影| 国产经典欧美精品| 欧美视频在线观看一区二区| 国产欧美综合在线| 日韩高清不卡一区| 91美女片黄在线观看91美女| 欧美va亚洲va香蕉在线| 一区二区高清免费观看影视大全| 国产在线日韩欧美| 欧美日韩国产综合视频在线观看| 亚洲精品一区二区三区香蕉| 亚洲欧洲综合另类| 国产成人免费视频一区| 欧美日韩一区二区在线观看 | 精品理论电影在线观看 | 国产精品国产自产拍高清av王其| 亚洲无人区一区| 成人va在线观看| 欧美va日韩va| 视频精品一区二区| 色偷偷久久人人79超碰人人澡 | 欧美日韩免费高清一区色橹橹| 久久精品一区二区三区不卡| 日本亚洲视频在线| 欧美影院午夜播放| 亚洲欧美自拍偷拍| 国产传媒久久文化传媒| 日韩三级伦理片妻子的秘密按摩| 亚洲图片欧美一区| 色网综合在线观看| 亚洲欧洲精品一区二区三区| 国产成人无遮挡在线视频| 久久综合九色综合欧美亚洲| 人妖欧美一区二区| 91精品国产福利在线观看| 亚洲激情网站免费观看| 91在线你懂得| 最好看的中文字幕久久| av中文字幕不卡| 亚洲欧美日韩电影| 色婷婷久久综合| 一区二区三区在线观看动漫| 色综合天天视频在线观看|