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

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

?? erl_memory_trace_block_table.c

?? OTP是開放電信平臺的簡稱
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* ``The contents of this file are subject to the Erlang Public License, * Version 1.1, (the "License"); you may not use this file except in * compliance with the License. You should have received a copy of the * Erlang Public License along with this software. If not, it can be * retrieved via the world wide web at http://www.erlang.org/. *  * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. *  * The Initial Developer of the Original Code is Ericsson Utvecklings AB. * Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings * AB. All Rights Reserved.'' *  *     $Id$ *//* * Description:	 * * Author: 	Rickard Green *//* Headers to include ... */#ifdef HAVE_CONFIG_H#	include "config.h"#endif#include "erl_memory_trace_block_table.h"#include <errno.h>#undef HARD_DEBUG#undef REALLY_HARD_DEBUG#ifdef DEBUG#  define HARD_DEBUG 0#  define REALLY_HARD_DEBUG 0#else#  define HARD_DEBUG 0#  define REALLY_HARD_DEBUG 0#endif/* Some system specific defines ... */#if defined(__WIN32__) && !defined(__GNUC__)#	define INLINE __forceinline#else#	ifdef __GNUC__#		define INLINE __inline__#	else#		define INLINE#	endif#endif/* Our own assert() ... */#ifdef DEBUG#define ASSERT(A) ((void) ((A) ? 1 : assert_failed(__FILE__, __LINE__, #A)))#include <stdio.h>static int assert_failed(char *f, int l, char *a){    fprintf(stderr, "%s:%d: Assertion failed: %s\n", f, l, a);    abort();    return 0;}#else#define ASSERT(A) ((void) 1)#endif#define EMTBT_BLOCKS_PER_POOL 1000typedef struct emtbt_block_pool_ {    struct emtbt_block_pool_ *next;    emtbt_block blocks[1];} emtbt_block_pool;struct emtbt_table_ {    void * (*alloc)(size_t);    void * (*realloc)(void *, size_t);    void   (*free)(void *);    int is_64_bit;    int no_blocks;    int no_of_buckets;    int max_used_buckets;    int min_used_buckets;    int used_buckets;    int current_size_index;    emtbt_block *blocks;    emtbt_block ** buckets;    /* Fixed size allocation of blocks */    emtbt_block_pool *block_pools;    emtbt_block *free_blocks;    int blocks_per_pool;};static emtbt_block null_blk = {0};/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\ * Block table                                                             * *                                                                         *\*                                                                         */#if HARD_DEBUGstatic void check_table(emtbt_table *table);#endifstatic emtbt_block *block_alloc_new_pool(emtbt_table *tab){    size_t size;    emtbt_block_pool *poolp;    size = sizeof(emtbt_block_pool) - sizeof(emtbt_block);    size += tab->blocks_per_pool*sizeof(emtbt_block);    poolp = (*tab->alloc)(size);    if (poolp) {	int i;	emtbt_block *blks;	poolp->next = tab->block_pools;	tab->block_pools = poolp;	blks = (emtbt_block *) poolp->blocks;	for (i = 1; i < tab->blocks_per_pool - 1; i++)	    blks[i].next = &blks[i + 1];	blks[tab->blocks_per_pool - 1].next = NULL;	tab->free_blocks = &blks[1];	return &blks[0];    }    return NULL;}static INLINE emtbt_block *block_alloc(emtbt_table *tab){    emtbt_block *res;#if HARD_DEBUG    check_table(tab);#endif    if (tab->free_blocks) {	res = tab->free_blocks;	tab->free_blocks = tab->free_blocks->next;    }    else {	res = block_alloc_new_pool(tab);    }#ifdef DEBUG    res->next = ((emtbt_block *) 0xfffffff0);    res->prev = ((emtbt_block *) 0xfffffff0);    res->bucket = ((emtbt_block **) 0xfffffff0);#endif#if HARD_DEBUG    check_table(tab);#endif    return res;}static INLINE voidblock_free(emtbt_table *tab, emtbt_block *bp){#if HARD_DEBUG    check_table(tab);#endif    bp->next = tab->free_blocks;    tab->free_blocks = bp;#if HARD_DEBUG    check_table(tab);#endif}#define PRIME0 ((usgnd_int_32) 268438039)#define PRIME1 ((usgnd_int_32) 268440479)#define PRIME2 ((usgnd_int_32) 268439161)#define PRIME3 ((usgnd_int_32) 268437017)#define MK_HASH(H, P, IS64)						\do {									\    (H) = (P) & 0xff;							\    (H) *= PRIME0;							\    (H) += ((P) >> 8) & 0xff;						\    (H) *= PRIME1;							\    (H) += ((P) >> 16) & 0xff;						\    (H) *= PRIME2;							\    (H) += ((P) >> 24) & 0xff;						\    (H) *= PRIME3;							\    if ((IS64)) {							\	(H) += ((P) >> 32) & 0xff;					\	(H) *= PRIME0;							\	(H) += ((P) >> 40) & 0xff;					\	(H) *= PRIME1;							\	(H) += ((P) >> 48) & 0xff;					\	(H) *= PRIME2;							\	(H) += ((P) >> 56) & 0xff;					\	(H) *= PRIME3;							\    }									\} while (0)static const int table_sizes[] = {    3203,    4813,    6421,    9643,    12853,    19289,    25717,    51437,    102877,    205759,    411527,    823117,    1646237,    3292489,    6584983,    13169977,    26339969,    52679969};#if HARD_DEBUGstatic voidcheck_table(emtbt_table *table){    int no_blocks;    emtbt_block *block, *prev_block;    no_blocks = 0;    block = table->blocks;    ASSERT(!block || !block->prev);    prev_block = NULL;    while (block) {	usgnd_int_32 hash;	MK_HASH(hash, block->pointer, table->is_64_bit);	ASSERT(hash == block->hash);	ASSERT(block->bucket - table->buckets	       == hash % table->no_of_buckets);	ASSERT(!prev_block || prev_block == block->prev);	prev_block = block;	block = block->next;	no_blocks++;	ASSERT(table->no_blocks >= no_blocks);    }    ASSERT(table->no_blocks == no_blocks);#if REALLY_HARD_DEBUG    {	int i;	for (i = 0; i < table->no_of_buckets; i++) {	    int bucket_end_found;	    emtbt_block **bucket;	    if (!table->buckets[i])		continue;	    bucket_end_found = 0;	    bucket = &table->buckets[i];	    for (block = table->blocks; block; block = block->next) {		if (block->bucket == bucket) {		    if (!block->prev || block->prev->bucket != bucket)			ASSERT(*bucket == block);		    if (!block->next || block->next->bucket != bucket)			bucket_end_found++;		}	    }	    ASSERT(bucket_end_found);	}    }#endif}#endifstatic INLINE voidlink_block(emtbt_table *table, emtbt_block **bucket, emtbt_block *block){    ASSERT(bucket);    block->bucket = bucket;    if (*bucket) {	block->next = *bucket;	block->prev = (*bucket)->prev;	if (block->prev)	    block->prev->next = block;	else	    table->blocks = block;	block->next->prev = block;    }    else {	block->next = table->blocks;	block->prev = NULL;	if (table->blocks)	    table->blocks->prev = block;	table->blocks = block;	table->used_buckets++;    }    *bucket = block;    table->no_blocks++;#if HARD_DEBUG    check_table(table);#endif}static intresize_table(emtbt_table *table, int new_no_of_buckets){#ifdef DEBUG    int org_no_blocks;#endif    int i;    emtbt_block *block;    emtbt_block **buckets;    if (new_no_of_buckets < table->no_of_buckets) {	/* shrink never fails */	buckets = (emtbt_block **) (*table->realloc)(table->buckets,						     (sizeof(emtbt_block *)						      * new_no_of_buckets));	if (!buckets)	    return 1;    }    else if (new_no_of_buckets > table->no_of_buckets) {	(*table->free)((void *) table->buckets);	buckets = (emtbt_block **) (*table->alloc)((sizeof(emtbt_block *)						    * new_no_of_buckets));	if (!buckets)	    return 0;    }    else	return 1;    table->buckets = buckets;    table->no_of_buckets = new_no_of_buckets;    table->max_used_buckets = (4*new_no_of_buckets)/5;    table->min_used_buckets = new_no_of_buckets/5;    table->used_buckets = 0;#ifdef DEBUG    org_no_blocks = table->no_blocks;#endif    table->no_blocks = 0;        for (i = 0; i < new_no_of_buckets; i++)	buckets[i] = NULL;    block = table->blocks;    table->blocks = NULL;    while (block) {	emtbt_block *next_block = block->next;	link_block(table,&table->buckets[block->hash%new_no_of_buckets],block);	block = next_block;    }    ASSERT(org_no_blocks == table->no_blocks);    return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美理论片在线| 一区二区三区中文字幕在线观看| 国产日本一区二区| 亚洲激情在线激情| 国产传媒日韩欧美成人| 在线观看国产一区二区| 2021久久国产精品不只是精品| 亚洲欧美日韩国产另类专区 | 日产国产欧美视频一区精品| 国产精品1区二区.| 日韩一区二区精品在线观看| 亚洲欧美一区二区久久 | 欧美精品一区二区三区在线| 亚洲视频免费看| 国产经典欧美精品| 欧美一区二区三区在线视频| 一区二区三区四区中文字幕| 国产一区美女在线| 欧美久久久久免费| 亚洲乱码中文字幕| heyzo一本久久综合| 亚洲精品在线观看网站| 日日摸夜夜添夜夜添精品视频| 91免费看视频| 中文字幕在线不卡视频| 国产乱码字幕精品高清av| 91精选在线观看| 亚洲国产一二三| 在线精品观看国产| 亚洲精品成a人| 一本到高清视频免费精品| 亚洲国产岛国毛片在线| 成人亚洲精品久久久久软件| 久久久亚洲精品一区二区三区| 美女视频黄久久| 欧美成人女星排行榜| 美女久久久精品| 日韩片之四级片| 狠狠色丁香婷综合久久| 精品1区2区在线观看| 国产精品一二三四| 日本一区二区三区国色天香| 豆国产96在线|亚洲| 国产欧美精品一区二区三区四区| 国产精品一区二区不卡| 国产精品美女久久久久久| 成人18精品视频| 国产精品欧美一级免费| 一本大道久久a久久精二百| 夜夜嗨av一区二区三区中文字幕| 91国模大尺度私拍在线视频| 亚洲国产精品综合小说图片区| 欧美日韩一区成人| 美国十次综合导航| 国产色产综合产在线视频| 成人av电影在线网| 亚洲一区在线观看视频| 欧美一区二区三区四区五区| 久久机这里只有精品| 国产亚洲成av人在线观看导航| 国产剧情av麻豆香蕉精品| 国产网站一区二区| 99久久er热在这里只有精品15 | 中文字幕第一区综合| 一道本成人在线| 日本亚洲最大的色成网站www| 久久综合九色综合欧美98| 成人中文字幕在线| 午夜精品福利视频网站 | 欧美视频一区二区在线观看| 免费观看一级特黄欧美大片| 国产嫩草影院久久久久| 91免费观看国产| 免费成人美女在线观看.| 中文字幕第一区二区| 欧美日韩一区二区三区不卡| 国产精选一区二区三区| 一区二区三区不卡视频在线观看| 欧美xxxx老人做受| 日本精品一区二区三区高清| 蜜桃视频一区二区三区| 亚洲精品视频一区二区| 久久精品一区二区三区四区| 欧美吻胸吃奶大尺度电影| 国产夫妻精品视频| 天堂一区二区在线| 亚洲免费观看高清完整版在线观看| 欧美va亚洲va在线观看蝴蝶网| 91福利视频久久久久| 成人激情小说乱人伦| 蜜臀久久99精品久久久久宅男| 国产精品超碰97尤物18| 精品国产乱码久久久久久1区2区| 99re在线视频这里只有精品| 韩国欧美一区二区| 三级精品在线观看| 亚洲精品乱码久久久久| 国产欧美综合在线| 日韩一级免费观看| 欧美色精品天天在线观看视频| 高清beeg欧美| 国产一区二区三区最好精华液| 一区二区三区日本| 亚洲欧洲精品天堂一级| 久久理论电影网| 日韩一级大片在线| 欧美一级在线免费| 欧美美女喷水视频| 欧美自拍偷拍一区| 在线免费观看一区| 日本韩国一区二区| 色偷偷成人一区二区三区91| 波多野结衣一区二区三区 | 亚洲成人av一区二区| 中文字幕一区二区5566日韩| 久久久久久9999| 久久久精品国产免大香伊 | 欧美国产精品中文字幕| 26uuu亚洲| 欧美高清在线视频| 国产精品久久看| 亚洲色图欧洲色图| 亚洲免费在线播放| 亚洲精品菠萝久久久久久久| 亚洲精品国产品国语在线app| 亚洲欧洲av在线| 亚洲日本欧美天堂| 一区二区久久久久| 一区二区免费在线播放| 无码av中文一区二区三区桃花岛| 午夜一区二区三区在线观看| 五月天激情小说综合| 日韩av网站在线观看| 激情亚洲综合在线| 成人一区二区三区在线观看| 色综合中文综合网| 丰满少妇久久久久久久 | 毛片基地黄久久久久久天堂| 老鸭窝一区二区久久精品| 韩日精品视频一区| 成人av电影在线观看| 欧洲精品中文字幕| 欧美不卡一区二区| 国产精品盗摄一区二区三区| 亚洲最色的网站| 精品亚洲porn| 99精品国产99久久久久久白柏| 91福利在线观看| 精品国产一区二区三区忘忧草 | 国产一区二区在线影院| 成人av动漫网站| 欧美欧美欧美欧美首页| 久久精品欧美日韩| 一区二区三区中文免费| 精品伊人久久久久7777人| 波多野结衣视频一区| 91精品欧美综合在线观看最新| 久久久久久久久久电影| 亚洲一区二区在线播放相泽| 国产在线视视频有精品| 在线观看不卡一区| 久久伊人蜜桃av一区二区| 亚洲激情av在线| 国产真实乱子伦精品视频| 欧美色视频一区| 国产精品高潮久久久久无| 日本亚洲免费观看| 色婷婷国产精品久久包臀| 精品久久久久久久久久久久久久久 | 亚洲国产一区二区在线播放| 国产精品99久久久久| 91精品视频网| 一区二区三区中文在线| 成人亚洲精品久久久久软件| 欧美精品123区| 最近日韩中文字幕| 国产在线麻豆精品观看| 欧美日韩亚洲丝袜制服| 中文字幕佐山爱一区二区免费| 黄色资源网久久资源365| 欧美日本国产视频| 亚洲欧美福利一区二区| 国产成人午夜精品5599| 欧美一区二区三区思思人 | 中文字幕在线视频一区| 免费欧美在线视频| 色婷婷综合久久久中文字幕| 国产精品午夜电影| 懂色av一区二区三区免费看| 日韩免费一区二区| 日韩精品乱码av一区二区| 欧美亚洲愉拍一区二区| 亚洲精品日韩专区silk| 91农村精品一区二区在线| 亚洲图片欧美激情| 99国产精品久久久久久久久久久 | 亚洲免费在线视频一区 二区| 国产丶欧美丶日本不卡视频| 337p粉嫩大胆色噜噜噜噜亚洲 | 国产超碰在线一区|