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

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

?? disttbuflib.c

?? vxworks操作系統的源代碼 供研究學習
?? C
字號:
/* distTBufLib.c - distributed objects telegram buffer library (VxFusion option) *//* Copyright 1999 - 2002 Wind River Systems, Inc. *//*modification history--------------------01g,26nov01,jws  fix void ptr arith not seen by diab (SPR 71154)01f,30oct01,jws  fix man pages (SPR 71239)01e,24may99,drm  added vxfusion prefix to VxFusion related includes01d,23feb99,wlf  doc edits01c,18feb99,wlf  doc cleanup01b,29oct98,drm  documentation updates01a,03sep97,ur   written.*//*DESCRIPTIONThis library provides routines for allocating and freeing telegram buffers.  Telegrams are the largest packets that can be sent between nodes by the distributed objects product; their size is limited by the MTU size of theunderlying communications.  If a distributed objects message exceeds the space allocated in a telegram for message data, that message is divided into multiple telegrams that are sent out in sequence. AVAILABILITYThis module is distributed as a component of the unbundled distributedmessage queues option, VxFusion.INCLUDE FILES: distTBufLib.h*/#include "vxWorks.h"#ifdef DIST_DIAGNOSTIC#include "stdio.h"#endif#include "stdlib.h"#include "string.h"#include "semLib.h"#include "private/semLibP.h"#include "vxfusion/distIfLib.h"#include "vxfusion/distStatLib.h"#include "vxfusion/private/distNetLibP.h"#include "vxfusion/private/distTBufLibP.h"/* defines */#define MIN(a,b)    (((a) < (b)) ? (a) : (b))/* local variables */LOCAL BOOL                distTBufLibInstalled = FALSE;LOCAL DIST_TBUF_POOL      distTBufPool;LOCAL int                 tbHSz, ifHSz, ifDSz, tBufSize;LOCAL SEMAPHORE           distTBufPoolLock;/***************************************************************************** distTBufLibInit - pre-allocate a pool of telegram buffers (VxFusion option)** This routine initializes a pool of telegram buffers.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: OK, when successful.  ERROR, when initialization fails.* * NOMANUAL*/STATUS distTBufLibInit    (    int      numTBufs    /* the number of buffers to allocate */    )    {    int    i;    char * pPool;    char * p;    if (distTBufLibInstalled == TRUE)        return (OK);    tbHSz = MEM_ROUND_UP (sizeof (DIST_TBUF));    ifHSz = MEM_ROUND_UP (DIST_IF_HDR_SZ);    ifDSz = MEM_ROUND_UP (DIST_IF_MTU - DIST_IF_HDR_SZ);    tBufSize = tbHSz + ifHSz + ifDSz;    if (tBufSize < MEM_ROUND_UP (sizeof (DIST_TBUF_HDR)))        tBufSize = MEM_ROUND_UP (sizeof (DIST_TBUF_HDR));    if ((pPool = (char *) malloc (numTBufs * tBufSize)) == NULL)        {#ifdef DIST_DIAGNOSTIC        printf ("distTBufLibInit: memory allocation failed\n");#endif        return (ERROR);        }    distTBufPool.pTBufFree = (DIST_TBUF *) pPool;    for (p = pPool, i = 1; i < numTBufs; p += tBufSize, i++)        {        ((DIST_TBUF_GEN *) p)->pTBufGenNext = (DIST_TBUF_GEN *) (p + tBufSize);        }    ((DIST_TBUF_GEN *) p)->pTBufGenNext = NULL;    semBInit (&distTBufPoolLock, SEM_Q_PRIORITY, SEM_FULL);    distTBufLibInstalled = TRUE;    return (OK);    }/***************************************************************************** distTBufAlloc - allocate a telegram buffer from the pool of buffers (VxFusion option)** This routine allocates a telegram buffer from a pre-allocated pool* of telegram buffers.** It is the responsibility of the caller to use the distTBufFree() routine to* free the buffer when the caller is finished with it.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: A pointer to a DIST_TBUF, or NULL if the allocation fails.** SEE ALSO: distTBufFree*/DIST_TBUF * distTBufAlloc (void)    {    DIST_TBUF * pTBuf;    distTBufPoolLock();    if ((pTBuf = distTBufPool.pTBufFree) != NULL)        {        distTBufPool.pTBufFree =                (DIST_TBUF *) ((DIST_TBUF_GEN *) pTBuf)->pTBufGenNext;        distTBufPoolUnlock();        bzero ((char *) pTBuf, tBufSize);                pTBuf->pTBufData = ((char *) pTBuf) + tbHSz + ifHSz;        ((DIST_TBUF_GEN *) pTBuf)->pTBufGenNext = NULL;        ((DIST_TBUF_GEN *) pTBuf)->pTBufGenLast = (DIST_TBUF_GEN *) pTBuf;#ifdef DIST_DIAGNOSTIC        pTBuf->tBufHeader = FALSE;#endif        return (pTBuf);        }    distTBufPoolUnlock();    distStat.tBufShortage++;    return (NULL);    }/***************************************************************************** distTBufAllocHdr - allocate a DIST_TBUF_HDR object (VxFusion option)** This routine allocates and returns a pointer to a DIST_TBUF_HDR.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: A pointer to the DIST_TBUF_HDR, or NULL.* * NOMANUAL*/DIST_TBUF_HDR * distTBufAllocHdr (void)    {    DIST_TBUF_HDR * pTBufHdr;    distTBufPoolLock();    if ((pTBufHdr = (DIST_TBUF_HDR *) distTBufPool.pTBufFree) != NULL)        {        distTBufPool.pTBufFree =                (DIST_TBUF *) ((DIST_TBUF_GEN *) pTBufHdr)->pTBufGenNext;        distTBufPoolUnlock();        bzero ((char *) pTBufHdr, tBufSize);        ((DIST_TBUF_GEN *) pTBufHdr)->pTBufGenNext = NULL;        ((DIST_TBUF_GEN *) pTBufHdr)->pTBufGenLast =                                             (DIST_TBUF_GEN *) pTBufHdr;        pTBufHdr->pTBufHdrNext = pTBufHdr->pTBufHdrPrev = NULL;        pTBufHdr->pTBufHdrLast = pTBufHdr;        pTBufHdr->pTBufHdrTm = NULL;#ifdef DIST_DIAGNOSTIC        pTBufHdr->tBufHdrHeader = TRUE;#endif        return (pTBufHdr);        }    distTBufPoolUnlock();    distStat.tBufShortage++;    return (NULL);    }/***************************************************************************** distTBufFree - return a telegram buffer to the pool of buffers (VxFusion option)** This routine returns a buffer previously allocated to a caller back to* the pool of free telegram buffers.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: N/A** SEE ALSO: distTBufAlloc*/void distTBufFree    (    DIST_TBUF * pTBuf  /* ptr to buffer to be returned to pool */    )    {    distTBufPoolLock();    ((DIST_TBUF_GEN *) pTBuf)->pTBufGenNext =            (DIST_TBUF_GEN *) distTBufPool.pTBufFree;    distTBufPool.pTBufFree = pTBuf;    distTBufPoolUnlock();    }/***************************************************************************** distTBufCopy - copies from tBuf list to buffer (VxFusion option)** This routine copies bytes from a DIST_TBUF to a buffer.** AVAILABILITY* This routine is distributed as a component of the unbundled distributed* message queues option, VxFusion.** RETURNS: The number of bytes copied.* * NOMANUAL*/int distTBufCopy    (    DIST_TBUF * pTBuf,   /* source DIST_TBUF */    int         offset,  /* byte offset into pTBuf */    char *      dest,    /* destination */    int         nBytes   /* maximum bytes to transfer */    )    {    int    copied = 0;    int    len;    do        {        if (offset == 0 || (offset - pTBuf->tBufNBytes) < 0)            {            len = MIN (nBytes, (pTBuf->tBufNBytes - offset));            bcopy (((char *)pTBuf->pTBufData + offset), dest, len);            nBytes -= len;            dest += len;            copied += len;            offset = 0;            }        else            offset -= pTBuf->tBufNBytes;        }    while (nBytes > 0 && (pTBuf = DIST_TBUF_GET_NEXT (pTBuf)));    return (copied);    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97国产精品videossex| 国产精品毛片无遮挡高清| 国产欧美日韩不卡| 日韩精品乱码av一区二区| 成年人国产精品| 日韩欧美成人午夜| 亚洲国产wwwccc36天堂| 不卡欧美aaaaa| 久久九九99视频| 久久精品国产久精国产爱| 在线视频一区二区免费| 中文字幕av一区二区三区| 久久超碰97中文字幕| 欧美日韩1234| 亚洲国产美国国产综合一区二区| www.色精品| 日本一区二区三区四区在线视频| 美女视频第一区二区三区免费观看网站| 欧美影视一区在线| 亚洲欧洲无码一区二区三区| 国产精品系列在线播放| 亚洲精品一区二区三区在线观看 | 欧美精品在线视频| 亚洲与欧洲av电影| 91浏览器入口在线观看| 欧美国产精品中文字幕| 国产精品自在欧美一区| 精品盗摄一区二区三区| 国产麻豆成人精品| 日本一区二区三区久久久久久久久不| 国产乱国产乱300精品| www激情久久| 国产精品456| 色婷婷av一区二区三区软件| 亚洲大片精品永久免费| 中文字幕的久久| 亚洲婷婷国产精品电影人久久| 国产精品欧美精品| 亚洲乱码国产乱码精品精可以看| 亚洲女人的天堂| 男女男精品视频网| 欧美手机在线视频| 亚洲一区二区精品视频| 中文字幕制服丝袜成人av| 大胆亚洲人体视频| 亚洲色图欧美偷拍| 欧美日韩中文字幕一区| 婷婷综合在线观看| 欧美精品乱码久久久久久 | 日韩精品一区第一页| 欧美人与性动xxxx| 久久精品国产99国产| 欧美国产成人精品| 欧美主播一区二区三区| 奇米888四色在线精品| 久久免费看少妇高潮| 91丨九色丨尤物| 日韩国产精品久久| 国产日韩精品一区二区浪潮av| 91视频免费观看| 奇米精品一区二区三区四区| 中文字幕不卡三区| 91精品国产美女浴室洗澡无遮挡| 国产黄人亚洲片| 艳妇臀荡乳欲伦亚洲一区| 精品少妇一区二区三区在线视频| 国产99久久久国产精品潘金网站| 亚洲午夜影视影院在线观看| 26uuu精品一区二区三区四区在线| 成人99免费视频| 欧美96一区二区免费视频| 中文字幕一区二区在线观看| 69p69国产精品| aaa亚洲精品| 久久99精品视频| 亚洲午夜精品在线| 中文字幕成人在线观看| 日韩欧美不卡在线观看视频| 91麻豆文化传媒在线观看| 狠狠色丁香九九婷婷综合五月| 一区二区三区**美女毛片| 国产日韩一级二级三级| 日韩一区二区三区高清免费看看| 99久久国产综合色|国产精品| 六月丁香婷婷久久| 亚洲高清一区二区三区| 亚洲日本在线看| 国产日本欧洲亚洲| 欧美v日韩v国产v| 欧美精品v日韩精品v韩国精品v| 色综合天天狠狠| 成人午夜视频免费看| 久久国产尿小便嘘嘘尿| 日韩在线一区二区三区| 亚洲午夜三级在线| 一区二区三区四区在线播放| 国产精品免费人成网站| 久久久久久久久久久99999| 日韩欧美一级特黄在线播放| 欧美肥妇bbw| 欧美男同性恋视频网站| 在线免费不卡电影| 在线观看日韩高清av| 91日韩精品一区| 99久久精品费精品国产一区二区| 豆国产96在线|亚洲| 欧美人狂配大交3d怪物一区| 国产宾馆实践打屁股91| 美国三级日本三级久久99| 亚洲一区中文日韩| 一卡二卡三卡日韩欧美| 在线视频一区二区三| 制服.丝袜.亚洲.另类.中文 | 久久99热这里只有精品| 美日韩一区二区三区| 秋霞午夜鲁丝一区二区老狼| 日本伊人午夜精品| 美女任你摸久久| 国产在线精品免费| 国产a区久久久| 成人午夜免费视频| a亚洲天堂av| 色94色欧美sute亚洲线路二| 91女厕偷拍女厕偷拍高清| 色综合一个色综合亚洲| 欧美色综合久久| 欧美高清视频一二三区| 日韩欧美一级在线播放| 国产欧美日韩在线| 综合av第一页| 亚洲成人三级小说| 久久99精品国产.久久久久| 大桥未久av一区二区三区中文| av一二三不卡影片| 欧美日韩中文字幕一区| 欧美tickle裸体挠脚心vk| 久久精品视频一区二区| 日韩毛片一二三区| 午夜精品久久久久久| 国产麻豆欧美日韩一区| 色哟哟国产精品| 日韩三级免费观看| 国产精品成人网| 男女男精品网站| jiyouzz国产精品久久| 欧美日韩一区二区三区在线看| 欧美大白屁股肥臀xxxxxx| 国产精品女同一区二区三区| 午夜精品一区在线观看| 国产精品一级片在线观看| 欧美在线观看视频一区二区| 久久综合久久综合亚洲| 亚洲在线视频免费观看| 国产成人在线网站| 欧美三区在线观看| 欧美激情一区二区三区不卡 | 欧美日韩免费在线视频| 久久色中文字幕| 一级中文字幕一区二区| 国产酒店精品激情| 欧美三电影在线| 国产精品对白交换视频| 日韩主播视频在线| 91色在线porny| 久久久久久久性| 日韩av网站免费在线| 色综合久久久久久久久| 久久久不卡网国产精品二区 | 精品久久久久99| 亚洲一线二线三线视频| 成人永久免费视频| 欧美xxxxxxxx| 亚洲3atv精品一区二区三区| 成人黄页在线观看| 久久综合九色欧美综合狠狠| 日韩成人精品视频| 欧美中文字幕一区| 成人欧美一区二区三区白人| 国产精品一二三在| 26uuu另类欧美亚洲曰本| 日本最新不卡在线| 欧美日韩免费一区二区三区视频| 亚洲视频一区在线| 成人动漫av在线| 国产精品久久久久久久久免费丝袜| 美腿丝袜亚洲综合| 日韩一区二区三区视频| 日韩电影免费在线| 日韩一区二区三区免费看| 五月激情丁香一区二区三区| 欧美最猛黑人xxxxx猛交| 亚洲三级电影网站| 色综合视频在线观看| 亚洲欧洲一区二区在线播放| 成人av免费观看| 中文字幕制服丝袜成人av| 99视频国产精品| 亚洲三级在线免费观看| 色综合中文综合网| 日韩免费一区二区|