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

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

?? netbuflib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
* within the specified memory pool <pNetPool>. ** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * Likewise, the returned ID is valid in the kernel protection domain only.* This restriction does not apply under non-AE versions of VxWorks.  ** RETURNS* This routine returns a character pointer to a cluster buffer or NULL* if none was available.**/char * netClusterGet    (    NET_POOL_ID		pNetPool,	/* pointer to the net pool */    CL_POOL_ID 		pClPool 	/* ptr to the cluster pool */    )    {    if (pNetPool == NULL || pNetPool->pFuncTbl == NULL ||        pNetPool->pFuncTbl->pClGetRtn == NULL)        return (NULL);    return ((*pNetPool->pFuncTbl->pClGetRtn) (pNetPool, pClPool));    }/********************************************************************************* netMblkClGet - get a `clBlk'-cluster and join it to the specified `mBlk'** This routine gets a `clBlk'-cluster pair from the specified memory pool* and joins it to the specified `mBlk' structure.  The `mBlk'-`clBlk'-cluster* triplet it produces is the basic structure for handling data at all layers* of the network stack.** .IP <pNetPool> 9* Expects a pointer to the memory pool from which you want to get a * free `clBlk'-cluster pair.* .IP <pMbkl>* Expects a pointer to the `mBlk' structure (previously allocated) to which * you want to join the retrieved `clBlk'-cluster pair.  * .IP <bufSize>* Expects the size, in bytes, of the cluster in the `clBlk'-cluster pair.  * .IP <canWait>* Expects either M_WAIT or M_DONTWAIT.  If either item is not immediately* available, the M_WAIT value allows this routine to repeat the allocation* attempt after performing garbage collection. It omits those steps when the* M_DONTWAIT value is used.* .IP <bestFit>* Expects either TRUE or FALSE.  If <bestFit> is TRUE and a cluster of the * exact size is unavailable, this routine gets a larger cluster (if* available).  If <bestFit> is FALSE and an exact size cluster is unavailable, * this routine gets either a smaller or a larger cluster (depending * on what is available).  Otherwise, it returns immediately with an ERROR value.* For memory pools containing only one cluster size, <bestFit> should always* be set to FALSE.** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * This restriction does not apply under non-AE versions of VxWorks.  ** .SH "RETURNS"* OK or ERROR.** ERRNO:*  S_netBufLib_CLSIZE_INVALID*/STATUS netMblkClGet    (    NET_POOL_ID		pNetPool,	/* pointer to the net pool */    M_BLK_ID	 	pMblk, 		/* mBlk to embed the cluster in */    int			bufSize,	/* size of the buffer to get */    int			canWait,	/* wait or dontwait */    BOOL		bestFit		/* TRUE/FALSE */    )    {    if (pNetPool == NULL || pNetPool->pFuncTbl == NULL ||        pNetPool->pFuncTbl->pMblkClGetRtn == NULL)        return (ERROR);    return ((*pNetPool->pFuncTbl->pMblkClGetRtn) (pNetPool, pMblk, bufSize,                                                  canWait, bestFit));    }/********************************************************************************* netTupleGet - get an `mBlk'-`clBlk'-cluster** This routine gets an `mBlk'-`clBlk'-cluster triplet from the specified* memory pool.  The resulting structure is the basic method for accessing* data at all layers of the network stack.** .IP <pNetPool> 9* Expects a pointer to the memory pool with which you want to build a* `mBlk'-`clBlk'-cluster triplet.* .IP <bufSize>* Expects the size, in bytes, of the cluster in the `clBlk'-cluster* pair.* .IP <canWait>* Expects either M_WAIT or M_DONTWAIT.  If any item in the triplet is not* immediately available, the M_WAIT value allows this routine to repeat the* allocation attempt after performing garbage collection. The M_DONTWAIT value* prevents those extra steps.* .IP <type>* Expects the type of data, for example MT_DATA, MT_HEADER. The various* values for this type are defined in netBufLib.h.* .IP <bestFit>* Expects either TRUE or FALSE.  If <bestFit> is TRUE and a cluster of the * exact size is unavailable, this routine gets a larger cluster (if* available).  If <bestFit> is FALSE and an exact size cluster is unavailable, * this routine gets either a smaller or a larger cluster (depending * on what is available).  Otherwise, it returns immediately with an ERROR value.* For memory pools containing only one cluster size, <bestFit> should always* be set to FALSE.** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * Likewise, the returned ID is valid in the kernel protection domain only.* This restriction does not apply under non-AE versions of VxWorks.  ** RETURNS* M_BLK_ID or NULL.** ERRNO:*  S_netBufLib_MBLK_INVALID*  S_netBufLib_CLSIZE_INVALID*  S_netBufLib_NETPOOL_INVALID*/M_BLK_ID netTupleGet    (    NET_POOL_ID		pNetPool,	/* pointer to the net pool */    int			bufSize,	/* size of the buffer to get */    int			canWait,	/* wait or dontwait */    UCHAR		type,		/* type of data */    BOOL		bestFit		/* TRUE/FALSE */    )    {    M_BLK_ID		pMblk = NULL; 		/* pointer to mBlk */    if (pNetPool != NULL && pNetPool->pFuncTbl != NULL)        {        pMblk = mBlkGet (pNetPool, canWait, type); 	/* get an mBlk */        /* allocate a cluster and point the mBlk to it */        if (pMblk && (mClGet (pNetPool, pMblk, bufSize, canWait, bestFit)                      != OK))            {            netMblkFree (pNetPool, pMblk);             pMblk = NULL;             }        }    else        errno = S_netBufLib_NETPOOL_INVALID;     return (pMblk);     }/********************************************************************************* netClBlkJoin - join a cluster to a `clBlk' structure ** This routine joins the previously reserved cluster specified by <pClBuf> * to the previously reserved `clBlk' structure specified by <pClBlk>. * The <size> parameter passes in the size of the cluster referenced * in <pClBuf>.  The arguments <pFreeRtn>, <arg1>, <arg2>, <arg3> set the  * values of the 'pCLFreeRtn', 'clFreeArg1', 'clFreeArg2', and 'clFreeArg1', * members of the specified `clBlk' structure.** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * Likewise, the returned ID is valid in the kernel protection domain only.* This restriction does not apply under non-AE versions of VxWorks.  ** RETURNS: CL_BLK_ID or NULL.*/CL_BLK_ID netClBlkJoin    (    CL_BLK_ID		pClBlk,		/* pointer to a cluster Blk */    char *		pClBuf,		/* pointer to a cluster buffer */    int			size,		/* size of the cluster buffer */    FUNCPTR		pFreeRtn,	/* pointer to the free routine */    int			arg1,		/* argument 1 of the free routine */    int			arg2,		/* argument 2 of the free routine */    int			arg3		/* argument 3 of the free routine */    )    {    if (pClBlk == NULL || pClBuf == NULL)        return (NULL);    pClBlk->clNode.pClBuf 	= pClBuf;    pClBlk->clSize 		= size;    pClBlk->pClFreeRtn 		= pFreeRtn;    pClBlk->clFreeArg1 		= arg1;    pClBlk->clFreeArg2 		= arg2;    pClBlk->clFreeArg3 		= arg3;    pClBlk->clRefCnt		= 1;    return (pClBlk);    }/********************************************************************************* netMblkClJoin - join an `mBlk' to a `clBlk'-cluster construct** This routine joins the previously reserved `mBlk' referenced in <pMblk> to* the `clBlk'-cluster construct referenced in <pClBlk>. * Internally, this routine sets the M_EXT flag in 'mBlk.mBlkHdr.mFlags'.  It * also and sets the 'mBlk.mBlkHdr.mData' to point to the start of the data * in the cluster.** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * Likewise, the returned ID is valid in the kernel protection domain only.* This restriction does not apply under non-AE versions of VxWorks.  ** .SH "RETURNS"* M_BLK_ID or NULL. **/M_BLK_ID netMblkClJoin    (    M_BLK_ID 		pMblk,		/* pointer to an mBlk */    CL_BLK_ID		pClBlk		/* pointer to a cluster Blk */    )    {    if (pMblk == NULL || pClBlk == NULL)        return (NULL);    pMblk->mBlkHdr.mData 	= pClBlk->clNode.pClBuf;    pMblk->mBlkHdr.mFlags 	|= M_EXT;    pMblk->pClBlk		= pClBlk;    return (pMblk);    }/********************************************************************************* netClPoolIdGet - return a CL_POOL_ID for a specified buffer size * This routine returns a CL_POOL_ID for a cluster pool containing clusters * that match the specified <bufSize>.  If bestFit is TRUE, this routine returns * a CL_POOL_ID for a pool that contains clusters greater than or equal * to <bufSize>.  If <bestFit> is FALSE, this routine returns a CL_POOL_ID for a * cluster from whatever cluster pool is available.  If the memory pool * specified by <pNetPool> contains only one cluster pool, <bestFit> should * always be FALSE.** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * Likewise, the returned ID is valid in the kernel protection domain only.* This restriction does not apply under non-AE versions of VxWorks.  ** RETURNS: CL_POOL_ID or NULL.*/CL_POOL_ID netClPoolIdGet    (    NET_POOL_ID		pNetPool,	/* pointer to the net pool */    int 		bufSize,	/* size of the buffer */    BOOL		bestFit		/* TRUE/FALSE */    )    {    if (pNetPool == NULL || pNetPool->pFuncTbl == NULL ||        pNetPool->pFuncTbl->pClPoolIdGetRtn == NULL)        return (NULL);    return ((*pNetPool->pFuncTbl->pClPoolIdGetRtn) (pNetPool, bufSize,                                                    bestFit));    }/********************************************************************************* netMblkToBufCopy - copy data from an `mBlk' to a buffer** This routine copies data from the `mBlk' chain referenced in <pMblk> to * the buffer referenced in <pBuf>.  It is assumed that <pBuf> points to * enough memory to contain all the data in the entire `mBlk' chain.* The argument <pCopyRtn> expects either a NULL or a function pointer to a * copy routine.  The arguments passed to the copy routine are source * pointer, destination pointer and the length of data to copy.  If <pCopyRtn> * is NULL, netMblkToBufCopy() uses a default routine to extract the data from * the chain.* * .SH "RETURNS"* The length of data copied or zero.*/int netMblkToBufCopy    (    M_BLK_ID 		pMblk,		/* pointer to an mBlk */    char *		pBuf,		/* pointer to the buffer to copy */    FUNCPTR		pCopyRtn	/* function pointer for copy routine */    )    {    char *		pChar;    if (pCopyRtn == NULL)        pCopyRtn = (FUNCPTR) bcopy;	/* default copy routine */    pChar = pBuf;    while (pMblk != NULL)        {        (*pCopyRtn) ((char *)pMblk->mBlkHdr.mData, pBuf, pMblk->mBlkHdr.mLen);        pBuf 	+= pMblk->mBlkHdr.mLen;        pMblk 	= pMblk->mBlkHdr.mNext;        }    return ((int) pBuf - (int) pChar);		/* return length copied */    }/********************************************************************************* netMblkDup - duplicate an `mBlk'** This routine copies the references from a source `mBlk' in * an `mBlk'-`clBlk'-cluster construct to a stand-alone `mBlk'.* This lets the two `mBlk' structures share the same `clBlk'-cluster* construct.  This routine also increments the reference count in the * shared `clBlk'.  The <pSrcMblk> expects a pointer to the source `mBlk'.  * The <pDescMblk> parameter expects a pointer to the destination `mBlk'. ** VXWORKS AE PROTECTION DOMAINS* Under VxWorks AE, you can call this function from within the kernel * protection domain only.  In addition, all arguments to this function can  * reference only that data which is valid in the kernel protection domain. * Likewise, the returned ID is valid in the kernel protection domain only.* This restriction does not apply under non-AE versions of VxWorks.  ** .SH "RETURNS"* A pointer to the destination `mBlk' or NULL if the source `mBlk' * referenced in <pSrcMblk> is not part of a * valid `mBlk'-`clBlk'-cluster construct.**/M_BLK_ID netMblkDup    (    M_BLK_ID	pSrcMblk,		/* pointer to source mBlk */    M_BLK_ID	pDestMblk		/* pointer to the destination mBlk */    )    {    int		level;			/* level of interrupt */    if (pSrcMblk == NULL || pDestMblk == NULL)        return (NULL);    if (M_HASCL (pSrcMblk))		/* only if associated with a cluster */        {        if (pSrcMblk->mBlkHdr.mFlags & M_PKTHDR)            pDestMblk->mBlkPktHdr = pSrcMblk->mBlkPktHdr;        pDestMblk->mBlkHdr.mData 	= pSrcMblk->mBlkHdr.mData;        pDestMblk->mBlkHdr.mLen 	= pSrcMblk->mBlkHdr.mLen;        pDestMblk->mBlkHdr.mType 	= pSrcMblk->mBlkHdr.mType;        pDestMblk->mBlkHdr.mFlags 	= pSrcMblk->mBlkHdr.mFlags;        pDestMblk->pClBlk 		= pSrcMblk->pClBlk;        level = intLock ();        ++(pDestMblk->pClBlk->clRefCnt);	/* increment the ref count */        intUnlock (level);        }    else        pDestMblk = NULL;    return (pDestMblk);    }/********************************************************************************* netMblkChainDup - duplicate an `mBlk' chain** This routine makes a copy of an `mBlk' chain starting at <offset> bytes from* the beginning of the chain and continuing for <len> bytes.  If <len> * is M_COPYALL, then this routine will copy the entire `mBlk' chain from * the <offset>.* * This routine copies the references from a source <pMblk> chain to* a newly allocated `mBlk' chain. * This lets the two `mBlk' chains share the same `clBlk'-cluster* constructs.  This routine also increments the reference count in the * shared `clBlk'.  The <pMblk> expects a pointer to the source `mBlk'* chain.  * The <pNetPool> parameter expects a pointer to the netPool from which* the new `mBlk' chain is allocated.** The <canWait> parameter determines the behavior if any required 'mBlk'* is not immediately available. A valu

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美激情| 国产蜜臀av在线一区二区三区| 国产原创一区二区三区| |精品福利一区二区三区| 欧美一区二区三区视频在线 | 国产成人在线视频网址| 亚洲一区二三区| 中文欧美字幕免费| 日韩视频免费直播| 欧美亚洲综合一区| 97久久精品人人做人人爽| 黑人巨大精品欧美一区| 日韩精品亚洲专区| 亚洲免费在线观看视频| 中文文精品字幕一区二区| 日韩精品综合一本久道在线视频| 色婷婷综合久久久| av不卡在线观看| 国产成人在线看| 精品一区二区日韩| 蜜臀av一区二区| 天堂资源在线中文精品| 一区二区三区在线播放| 国产精品久久久久久亚洲伦 | 色综合av在线| 99热99精品| 福利一区在线观看| 国产成人精品影视| 国产jizzjizz一区二区| 激情五月婷婷综合| 久久精品国产澳门| 美腿丝袜亚洲一区| 美腿丝袜亚洲色图| 久久97超碰色| 韩国成人精品a∨在线观看| 美女一区二区久久| 麻豆一区二区三| 久久福利资源站| 久久99精品国产麻豆婷婷洗澡| 日日摸夜夜添夜夜添精品视频| 亚洲在线中文字幕| 香蕉乱码成人久久天堂爱免费| 一区二区三区四区亚洲| 亚洲一区二区三区四区在线观看| 亚洲色图欧美偷拍| 亚洲观看高清完整版在线观看| 亚洲成人黄色小说| 蜜桃视频一区二区| 国产另类ts人妖一区二区| 国产福利精品导航| 99免费精品视频| 在线观看视频欧美| 欧美日韩国产另类不卡| 欧美一区二区高清| 久久亚洲影视婷婷| 国产精品青草久久| 亚洲永久免费av| 日本三级韩国三级欧美三级| 久久电影国产免费久久电影| 国产精品99精品久久免费| 成人avav在线| 在线精品国精品国产尤物884a| 欧美日韩一区二区三区免费看| 9191久久久久久久久久久| 久久综合国产精品| 日韩美女精品在线| 日韩av电影免费观看高清完整版在线观看| 五月天中文字幕一区二区| 精品一区二区三区视频 | 91麻豆国产自产在线观看| 欧美亚洲一区三区| 精品美女一区二区三区| 国产精品网站在线播放| 亚洲韩国一区二区三区| 精品一区二区久久久| 99久久精品免费| 91精品综合久久久久久| 国产精品剧情在线亚洲| 午夜精品福利视频网站| 国产福利一区在线| 欧美性感一类影片在线播放| 久久精品综合网| 亚洲综合色噜噜狠狠| 韩国三级电影一区二区| 色婷婷狠狠综合| 亚洲精品一区二区三区在线观看| 中文字幕在线观看不卡视频| 五月综合激情网| 99re热视频这里只精品| 日韩欧美国产成人一区二区| 亚洲欧美国产高清| 国产伦理精品不卡| 欧美色电影在线| 国产欧美一区视频| 水蜜桃久久夜色精品一区的特点| 大桥未久av一区二区三区中文| 欧美区在线观看| 亚洲视频免费在线| 国产呦精品一区二区三区网站| 欧美性大战xxxxx久久久| 久久午夜电影网| 舔着乳尖日韩一区| 99国内精品久久| 26uuu亚洲婷婷狠狠天堂| 亚洲午夜免费视频| 一本色道久久综合狠狠躁的推荐| 精品国产麻豆免费人成网站| 亚洲国产精品天堂| 91在线观看一区二区| 国产视频911| 久久精品av麻豆的观看方式| 欧美日韩激情一区二区| 亚洲免费色视频| 成人免费毛片a| 国产亚洲欧美色| 激情综合网av| 日韩一区二区三区视频在线| 亚洲一级二级在线| 91蜜桃网址入口| 中文字幕一区在线观看视频| 国产伦精品一区二区三区免费迷| 欧美一级免费大片| 日韩精品一卡二卡三卡四卡无卡| 在线视频一区二区免费| 亚洲人成精品久久久久| 波多野结衣亚洲一区| 国产精品美女久久福利网站| 国产精品一区二区在线观看不卡 | 欧美一区二区三区在线看| 亚洲午夜三级在线| 欧美日韩精品一区二区三区 | 欧美乱妇15p| 亚洲电影视频在线| 欧美日韩一区国产| 亚洲不卡一区二区三区| 欧美私模裸体表演在线观看| 亚洲黄色av一区| 欧美亚洲高清一区| 亚洲午夜激情网站| 欧美三级韩国三级日本三斤| 亚洲综合久久久| 欧美剧在线免费观看网站| 天堂av在线一区| 日韩一级欧美一级| 国产制服丝袜一区| 亚洲国产精品黑人久久久| 国产成人av一区二区三区在线观看| 久久免费精品国产久精品久久久久| 国产呦精品一区二区三区网站| 欧美激情中文字幕| 99国产精品久久久久| 一区二区三区不卡视频| 欧美视频在线一区二区三区| 视频在线观看一区| 久久综合成人精品亚洲另类欧美| 国产成都精品91一区二区三| 国产精品成人免费精品自在线观看| av动漫一区二区| 五月天一区二区| 久久久国产一区二区三区四区小说| 高清视频一区二区| 一区二区成人在线视频| 欧美一区二区三区视频| 国产乱理伦片在线观看夜一区| 亚洲桃色在线一区| 欧美精品三级在线观看| 国产一区二区三区四| 国产精品伦理一区二区| 欧美日韩情趣电影| 国产一区二区三区精品欧美日韩一区二区三区| 久久久不卡影院| 欧美日韩在线播放一区| 国产乱码精品一区二区三区忘忧草| 专区另类欧美日韩| 欧美一级生活片| 成人av资源在线观看| 天天免费综合色| 欧美国产国产综合| 欧美精选午夜久久久乱码6080| 激情欧美一区二区| 一区二区三区在线看| 精品sm捆绑视频| 91黄色免费观看| 国产精品白丝av| 日日骚欧美日韩| 亚洲视频在线观看三级| 精品久久人人做人人爱| 色综合天天性综合| 国产伦精品一区二区三区免费迷 | 亚洲一区二区三区不卡国产欧美| 日韩三级av在线播放| 91丨porny丨蝌蚪视频| 捆绑变态av一区二区三区| 日韩美女啊v在线免费观看| 26uuu国产电影一区二区| 欧美视频在线一区| 不卡一区中文字幕| 国产在线视频不卡二| 亚洲成a人片在线观看中文| 中文幕一区二区三区久久蜜桃|