⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clumpstats.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "stdinc.h"#include "dat.h"#include "fns.h"int	count[VtMaxLumpSize][VtMaxType];enum{	ClumpChunks	= 32*1024};staticreadArenaInfo(Arena *arena){	ClumpInfo *ci, *cis;	u32int clump;	int i, n, ok;	if(arena->clumps)		fprint(2, "reading directory for arena=%s with %d entries\n", arena->name, arena->clumps);	cis = MKN(ClumpInfo, ClumpChunks);	ok = 1;	for(clump = 0; clump < arena->clumps; clump += n){		n = ClumpChunks;		if(n > arena->clumps - clump)			n = arena->clumps - clump;		if(readClumpInfos(arena, clump, cis, n) != n){			setErr(EOk, "arena directory read failed: %R");			ok = 0;			break;		}		for(i = 0; i < n; i++){			ci = &cis[i];			if(ci->type >= VtMaxType || ci->uncsize >= VtMaxLumpSize) {				fprint(2, "bad clump: %d: type = %d: size = %d\n", clump+i, ci->type, ci->uncsize);				continue;			}if(ci->uncsize == 422)print("%s: %d: %V\n", arena->name, clump+i, ci->score);			count[ci->uncsize][ci->type]++;		}	}	free(cis);	if(!ok)		return TWID32;	return clump;}static voidclumpStats(Index *ix){	int ok;	ulong clumps, n;	int i, j, t;	ok = 1;	clumps = 0;	for(i = 0; i < ix->narenas; i++){		n = readArenaInfo(ix->arenas[i]);		if(n == TWID32){			ok = 0;			break;		}		clumps += n;	}	if(!ok)		return;	print("clumps = %ld\n", clumps);	for(i=0; i<VtMaxLumpSize; i++) {		t = 0;		for(j=0; j<VtMaxType; j++)			t += count[i][j];		if(t == 0)			continue;		print("%d\t%d", i, t);		for(j=0; j<VtMaxType; j++)			print("\t%d", count[i][j]);		print("\n");	}}voidusage(void){	fprint(2, "usage: clumpstats [-B blockcachesize] config\n");	exits(0);}intmain(int argc, char *argv[]){	u32int bcmem;	vtAttach();	bcmem = 0;	ARGBEGIN{	case 'B':		bcmem = unittoull(ARGF());		break;	default:		usage();		break;	}ARGEND	readonly = 1;	if(argc != 1)		usage();	if(!initVenti(argv[0], nil))		fatal("can't init venti: %R");	if(bcmem < maxBlockSize * (mainIndex->narenas + mainIndex->nsects * 4 + 16))		bcmem = maxBlockSize * (mainIndex->narenas + mainIndex->nsects * 4 + 16);	fprint(2, "initialize %d bytes of disk block cache\n", bcmem);	initDCache(bcmem);	clumpStats(mainIndex);		exits(0);	return 0;	/* shut up stupid compiler */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -