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

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

?? bget.c

?? COS 0.0.1.rar Cos操作系統(tǒng)源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    b = BFH(((char *) buf) - sizeof(struct bhead));#ifdef BufStats    numrel++;			      /* Increment number of brel() calls */#endif    assert(buf != NULL);#ifdef BECtl    if (b->bh.bsize == 0) {	      /* Directly-acquired buffer? */	struct bdhead *bdh;	bdh = BDH(((char *) buf) - sizeof(struct bdhead));	assert(b->bh.prevfree == 0);#ifdef BufStats	totalloc -= bdh->tsize;	assert(totalloc >= 0);	numdrel++;		      /* Number of direct releases */#endif /* BufStats */#ifdef FreeWipe	V memset((char *) buf, 0x55,		 (MemSize) (bdh->tsize - sizeof(struct bdhead)));#endif /* FreeWipe */	assert(relfcn != NULL);	(*relfcn)((void *) bdh);      /* Release it directly. */	return;    }#endif /* BECtl */    /* Buffer size must be negative, indicating that the buffer is       allocated. */    if (b->bh.bsize >= 0) {	bn = NULL;    }    assert(b->bh.bsize < 0);    /*	Back pointer in next buffer must be zero, indicating the	same thing: */    assert(BH((char *) b - b->bh.bsize)->prevfree == 0);#ifdef BufStats    totalloc += b->bh.bsize;    assert(totalloc >= 0);#endif    /* If the back link is nonzero, the previous buffer is free.  */    if (b->bh.prevfree != 0) {	/* The previous buffer is free.  Consolidate this buffer  with	it	   by  adding  the  length  of	this  buffer  to the previous free	   buffer.  Note that we subtract the size  in	the  buffer  being           released,  since  it's  negative to indicate that the buffer is	   allocated. */	register bufsize size = b->bh.bsize;        /* Make the previous buffer the one we're working on. */	assert(BH((char *) b - b->bh.prevfree)->bsize == b->bh.prevfree);	b = BFH(((char *) b) - b->bh.prevfree);	b->bh.bsize -= size;    } else {        /* The previous buffer isn't allocated.  Insert this buffer	   on the free list as an isolated free block. */	assert(freelist.ql.blink->ql.flink == &freelist);	assert(freelist.ql.flink->ql.blink == &freelist);	b->ql.flink = &freelist;	b->ql.blink = freelist.ql.blink;	freelist.ql.blink = b;	b->ql.blink->ql.flink = b;	b->bh.bsize = -b->bh.bsize;    }    /* Now we look at the next buffer in memory, located by advancing from       the  start  of  this  buffer  by its size, to see if that buffer is       free.  If it is, we combine  this  buffer  with	the  next  one	in       memory, dechaining the second buffer from the free list. */    bn =  BFH(((char *) b) + b->bh.bsize);    if (bn->bh.bsize > 0) {	/* The buffer is free.	Remove it from the free list and add	   its size to that of our buffer. */	assert(BH((char *) bn + bn->bh.bsize)->prevfree == bn->bh.bsize);	assert(bn->ql.blink->ql.flink == bn);	assert(bn->ql.flink->ql.blink == bn);	bn->ql.blink->ql.flink = bn->ql.flink;	bn->ql.flink->ql.blink = bn->ql.blink;	b->bh.bsize += bn->bh.bsize;	/* Finally,  advance  to   the	buffer	that   follows	the  newly	   consolidated free block.  We must set its  backpointer  to  the	   head  of  the  consolidated free block.  We know the next block	   must be an allocated block because the process of recombination	   guarantees  that  two  free	blocks will never be contiguous in	   memory.  */	bn = BFH(((char *) b) + b->bh.bsize);    }#ifdef FreeWipe    V memset(((char *) b) + sizeof(struct bfhead), 0x55,	    (MemSize) (b->bh.bsize - sizeof(struct bfhead)));#endif    assert(bn->bh.bsize < 0);    /* The next buffer is allocated.  Set the backpointer in it  to  point       to this buffer; the previous free buffer in memory. */    bn->bh.prevfree = b->bh.bsize;#ifdef BECtl    /*	If  a  block-release function is defined, and this free buffer	constitutes the entire block, release it.  Note that  pool_len	is  defined  in  such a way that the test will fail unless all	pool blocks are the same size.	*/    if (relfcn != NULL &&	((bufsize) b->bh.bsize) == (pool_len - sizeof(struct bhead))) {	assert(b->bh.prevfree == 0);	assert(BH((char *) b + b->bh.bsize)->bsize == ESent);	assert(BH((char *) b + b->bh.bsize)->prevfree == b->bh.bsize);	/*  Unlink the buffer from the free list  */	b->ql.blink->ql.flink = b->ql.flink;	b->ql.flink->ql.blink = b->ql.blink;	(*relfcn)(b);#ifdef BufStats	numprel++;		      /* Nr of expansion block releases */	numpblk--;		      /* Total number of blocks */	assert(numpblk == numpget - numprel);#endif /* BufStats */    }#endif /* BECtl */}#ifdef BECtl/*  BECTL  --  Establish automatic pool expansion control  */void bectl(compact, acquire, release, pool_incr)  int (*compact) (bufsize sizereq, int sequence);  void *(*acquire) (bufsize size);  void (*release) (void *buf);  bufsize pool_incr;{    compfcn = compact;    acqfcn = acquire;    relfcn = release;    exp_incr = pool_incr;}#endif/*  BPOOL  --  Add a region of memory to the buffer pool.  */void bpool(buf, len)  void *buf;  bufsize len;{    struct bfhead *b = BFH(buf);    struct bhead *bn;#ifdef SizeQuant    len &= ~(SizeQuant - 1);#endif#ifdef BECtl    if (pool_len == 0) {	pool_len = len;    } else if (len != pool_len) {	pool_len = -1;    }#ifdef BufStats    numpget++;			      /* Number of block acquisitions */    numpblk++;			      /* Number of blocks total */    assert(numpblk == numpget - numprel);#endif /* BufStats */#endif /* BECtl */    /* Since the block is initially occupied by a single free  buffer,       it  had	better	not  be  (much) larger than the largest buffer       whose size we can store in bhead.bsize. */    assert(len - sizeof(struct bhead) <= -((bufsize) ESent + 1));    /* Clear  the  backpointer at  the start of the block to indicate that       there  is  no  free  block  prior  to  this   one.    That   blocks       recombination when the first block in memory is released. */    b->bh.prevfree = 0;    /* Chain the new block to the free list. */    assert(freelist.ql.blink->ql.flink == &freelist);    assert(freelist.ql.flink->ql.blink == &freelist);    b->ql.flink = &freelist;    b->ql.blink = freelist.ql.blink;    freelist.ql.blink = b;    b->ql.blink->ql.flink = b;    /* Create a dummy allocated buffer at the end of the pool.	This dummy       buffer is seen when a buffer at the end of the pool is released and       blocks  recombination  of  the last buffer with the dummy buffer at       the end.  The length in the dummy buffer  is  set  to  the  largest       negative  number  to  denote  the  end  of  the pool for diagnostic       routines (this specific value is  not  counted  on  by  the  actual       allocation and release functions). */    len -= sizeof(struct bhead);    b->bh.bsize = (bufsize) len;#ifdef FreeWipe    V memset(((char *) b) + sizeof(struct bfhead), 0x55,	     (MemSize) (len - sizeof(struct bfhead)));#endif    bn = BH(((char *) b) + len);    bn->prevfree = (bufsize) len;    /* Definition of ESent assumes two's complement! */    assert((~0) == -1);    bn->bsize = ESent;}#ifdef BufStats/*  BSTATS  --	Return buffer allocation free space statistics.  */void bstats(curalloc, totfree, maxfree, nget, nrel)  bufsize *curalloc, *totfree, *maxfree;  long *nget, *nrel;{    struct bfhead *b = freelist.ql.flink;    *nget = numget;    *nrel = numrel;    *curalloc = totalloc;    *totfree = 0;    *maxfree = -1;    while (b != &freelist) {	assert(b->bh.bsize > 0);	*totfree += b->bh.bsize;	if (b->bh.bsize > *maxfree) {	    *maxfree = b->bh.bsize;	}	b = b->ql.flink;	      /* Link to next buffer */    }}#ifdef BECtl/*  BSTATSE  --  Return extended statistics  */void bstatse(pool_incr, npool, npget, nprel, ndget, ndrel)  bufsize *pool_incr;  long *npool, *npget, *nprel, *ndget, *ndrel;{    *pool_incr = (pool_len < 0) ? -exp_incr : exp_incr;    *npool = numpblk;    *npget = numpget;    *nprel = numprel;    *ndget = numdget;    *ndrel = numdrel;}#endif /* BECtl */#endif /* BufStats */#ifdef DumpData/*  BUFDUMP  --  Dump the data in a buffer.  This is called with the  user		 data pointer, and backs up to the buffer header.  It will		 dump either a free block or an allocated one.	*/void bufdump(buf)  void *buf;{    struct bfhead *b;    unsigned char *bdump;    bufsize bdlen;    b = BFH(((char *) buf) - sizeof(struct bhead));    assert(b->bh.bsize != 0);    if (b->bh.bsize < 0) {	bdump = (unsigned char *) buf;	bdlen = (-b->bh.bsize) - sizeof(struct bhead);    } else {	bdump = (unsigned char *) (((char *) b) + sizeof(struct bfhead));	bdlen = b->bh.bsize - sizeof(struct bfhead);    }    while (bdlen > 0) {	int i, dupes = 0;	bufsize l = bdlen;	char bhex[50], bascii[20];	if (l > 16) {	    l = 16;	}	for (i = 0; i < l; i++) {            V sprintf(bhex + i * 3, "%02X ", bdump[i]);            bascii[i] = isprint(bdump[i]) ? bdump[i] : ' ';	}	bascii[i] = 0;        V printf("%-48s   %s\n", bhex, bascii);	bdump += l;	bdlen -= l;	while ((bdlen > 16) && (memcmp((char *) (bdump - 16),				       (char *) bdump, 16) == 0)) {	    dupes++;	    bdump += 16;	    bdlen -= 16;	}	if (dupes > 1) {	    V printf(                "     (%d lines [%d bytes] identical to above line skipped)\n",		dupes, dupes * 16);	} else if (dupes == 1) {	    bdump -= 16;	    bdlen += 16;	}    }}#endif#ifdef BufDump/*  BPOOLD  --	Dump a buffer pool.  The buffer headers are always listed.		If DUMPALLOC is nonzero, the contents of allocated buffers		are  dumped.   If  DUMPFREE  is  nonzero,  free blocks are		dumped as well.  If FreeWipe  checking	is  enabled,  free		blocks	which  have  been clobbered will always be dumped. */void bpoold(buf, dumpalloc, dumpfree)  void *buf;  int dumpalloc, dumpfree;{    struct bfhead *b = BFH(buf);    while (b->bh.bsize != ESent) {	bufsize bs = b->bh.bsize;	if (bs < 0) {	    bs = -bs;            V printf("Allocated buffer: size %6ld bytes.\n", (long) bs);	    if (dumpalloc) {		bufdump((void *) (((char *) b) + sizeof(struct bhead)));	    }	} else {            char *lerr = "";	    assert(bs > 0);	    if ((b->ql.blink->ql.flink != b) ||		(b->ql.flink->ql.blink != b)) {                lerr = "  (Bad free list links)";	    }            V printf("Free block:       size %6ld bytes.%s\n",		(long) bs, lerr);#ifdef FreeWipe	    lerr = ((char *) b) + sizeof(struct bfhead);	    if ((bs > sizeof(struct bfhead)) && ((*lerr != 0x55) ||		(memcmp(lerr, lerr + 1,		  (MemSize) (bs - (sizeof(struct bfhead) + 1))) != 0))) {		V printf(                    "(Contents of above free block have been overstored.)\n");		bufdump((void *) (((char *) b) + sizeof(struct bhead)));	    } else#endif	    if (dumpfree) {		bufdump((void *) (((char *) b) + sizeof(struct bhead)));	    }	}	b = BFH(((char *) b) + bs);    }}#endif /* BufDump */#ifdef BufValid/*  BPOOLV  --  Validate a buffer pool.  If NDEBUG isn't defined,		any error generates an assertion failure.  */int bpoolv(buf)  void *buf;{    struct bfhead *b = BFH(buf);    while (b->bh.bsize != ESent) {	bufsize bs = b->bh.bsize;	if (bs < 0) {	    bs = -bs;	} else {            char *lerr = "";	    assert(bs > 0);	    if (bs <= 0) {		return 0;	    }	    if ((b->ql.blink->ql.flink != b) ||		(b->ql.flink->ql.blink != b)) {                V printf("Free block: size %6ld bytes.  (Bad free list links)\n",		     (long) bs);		assert(0);		return 0;	    }#ifdef FreeWipe	    lerr = ((char *) b) + sizeof(struct bfhead);	    if ((bs > sizeof(struct bfhead)) && ((*lerr != 0x55) ||		(memcmp(lerr, lerr + 1,		  (MemSize) (bs - (sizeof(struct bfhead) + 1))) != 0))) {		V printf(                    "(Contents of above free block have been overstored.)\n");		bufdump((void *) (((char *) b) + sizeof(struct bhead)));		assert(0);		return 0;	    }#endif	}	b = BFH(((char *) b) + bs);    }    return 1;}#endif /* BufValid */ // Test program removed

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久蜜桃| 日本一区二区电影| 成人久久视频在线观看| 婷婷久久综合九色综合伊人色| 久久品道一品道久久精品| 欧美日韩一区二区三区视频| 国产成人亚洲综合a∨婷婷| 日韩电影免费一区| 一区二区三区精品视频在线| 国产亚洲成av人在线观看导航| 欧美日韩和欧美的一区二区| 99久久综合狠狠综合久久| 精品一区在线看| 日韩专区中文字幕一区二区| 一区二区三区在线看| 中文字幕欧美国产| 精品国产伦一区二区三区观看方式| 欧美日韩午夜影院| 色欧美乱欧美15图片| 99久久精品国产网站| 国产91在线|亚洲| 久久99最新地址| 另类专区欧美蜜桃臀第一页| 欧美aaa在线| 亚州成人在线电影| 午夜精品在线看| 午夜久久久久久久久| 亚洲无人区一区| 亚洲一级在线观看| 亚洲激情成人在线| 亚洲黄色av一区| 亚洲免费资源在线播放| 亚洲女厕所小便bbb| 亚洲精品伦理在线| 亚洲一区影音先锋| 午夜婷婷国产麻豆精品| 日韩有码一区二区三区| 日韩国产欧美在线视频| 蜜桃av一区二区在线观看| 蜜臀国产一区二区三区在线播放| 欧美aaaaaa午夜精品| 美国十次了思思久久精品导航| 麻豆成人久久精品二区三区红| 日本不卡123| 国模套图日韩精品一区二区| 国产精品一二三| av电影在线观看一区| 一本色道久久综合亚洲aⅴ蜜桃| 色悠久久久久综合欧美99| 欧美性感一类影片在线播放| 欧美美女bb生活片| 日韩一区二区不卡| 久久色在线视频| 国产精品久久久久一区二区三区 | 99久久国产综合色|国产精品| 91在线无精精品入口| 欧美亚洲国产一区二区三区va| 欧美三级在线看| 日韩精品一区二区三区在线播放| 337p粉嫩大胆噜噜噜噜噜91av| 中文字幕精品一区二区精品绿巨人| 国产精品美女一区二区在线观看| 一区二区三区四区中文字幕| 亚洲国产成人porn| 九色|91porny| 97精品电影院| 欧美日韩国产在线观看| 久久久久久综合| 亚洲日本乱码在线观看| 日韩av一二三| 成人激情校园春色| 欧美精选午夜久久久乱码6080| 久久蜜桃一区二区| 亚洲精品第一国产综合野| 美女国产一区二区| 99在线精品免费| 日韩欧美一区中文| 1024亚洲合集| 美女脱光内衣内裤视频久久影院| 成人黄色综合网站| 欧美一区日本一区韩国一区| 国产精品视频线看| 日韩av在线免费观看不卡| 波多野结衣视频一区| 欧美日韩国产小视频在线观看| 久久精品这里都是精品| 一区二区在线观看视频| 国内精品自线一区二区三区视频| av影院午夜一区| 欧美一区二区三区免费视频| 国产精品女主播av| 日本欧美一区二区三区| 99re这里只有精品首页| 亚洲精品在线三区| 亚洲超碰97人人做人人爱| 成人福利视频网站| 2021国产精品久久精品| 亚洲午夜日本在线观看| 成人动漫精品一区二区| 欧美v日韩v国产v| 亚洲国产日韩综合久久精品| 波多野结衣中文一区| 精品剧情在线观看| 亚洲国产成人av好男人在线观看| 成人性生交大片| 久久综合av免费| 日本欧美一区二区在线观看| 欧美性猛片aaaaaaa做受| 国产精品第13页| 国产成人精品免费在线| 精品国产乱码久久久久久免费| 午夜激情久久久| 欧美三级电影在线观看| 亚洲精品综合在线| 99久久夜色精品国产网站| 久久免费看少妇高潮| 精品在线免费观看| 日韩美一区二区三区| 日本欧美一区二区在线观看| 91行情网站电视在线观看高清版| 综合激情网...| eeuss鲁一区二区三区| 国产精品情趣视频| 国产**成人网毛片九色| 国产三级欧美三级日产三级99| 久久福利视频一区二区| 91精品国产91久久久久久一区二区| 亚洲高清久久久| 欧美日韩日本视频| 午夜日韩在线观看| 69堂亚洲精品首页| 免费看日韩精品| 精品国产一区二区三区不卡| 九色porny丨国产精品| wwwwww.欧美系列| 国产精品亚洲第一区在线暖暖韩国| 精品国产不卡一区二区三区| 国内外精品视频| 久久精品免视看| 成人黄色777网| 亚洲欧洲综合另类在线| 色综合久久久久网| 亚洲午夜久久久久久久久久久| 欧美日韩中文精品| 日韩精品福利网| 精品国产凹凸成av人导航| 精品一区二区三区久久| 国产亚洲精品bt天堂精选| 99综合影院在线| 亚洲国产精品久久久久婷婷884| 在线观看91精品国产麻豆| 久久国产精品色婷婷| 亚洲国产成人私人影院tom| 99久久精品99国产精品| 亚洲第一搞黄网站| 26uuu亚洲综合色| 国产91丝袜在线观看| 亚洲免费av网站| 91精品午夜视频| 国产精品自拍三区| 一区二区在线电影| 日韩欧美一级片| 99久久免费视频.com| 亚洲bt欧美bt精品777| 久久久久久一级片| 在线观看日韩电影| 久久精品国产秦先生| 国产精品麻豆一区二区| 欧美日韩高清在线播放| 国产在线播放一区三区四| 亚洲欧洲日韩一区二区三区| 欧美日韩在线精品一区二区三区激情 | 蜜桃久久久久久久| 中国色在线观看另类| 欧美精品久久99久久在免费线| 国产成人在线观看| 亚洲电影在线免费观看| 国产日韩欧美激情| 欧美日韩另类一区| 粗大黑人巨茎大战欧美成人| 丝袜诱惑亚洲看片| 中文字幕一区二区三区在线观看 | 26uuu亚洲| 欧美丝袜丝交足nylons图片| 精品一区二区日韩| 亚洲精品高清在线| 久久久久久久久久久久久女国产乱 | 成人黄页在线观看| 免费在线观看日韩欧美| 亚洲人成伊人成综合网小说| 日韩三级伦理片妻子的秘密按摩| 色综合亚洲欧洲| 国产不卡在线播放| 日本亚洲电影天堂| 亚洲亚洲精品在线观看| 亚洲国产精品v| 精品国产一区二区三区四区四 | 91免费国产在线观看| 久久精品国产亚洲一区二区三区| 一区二区欧美视频|