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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? distnetlib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
         * the window rotating.         */        if (pServNode->servUp == FALSE)            return (OK);        semTake (&pServNode->servQLock, WAIT_FOREVER);        DIST_TBUF_HDR_ENQUEUE (pServNode->pServQ, pDeliver);        semGive (&pServNode->servQLock);        semGive (&pServNode->servWait4Jobs);        return (OK);        }    return (ERROR);    }/***************************************************************************** distNetCtl - control function for network layer (VxFusion option)** This routine performs control functions on the network layer.* The following functions are accepted:* \is* \i DIST_CTL_SERVICE_HOOK* Set a function to be called, each time a service called by a* remote node fails.* \i DIST_CTL_SERVICE_CONF* Unsed to configure a certain service. The <argument> parameter is* a pointer to DIST_SERV_CONF, which holds the service id and its* configuration to set.* \ie** RETURNS: Return value of function called, or ERROR.** ERRNO:* S_distLib_UNKNOWN_REQUEST** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** NOMANUAL*/int distNetCtl    (    int    function,        /* function code      */    int    argument         /* arbitrary argument */    )    {    DIST_SERV_CONF    *pServConfig;    switch (function)        {        case DIST_CTL_SERVICE_HOOK:            distNetServiceHook = (FUNCPTR) argument;            return (OK);        case DIST_CTL_SERVICE_CONF:            {            if ((pServConfig = (DIST_SERV_CONF *) argument) == NULL)                return (ERROR);                    return (distNetServConfig (pServConfig->servId,                    pServConfig->taskPrio, pServConfig->netPrio));            }        default:            errnoSet (S_distLib_UNKNOWN_REQUEST);            return (ERROR);        }    }/***************************************************************************** distNetSend - send message from a continuous buffer to the network (VxFusion option)** This routine sends a message of length <nBytes> starting at <buffer>* to node <distNodeDest>. If necessary, the message is fragmented.** The routine blocks until the message is acknowledged or timeout* has expired.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, if successful.* NOMANUAL*/STATUS distNetSend    (    DIST_NODE_ID nodeIdDest,  /* node to which message is destinated */    DIST_PKT *   pPkt,        /* packet to send                      */    UINT         nBytes,      /* length of message                   */    int          timo,        /* ticks to wait                       */    int          prio         /* priority level to send message on   */    )    {    char *          pFrag;    char *          pBufEnd;    DIST_TBUF *     pTBuf;    DIST_TBUF_HDR * pTBufHdr;    int             mtu;    int             tBufNBytes;    short           seq = 0;    distStat.netOutReceived++;    if (nodeIdDest == DIST_IF_BROADCAST_ADDR &&            distNodeGetNumNodes (DIST_NODE_NUM_NODES_ALIVE) <= 1)        return (OK);    pPkt->pktLen = htons ((UINT16)nBytes);    /* Get first TBuf for header. */    if ((pTBufHdr = DIST_TBUF_HDR_ALLOC ()) == NULL)        {        distStat.netOutDiscarded++;        return (ERROR);                /* out of TBufs */        }    pTBufHdr->tBufHdrDest = nodeIdDest;    pTBufHdr->tBufHdrOverall = (INT16) nBytes;    pTBufHdr->tBufHdrTimo = timo;    pTBufHdr->tBufHdrPrio = prio;    /* Split the packet to n telegrams and copy them to TBufs. */    pBufEnd = (pFrag = (char *) pPkt) + nBytes;    mtu = DIST_IF_MTU - DIST_IF_HDR_SZ;    while ((pTBuf = DIST_TBUF_ALLOC ()) != NULL)        {        DIST_TBUF_ENQUEUE (pTBufHdr, pTBuf);        tBufNBytes = MIN (pBufEnd - pFrag, mtu);        pTBuf->tBufFlags = DIST_TBUF_FLAG_MF;        if (seq == 0)            pTBuf->tBufFlags |= DIST_TBUF_FLAG_HDR;        if (nodeIdDest == DIST_IF_BROADCAST_ADDR)            {            pTBuf->tBufType = DIST_TBUF_TTYPE_BDTA;            pTBuf->tBufFlags |= DIST_TBUF_FLAG_BROADCAST;            }        else            pTBuf->tBufType = DIST_TBUF_TTYPE_DTA;        pTBuf->tBufSeq = seq++;        pTBuf->tBufNBytes = (UINT16) tBufNBytes;        bcopy (pFrag, pTBuf->pTBufData, tBufNBytes);        pFrag += tBufNBytes;        if (pFrag == pBufEnd)    /* done? */            {            pTBuf->tBufFlags &= ~DIST_TBUF_FLAG_MF;#ifdef DIST_NET_REPORT            printf ("distNetSend:%p: node %lu, numSeq %d, lenOverall %d\n",                    pTBufHdr, nodeIdDest, seq, pTBufHdr->tBufHdrOverall);#endif            return (distNodePktSend (pTBufHdr));            }        }    /* TBuf shortage */    DIST_TBUF_FREEM (pTBufHdr);    distStat.netOutDiscarded++;    return (ERROR);        }/***************************************************************************** distNetIOVSend - send message from discontinuous buffer to the network (VxFusion option)** This routine sends a message from a scatter/gather buffer (IOV)* to node <nodeIdDest>. If necessary, the message is fragmented.** This routine blocks until the message is acknowledged or timeout* has exceeded.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, if successful.* NOMANUAL*/STATUS distNetIOVSend    (    DIST_NODE_ID  nodeIdDest, /* node to which message is destinated */    DIST_IOVEC *  pIOV,       /* list of buffers to gather           */    int           numIOV,     /* number of buffers                   */    int           timo,       /* ticks to wait                       */    int           prio        /* priority level to send message on   */    )    {    DIST_IOVEC *    p;    DIST_TBUF_HDR * pTBufHdr;    DIST_TBUF *     pTBuf = NULL;    DIST_PKT *      pPkt;    int             szSrc, szDest, sz;    int             seq;    char *          pSrc;    char *          pDest = NULL;    distStat.netOutReceived++;    if (numIOV <= 0)        return (ERROR);    if (nodeIdDest == DIST_IF_BROADCAST_ADDR              &&        distNodeGetNumNodes (DIST_NODE_NUM_NODES_ALIVE) <= 1)        {        return (OK);        }    /* Get first TBuf for header. */    if ((pTBufHdr = DIST_TBUF_HDR_ALLOC ()) == NULL)        {        distStat.netOutDiscarded++;        return (ERROR);        }    pTBufHdr->tBufHdrDest = nodeIdDest;    pTBufHdr->tBufHdrTimo = timo;    pTBufHdr->tBufHdrPrio = prio;    pTBufHdr->tBufHdrOverall = 0;    /* later */    /* Copy the discontinious buffer to a list of tBufs. */    p = pIOV;    szDest = 0;    seq = 0;    while (numIOV--)        {        pTBufHdr->tBufHdrOverall += (szSrc = p->IOLen);        pSrc = p->pIOBuffer;        do            {            if (szDest == 0)                {                if ((pTBuf = DIST_TBUF_ALLOC ()) == NULL)                    {                    distStat.netOutDiscarded++;                    DIST_TBUF_FREEM (pTBufHdr);                    return (ERROR);                    }                pTBuf->tBufFlags = 0;                if (seq == 0)                    pTBuf->tBufFlags |= DIST_TBUF_FLAG_HDR;                pTBuf->tBufFlags |= DIST_TBUF_FLAG_MF;                if (nodeIdDest == DIST_IF_BROADCAST_ADDR)                    {                    pTBuf->tBufType = DIST_TBUF_TTYPE_BDTA;                    pTBuf->tBufFlags |= DIST_TBUF_FLAG_BROADCAST;                    }                else                    pTBuf->tBufType = DIST_TBUF_TTYPE_DTA;                pTBuf->tBufSeq = (UINT16) seq++;                pTBuf->tBufNBytes = 0;                DIST_TBUF_ENQUEUE (pTBufHdr, pTBuf);                szDest = DIST_IF_MTU - DIST_IF_HDR_SZ;                pDest = pTBuf->pTBufData;                }            sz = MIN (szSrc, szDest);            bcopy (pSrc, pDest, sz);            pTBuf->tBufNBytes += sz;            szSrc -= sz;            szDest -= sz;            pSrc += sz;            pDest += sz;            }        while (szSrc > 0);        p++;        }    pTBuf->tBufFlags &= ~DIST_TBUF_FLAG_MF;#ifdef DIST_NET_REPORT    printf ("distNetSend:%p: node %lu, numSeq %d, lenOverall %d\n",            pTBufHdr, nodeIdDest, seq, pTBufHdr->tBufHdrOverall);#endif    pPkt = (DIST_PKT *) ((DIST_TBUF_GET_NEXT (pTBufHdr))->pTBufData);    pPkt->pktLen = htons (pTBufHdr->tBufHdrOverall);    return (distNodePktSend (pTBufHdr));    }/***************************************************************************** distNetInput - accept a telegram buffer and send it to upper VxFusion layers (VxFusion option)** This routine accepts a telegram buffer from an adapter and tries to * reassemble a message from it.  If the telegram buffer contains an entire * message, distNetInput() simply forwards the message to the upper VxFusion * layers and sends an acknowledgment for the message.  If the telegram buffer * contains a message fragment, the message fragment is added to existing * message fragments, if any.  If the message fragment completes a message, the * message is forwarded to the upper VxFusion layers and distNetInput() * sends an acknowledgment for the message.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: N/A* NOMANUAL*/void distNetInput    (    DIST_NODE_ID nodeIdIn, /* source node of the telegram buffer */    int          prioIn,   /* priority the telegram arrived with */    DIST_TBUF *  pTBufIn   /* the telegram buffer itself         */    )    {    void * pComm; /* from distNodeReassemble(), to distNodeGetReassembled() */    DIST_TBUF_HDR *  pReassembled;    DIST_PKT *       pPkt;    distStat.netInReceived++;    /* Try to reassemble. */        if ((pComm = distNodeReassemble (nodeIdIn, prioIn, pTBufIn)) == NULL)        return;    /*     * Now that we are here, a packet has been reassembled.     * <pComm> points to the communication, that has one or     * more packets.     */    while ((pReassembled = distNodeGetReassembled (pComm)) != NULL)        {#ifdef DIST_NET_REPORT            {            char * buffer;            int    len;            printf ("distNetInput: packet %p reassembled\n", pReassembled);            buffer = malloc ((len = pReassembled->tBufHdrOverall));            if (buffer)                {                distTBufCopy (DIST_TBUF_GET_NEXT (pReassembled), 0,                        buffer, len);                distDump (buffer, len);                free (buffer);                }            }#endif        distStat.netReassembled++;        pPkt = (DIST_PKT *) ((DIST_TBUF_GET_NEXT (pReassembled))->pTBufData);        if ((ntohs (pPkt->pktLen) != pReassembled->tBufHdrOverall) ||                (distNetServCall (pPkt->pktType, pReassembled) == ERROR))            {#ifdef DIST_DIAGNOSTIC            if (ntohs (pPkt->pktLen) != pReassembled->tBufHdrOverall)                {                distLog("distNetInput: wrong length (has %d, expected %d)\n",                        pReassembled->tBufHdrOverall, ntohs (pPkt->pktLen));                }            else                distLog("distNetInput: unknown type (%d) or service down\n",                        pPkt->pktType);#endif            distNodePktDiscard (pReassembled->tBufHdrSrc, pReassembled);            }        else            distNodePktAck (pReassembled->tBufHdrSrc, pReassembled, 0);        /* loop back for the next packet. */        }    }

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久精品国产毛片| 国产欧美综合在线| 欧美日精品一区视频| 91蝌蚪porny成人天涯| 99视频精品免费视频| 99久久综合国产精品| 91在线精品一区二区| 91日韩精品一区| 在线一区二区视频| 在线精品观看国产| 欧美日韩一级大片网址| 91精品国产色综合久久ai换脸| 欧美精品乱码久久久久久| 69堂精品视频| 亚洲精品一区二区三区香蕉| 国产色一区二区| √…a在线天堂一区| 一区二区三区高清| 午夜精品久久久久久久99樱桃| 日精品一区二区三区| 久久精品国产99国产| 国产高清精品久久久久| 成人av在线播放网址| 91欧美激情一区二区三区成人| 色哟哟一区二区| 欧美一区二区视频在线观看 | 91精品国产麻豆国产自产在线| 欧美一区二区精品| 久久精品一区八戒影视| 亚洲视频小说图片| 天天色综合天天| 国产乱码一区二区三区| 91麻豆精品一区二区三区| 欧美影院午夜播放| 精品国产污污免费网站入口 | 国产精品美女www爽爽爽| 亚洲人一二三区| 亚洲va欧美va天堂v国产综合| 毛片av中文字幕一区二区| 丰满少妇久久久久久久| 欧美最猛黑人xxxxx猛交| 日韩欧美成人一区二区| 欧美激情一区二区三区| 亚洲国产一区二区在线播放| 激情久久五月天| 色综合久久天天综合网| 日韩精品一区二区三区蜜臀| 中文字幕一区二区三区精华液 | 偷拍一区二区三区| 国产真实乱偷精品视频免| 91丨porny丨在线| 欧美成人精品1314www| 综合激情成人伊人| 另类的小说在线视频另类成人小视频在线 | 欧美色综合久久| 久久久三级国产网站| 亚洲五码中文字幕| 成人小视频免费观看| 欧美一区日韩一区| 亚洲欧美视频在线观看| 精品一区二区三区蜜桃| 在线观看区一区二| 国产精品乱人伦中文| 免费成人av资源网| 色香蕉成人二区免费| 26uuu亚洲综合色欧美| 午夜精品久久久久久久久| 91网站最新地址| 久久久久久夜精品精品免费| 亚洲成av人影院在线观看网| av一区二区不卡| 国产亚洲制服色| 奇米影视一区二区三区小说| 在线观看国产精品网站| 国产精品欧美一区二区三区| 国产一区美女在线| 91精品国产综合久久久蜜臀图片| 亚洲男人的天堂av| www.激情成人| 国产欧美一区二区精品秋霞影院| 秋霞午夜av一区二区三区| 欧美日韩黄色一区二区| 亚洲男帅同性gay1069| 成人午夜电影久久影院| 久久久午夜精品理论片中文字幕| 日韩va亚洲va欧美va久久| 精品视频全国免费看| 亚洲色大成网站www久久九九| 国产成人免费视频一区| 久久久久九九视频| 国产九色sp调教91| 久久久精品日韩欧美| 加勒比av一区二区| 日韩精品资源二区在线| 美女视频网站久久| 日韩欧美久久久| 麻豆精品精品国产自在97香蕉| 欧美日韩国产a| 亚洲1区2区3区视频| 欧美日韩电影一区| 天天影视网天天综合色在线播放| 欧美视频一区二区三区四区 | 成人爱爱电影网址| 欧美国产精品中文字幕| 成人综合在线视频| 国产精品乱人伦中文| 91视频在线观看| 亚洲精品中文在线影院| 日本精品一区二区三区高清| 一区二区三区四区av| 欧美性受xxxx黑人xyx| 午夜亚洲福利老司机| 在线电影欧美成精品| 人人精品人人爱| 欧美电视剧在线看免费| 韩国中文字幕2020精品| 国产午夜精品美女毛片视频| 成人av在线资源| 夜夜精品视频一区二区| 欧美午夜精品久久久| 日精品一区二区| 精品国产91洋老外米糕| 国产成人精品aa毛片| 国产精品久久久久久久久图文区 | 欧美亚洲自拍偷拍| 三级欧美在线一区| 337p粉嫩大胆色噜噜噜噜亚洲| 成人综合婷婷国产精品久久蜜臀 | 蜜桃视频一区二区| 日本一区二区三区国色天香| k8久久久一区二区三区| 亚洲精品一二三四区| 欧美视频你懂的| 国产呦精品一区二区三区网站| 欧美激情在线看| 欧美日韩一区二区三区在线看| 免费看日韩a级影片| 中日韩av电影| 欧美天堂亚洲电影院在线播放 | 91精品国产91久久久久久一区二区 | 亚洲一二三四在线观看| 日韩欧美一区二区免费| 高清beeg欧美| 一区二区不卡在线视频 午夜欧美不卡在 | 成人午夜在线播放| 亚洲小说欧美激情另类| 久久综合99re88久久爱| 色婷婷综合久色| 精久久久久久久久久久| 亚洲精品一卡二卡| 久久综合色综合88| 色哟哟在线观看一区二区三区| 久久电影国产免费久久电影| 国产精品久久久久久久久图文区 | 欧美国产日产图区| 7777精品伊人久久久大香线蕉超级流畅| 狠狠色丁香婷婷综合| 亚洲宅男天堂在线观看无病毒| 日韩一区二区三区四区五区六区| aaa亚洲精品| 精品写真视频在线观看| 亚洲二区在线观看| 欧美高清在线一区二区| 制服丝袜中文字幕亚洲| 91在线视频观看| 国产九九视频一区二区三区| 午夜精品久久久久久久99水蜜桃| 国产精品视频第一区| 6080国产精品一区二区| 99精品热视频| 韩国午夜理伦三级不卡影院| 亚洲va天堂va国产va久| 日韩美女视频一区二区| 久久亚洲综合色| 欧美军同video69gay| 91免费观看国产| 粉嫩欧美一区二区三区高清影视| 免费成人在线观看视频| 亚洲高清免费视频| 最新国产の精品合集bt伙计| 久久久久97国产精华液好用吗| 91麻豆精品久久久久蜜臀| 欧美在线视频全部完| 99精品欧美一区二区三区小说 | 成人国产精品免费观看动漫| 国产一区二区三区高清播放| 奇米影视7777精品一区二区| 亚洲福利视频一区二区| 一区二区三区在线免费观看 | 精品一区二区三区久久| 日本美女视频一区二区| 午夜精品一区二区三区电影天堂| 一片黄亚洲嫩模| 亚洲欧美二区三区| 亚洲欧美日韩系列| 亚洲天堂福利av| 亚洲欧美影音先锋| 中文字幕欧美一| 国产精品伦理一区二区| 国产精品乱码人人做人人爱|