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

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

?? rnglib.c

?? 環行buffer的實現以及操作函數,主要包括環行buffer的內存申請,釋放,讀取數據和寫入數據,還有返回該buffer的一些屬性參數
?? C
字號:
#include "rngLib.h"typedef struct {	int 	pToBuf;	int 	pFromBuf;	int 	bufSize;	char    *buf;}RING;typedef RING *RING_ID;/RING_ID rngCreate    (    int nbytes          /* number of bytes in ring buffer */    )    {    char *buffer;    RING_ID ringId = (RING_ID) kmalloc (sizeof (RING),GFP_KERNEL);    if (ringId == NULL)	return (NULL);    /* bump number of bytes requested because ring buffer algorithm     * always leaves at least one empty byte in buffer */    buffer = (char *) kmalloc ((unsigned) ++nbytes,GFP_KERNEL);    if (buffer == NULL)	{	kfree ((char *)ringId);	return (NULL);	}    ringId->bufSize = nbytes;    ringId->buf	    = buffer;    rngFlush (ringId);    return (ringId);    }void rngDelete    (     RING_ID ringId         /* ring buffer to delete */    )    {    kfree (ringId->buf);    kfree ((char *)ringId);    }void rngFlush    (     RING_ID ringId         /* ring buffer to initialize */    )    {    ringId->pToBuf   = 0;    ringId->pFromBuf = 0;    }int rngBufGet    (     RING_ID rngId,         /* ring buffer to get data from      */    char *buffer,               /* pointer to buffer to receive data */    int maxbytes                /* maximum number of bytes to get    */    )    {     int bytesgot = 0;    int pToBuf = rngId->pToBuf;    int bytes2;    int pRngTmp = 0;    if (pToBuf >= rngId->pFromBuf)	{	/* pToBuf has not wrapped around */	bytesgot = min (maxbytes, pToBuf - rngId->pFromBuf);	/*bcopy (&rngId->buf [rngId->pFromBuf], buffer, bytesgot);*/	memcpy(buffer,&rngId->buf [rngId->pFromBuf],bytesgot);	rngId->pFromBuf += bytesgot;	}    else	{	/* pToBuf has wrapped around.  Grab chars up to the end of the	 * buffer, then wrap around if we need to. */	bytesgot = min (maxbytes, rngId->bufSize - rngId->pFromBuf);	/*bcopy (&rngId->buf [rngId->pFromBuf], buffer, bytesgot);*/	memcpy(buffer,&rngId->buf [rngId->pFromBuf],bytesgot);	pRngTmp = rngId->pFromBuf + bytesgot;	/* If pFromBuf is equal to bufSize, we've read the entire buffer,	 * and need to wrap now.  If bytesgot < maxbytes, copy some more chars	 * in now. */	if (pRngTmp == rngId->bufSize)	    {	    bytes2 = min (maxbytes - bytesgot, pToBuf);	    /*bcopy (rngId->buf, buffer + bytesgot, bytes2);*/	    memcpy(buffer + bytesgot,rngId->buf,bytes2);	    rngId->pFromBuf = bytes2;	    bytesgot += bytes2;	    }	else	    rngId->pFromBuf = pRngTmp;	}    return (bytesgot);    }int rngBufPut    (     RING_ID rngId,         /* ring buffer to put data into  */    char *buffer,               /* buffer to get data from       */    int nbytes                  /* number of bytes to try to put */    )    {    	    int bytesput = 0;    int pFromBuf = rngId->pFromBuf;    int bytes2;    int pRngTmp = 0;//printk("3\n");    if (pFromBuf > rngId->pToBuf)	{	/* pFromBuf is ahead of pToBuf.  We can fill up to two bytes	 * before it */		bytesput = min (nbytes, pFromBuf - rngId->pToBuf - 1);	/*bcopy (buffer, &rngId->buf [rngId->pToBuf], bytesput);*/	memcpy(&rngId->buf [rngId->pToBuf],buffer,bytesput);	rngId->pToBuf += bytesput;	}    else if (pFromBuf == 0)	{	/* pFromBuf is at the beginning of the buffer.  We can fill till	 * the next-to-last element */	bytesput = min (nbytes, rngId->bufSize - rngId->pToBuf - 1);	/*bcopy (buffer, &rngId->buf [rngId->pToBuf], bytesput);*/	memcpy(&rngId->buf[rngId->pToBuf],buffer,bytesput);	rngId->pToBuf += bytesput;	}    else	{	/* pFromBuf has wrapped around, and its not 0, so we can fill	 * at least to the end of the ring buffer.  Do so, then see if	 * we need to wrap and put more at the beginning of the buffer. */	bytesput = min (nbytes, rngId->bufSize - rngId->pToBuf);	/*bcopy (buffer, &rngId->buf [rngId->pToBuf], bytesput);*/	memcpy(&rngId->buf [rngId->pToBuf],buffer,bytesput);	pRngTmp = rngId->pToBuf + bytesput;	if (pRngTmp == rngId->bufSize)	    {	    /* We need to wrap, and perhaps put some more chars */	    bytes2 = min (nbytes - bytesput, pFromBuf - 1);	    /*bcopy (buffer + bytesput, rngId->buf, bytes2);*/	    memcpy(rngId->buf,buffer + bytesput,bytes2);	    rngId->pToBuf = bytes2;	    bytesput += bytes2;	    }	else	    rngId->pToBuf = pRngTmp;	}	//printk("4\n");    return (bytesput);    }int rngIsEmpty    (    RING_ID ringId      /* ring buffer to test */    )    {    	if (ringId->pToBuf == ringId->pFromBuf)    		return 1;    	else    		return 0;    	    }int rngIsFull    (     RING_ID ringId         /* ring buffer to test */    )    {    int n = ringId->pToBuf - ringId->pFromBuf + 1;	if ((n == 0) || (n == ringId->bufSize))		return 0;	else		return -1;    }int rngFreeBytes    (     RING_ID ringId         /* ring buffer to examine */    )    {     int n = ringId->pFromBuf - ringId->pToBuf - 1;    if (n < 0)	n += ringId->bufSize;    return (n);    }int rngNBytes    (     RING_ID ringId         /* ring buffer to be enumerated */    )    {     int n = ringId->pToBuf - ringId->pFromBuf;    if (n < 0)	n += ringId->bufSize;    return (n);    }void rngPutAhead    (     RING_ID ringId,   /* ring buffer to put byte in    */    char byte,             /* byte to be put in ring        */    int offset             /* offset beyond next input byte where to put byte */    )    {     int n = ringId->pToBuf + offset;    if (n >= ringId->bufSize)	n -= ringId->bufSize;    *(ringId->buf + n) = byte;    }void rngMoveAhead    (     RING_ID ringId,  /* ring buffer to be advanced                  */     int n            /* number of bytes ahead to move input pointer */    )    {    n += ringId->pToBuf;    if (n >= ringId->bufSize)	n -= ringId->bufSize;    ringId->pToBuf = n;    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看日韩av| 久久66热偷产精品| 国产精品美女久久久久久久久| 日韩欧美高清一区| 精品国产一二三| 26uuu精品一区二区在线观看| 欧美一区二区福利在线| 欧美mv和日韩mv的网站| 久久久久久久久久看片| 欧美激情在线一区二区| 国产精品萝li| 亚洲国产精品视频| 久久99精品国产.久久久久久| 国产专区欧美精品| 99久久综合99久久综合网站| 色狠狠综合天天综合综合| 69久久夜色精品国产69蝌蚪网| 91精品免费观看| 国产日韩亚洲欧美综合| 亚洲日本va在线观看| 天天操天天综合网| 国产精品综合二区| 色综合天天综合色综合av| 欧美顶级少妇做爰| 国产欧美精品国产国产专区| 亚洲欧美日韩久久精品| 日本不卡一区二区三区| 国产精品99精品久久免费| 日本黄色一区二区| 欧美一区二区三区精品| 一区在线观看免费| 美女视频一区二区| 色综合久久久网| 欧美精品一区二区三区一线天视频| 1024精品合集| 国产毛片精品视频| 欧美久久久一区| 亚洲国产精华液网站w| 日韩国产高清在线| 99久久综合99久久综合网站| 日韩欧美的一区| 亚洲国产精品精华液网站 | 播五月开心婷婷综合| 91福利社在线观看| 欧美国产激情二区三区| 男人的天堂久久精品| 91看片淫黄大片一级在线观看| 欧美一级理论片| 洋洋成人永久网站入口| 风间由美一区二区三区在线观看| 欧美日本高清视频在线观看| 国产精品成人在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 色天使色偷偷av一区二区| 国产精品丝袜黑色高跟| 激情综合亚洲精品| 欧美一区二区在线视频| 亚洲aⅴ怡春院| 色综合网站在线| 亚洲欧洲日韩在线| 国产成人免费网站| 久久嫩草精品久久久精品一| 美腿丝袜一区二区三区| 欧美一区二区三区人| 亚洲va国产天堂va久久en| 色狠狠色噜噜噜综合网| 亚洲欧美另类久久久精品| 成人福利视频网站| 欧美激情综合在线| 成人小视频免费在线观看| 久久久噜噜噜久噜久久综合| 久久99精品网久久| 精品入口麻豆88视频| 喷白浆一区二区| 欧美一级日韩免费不卡| 美日韩一区二区三区| 日韩视频在线一区二区| 奇米在线7777在线精品| 日韩欧美中文一区| 久久丁香综合五月国产三级网站| 欧美一级理论片| 韩国午夜理伦三级不卡影院| 久久久久久久久久久久久久久99| 久久成人久久爱| 久久久五月婷婷| 国产91露脸合集magnet| 日韩美女视频一区| 欧美日韩激情一区二区| 韩国午夜理伦三级不卡影院| 久久免费电影网| 91片在线免费观看| 日韩中文字幕不卡| 精品成人在线观看| 国产伦精品一区二区三区在线观看| 久久久精品国产99久久精品芒果 | 大胆亚洲人体视频| 亚洲免费看黄网站| 91精品国产91热久久久做人人| 久久精品国产亚洲高清剧情介绍 | 五月天激情综合| 欧美一级高清片| 国产99精品视频| 亚洲影院免费观看| 日韩欧美激情一区| 色综合久久久久网| 美女视频一区二区三区| 国产精品夫妻自拍| 日韩三级.com| 91丨九色porny丨蝌蚪| 日韩av电影免费观看高清完整版 | 欧美午夜片在线看| 国产成人在线电影| 亚洲精品视频在线看| 精品美女一区二区| 色乱码一区二区三区88| 精品一区二区三区欧美| 一区二区三区视频在线看| 26uuu欧美| 欧美麻豆精品久久久久久| 国产精品综合网| 日韩成人午夜电影| 一区二区免费看| 国产精品私人影院| 久久亚洲春色中文字幕久久久| 欧美日韩大陆在线| av亚洲精华国产精华精华| 久久99国产精品成人| 亚洲午夜私人影院| 亚洲精品美腿丝袜| 国产精品美女久久久久aⅴ | 国产自产高清不卡| 日韩av成人高清| 亚洲bt欧美bt精品| 一区二区三区欧美| 1区2区3区精品视频| 亚洲国产高清在线| 久久精品一级爱片| 久久精品一二三| 26uuu精品一区二区在线观看| 91精品国产综合久久香蕉的特点| 色综合天天视频在线观看| 成人一区二区在线观看| 国产精品66部| 国产一区二区美女| 国产剧情一区在线| 韩国女主播一区二区三区| 美女脱光内衣内裤视频久久影院| 亚洲成人av中文| 亚洲网友自拍偷拍| 香蕉加勒比综合久久| 亚洲成在线观看| 无码av免费一区二区三区试看| 亚洲图片欧美综合| 日本不卡在线视频| 精品一区二区三区av| 国产一区二区视频在线播放| 久久99这里只有精品| 国产精品夜夜嗨| 不卡一区中文字幕| 91丨九色丨黑人外教| 欧美日韩你懂得| 欧美大胆一级视频| 久久久久久久免费视频了| 国产精品久久99| 亚洲国产成人av网| 久久精品国产久精国产| 国产综合久久久久久鬼色| 成人综合激情网| 色狠狠色狠狠综合| 欧美一区二区免费观在线| 久久综合色之久久综合| 国产精品久久久久久一区二区三区| 一区免费观看视频| 视频一区二区中文字幕| 久久99热99| 一本大道久久a久久综合婷婷| 欧美日韩中文字幕一区| 久久美女艺术照精彩视频福利播放| 中文av一区二区| 亚洲国产毛片aaaaa无费看 | 成人一区二区视频| 在线亚洲欧美专区二区| 精品sm在线观看| 一区二区三区在线观看视频 | 91在线免费看| 欧美军同video69gay| 国产亚洲精品久| 亚洲高清免费在线| 久久成人av少妇免费| 91国模大尺度私拍在线视频| 欧美成人r级一区二区三区| 国产精品理论在线观看| 日韩精品久久理论片| 成人av电影观看| 日韩一级高清毛片| 亚洲一区二区三区四区在线免费观看| 蜜臀久久99精品久久久久久9| 97精品电影院| 国产欧美日本一区视频| 免费在线看成人av|