plan 9 kernel history: overview | file list | diff list

1999/1230/port/devmntstats.c (diff list | history)

1998/0916/sys/src/9/port/devmntstats.c:5,111998/0917/sys/src/9/port/devmntstats.c:5,11 (short | long)
1998/0916    
#include	"fns.h" 
#include	"../port/error.h" 
 
void (*mntstats)(int, Chan*, uvlong); 
1998/0917    
void (*mntstats)(int, Chan*, uvlong, ulong); 
1998/0916    
 
enum 
{ 
1998/0916/sys/src/9/port/devmntstats.c:22,311998/0917/sys/src/9/port/devmntstats.c:22,34
1998/0916    
	Mntstats *next; 
	int	inuse; 
	Chan	c; 
	uvlong	hi[Nrpc];		/* high water time spent/msg type */ 
	uvlong	tot[Nrpc];		/* cumulative time spent/msg type */ 
1998/0917    
	uvlong	hi[Nrpc];		/* high water time spent */ 
	uvlong	tot[Nrpc];		/* cumulative time spent */ 
1998/0916    
	uvlong	bytes[Nrpc];		/* cumulative bytes xfered */ 
	ulong	n[Nrpc];		/* number of messages/msg type */ 
1998/0917    
	uvlong	bigtot[Nrpc];		/* cumulative time spent in big messages */ 
	uvlong	bigbytes[Nrpc];		/* cumulative bytes xfered in big messages */ 
	ulong	bign[Nrpc];		/* number of big messages */ 
1998/0916    
	ulong	last100[Nrpc];		/* avg time for last 100 */ 
}; 
 
1998/0916/sys/src/9/port/devmntstats.c:38,441998/0917/sys/src/9/port/devmntstats.c:41,47
1998/0916    
} msalloc; 
 
static void 
_mntstats(int type, Chan *c, uvlong start) 
1998/0917    
_mntstats(int type, Chan *c, uvlong start, ulong bytes) 
1998/0916    
{ 
	uint h; 
	Mntstats **l, *m; 
1998/0916/sys/src/9/port/devmntstats.c:82,871998/0917/sys/src/9/port/devmntstats.c:85,97
1998/0916    
	m->n[type]++; 
	x = elapsed; 
	m->last100[type] = (m->last100[type]*127 + x)>>7; 
1998/0917    
	m->bytes[type] += bytes; 
 
	if(bytes >= 8*1024){ 
		m->bigtot[type] += elapsed; 
		m->bign[type]++; 
		m->bigbytes[type] += bytes; 
	} 
1998/0916    
} 
 
static int 
1998/0916/sys/src/9/port/devmntstats.c:139,1451998/0917/sys/src/9/port/devmntstats.c:149,155
1998/0916    
 
enum 
{ 
	Nline=	80, 
1998/0917    
	Nline=	141, 
1998/0916    
}; 
 
char *rpcname[Nrpc] = 
1998/0916/sys/src/9/port/devmntstats.c:193,2011998/0917/sys/src/9/port/devmntstats.c:203,212
1998/0916    
			avg = m->tot[o]/m->n[o]; 
		else 
			avg = 0; 
		sprint(xbuf, "%-8.8s %16.0llud %16.0llud %9.0lud %16.0llud %9.0lud\n", 
				rpcname[o],  m->hi[o], 
				m->tot[o], m->n[o], avg, m->last100[o]); 
1998/0917    
		sprint(xbuf, "%-8.8s %16.0llud %16.0llud %16.0llud %9.0lud %16.0llud %16.0llud %9.0lud %16.0llud %9.0lud\n", 
			rpcname[o], m->hi[o], m->tot[o], m->bytes[o], m->n[o], 
			m->bigtot[o], m->bigbytes[o], m->bign[o], 
			avg, m->last100[o]); 
1998/0916    
		memmove(a, xbuf, Nline); 
		a += Nline; 
		o++; 
1998/0917/sys/src/9/port/devmntstats.c:29,351998/1003/sys/src/9/port/devmntstats.c:29,34 (short | long)
1998/0917    
	uvlong	bigtot[Nrpc];		/* cumulative time spent in big messages */ 
	uvlong	bigbytes[Nrpc];		/* cumulative bytes xfered in big messages */ 
	ulong	bign[Nrpc];		/* number of big messages */ 
1998/0916    
	ulong	last100[Nrpc];		/* avg time for last 100 */ 
}; 
 
static struct 
1998/0917/sys/src/9/port/devmntstats.c:84,901998/1003/sys/src/9/port/devmntstats.c:83,88
1998/0916    
	m->tot[type] += elapsed; 
	m->n[type]++; 
	x = elapsed; 
	m->last100[type] = (m->last100[type]*127 + x)>>7; 
1998/0917    
	m->bytes[type] += bytes; 
 
	if(bytes >= 8*1024){ 
1998/0917/sys/src/9/port/devmntstats.c:149,1551998/1003/sys/src/9/port/devmntstats.c:147,153
1998/0916    
 
enum 
{ 
1998/0917    
	Nline=	141, 
1998/1003    
	Nline=	136, 
1998/0916    
}; 
 
char *rpcname[Nrpc] = 
1998/0917/sys/src/9/port/devmntstats.c:182,1881998/1003/sys/src/9/port/devmntstats.c:180,185
1998/0916    
	ulong o; 
	char xbuf[Nline+1]; 
	Mntstats *m; 
	uvlong avg; 
 
	start = a = buf; 
 
1998/0917/sys/src/9/port/devmntstats.c:199,2121998/1003/sys/src/9/port/devmntstats.c:196,205
1998/0916    
	n = n/Nline; 
	o = o/Nline; 
	while(n > 0 && o < Nrpc){ 
		if(m->n[o] > 0) 
			avg = m->tot[o]/m->n[o]; 
		else 
			avg = 0; 
1998/0917    
		sprint(xbuf, "%-8.8s %16.0llud %16.0llud %16.0llud %9.0lud %16.0llud %16.0llud %9.0lud %16.0llud %9.0lud\n", 
			rpcname[o], m->hi[o], m->tot[o], m->bytes[o], m->n[o], 
			m->bigtot[o], m->bigbytes[o], m->bign[o], 
			avg, m->last100[o]); 
1998/1003    
		snprint(xbuf, sizeof(xbuf), "%-8.8s\t%20.0llud\n\t%20.0llud %20.0llud %9.0lud\n\t%20.0llud %20.0llud %9.0lud\n", 
			rpcname[o], m->hi[o], 
			m->tot[o], m->bytes[o], m->n[o], 
			m->bigtot[o], m->bigbytes[o], m->bign[o]); 
1998/0916    
		memmove(a, xbuf, Nline); 
		a += Nline; 
		o++; 
1998/1003/sys/src/9/port/devmntstats.c:45,511999/0211/sys/src/9/port/devmntstats.c:45,50 (short | long)
1998/0916    
	uint h; 
	Mntstats **l, *m; 
	uvlong elapsed; 
	ulong x; 
 
	elapsed = fastticks(nil) - start; 
	type -= Tnop; 
1998/1003/sys/src/9/port/devmntstats.c:82,881999/0211/sys/src/9/port/devmntstats.c:81,86
1998/0916    
		m->hi[type] = elapsed; 
	m->tot[type] += elapsed; 
	m->n[type]++; 
	x = elapsed; 
1998/0917    
	m->bytes[type] += bytes; 
 
	if(bytes >= 8*1024){ 
1999/0211/sys/src/9/port/devmntstats.c:97,1021999/1230/sys/src/9/port/devmntstats.c:97,107 (short | long)
1998/0916    
	char name[NAMELEN]; 
	Mntstats *m; 
 
1999/1230    
	if(i == DEVDOTDOT){ 
		devdir(c, (Qid){CHDIR,0}, "#z", 0, eve, 0555, dp); 
		return 1; 
	} 
 
1998/0916    
	m = &msalloc.all[i]; 
	if(i > Nms || m->inuse == 0) 
		return -1; 
1999/1230/sys/src/9/port/devmntstats.c:94,1002001/0527/sys/src/9/port/devmntstats.c:94,99 (short | long)
1998/0916    
mntstatsgen(Chan *c, Dirtab*, int, int i, Dir *dp) 
{ 
	Qid q; 
	char name[NAMELEN]; 
	Mntstats *m; 
 
1999/1230    
	if(i == DEVDOTDOT){ 
1999/1230/sys/src/9/port/devmntstats.c:107,1142001/0527/sys/src/9/port/devmntstats.c:106,113
1998/0916    
		return -1; 
 
	q = (Qid){Qmntstat+i, 0}; 
	snprint(name, NAMELEN, "%C%lud.%lux", devtab[m->c.type]->dc, m->c.dev, m->c.qid.path); 
	devdir(c, q, name, 0, eve, 0666, dp); 
2001/0527    
	snprint(up->genbuf, sizeof up->genbuf, "%C%lud.%lux", devtab[m->c.type]->dc, m->c.dev, m->c.qid.path); 
	devdir(c, q, up->genbuf, 0, eve, 0666, dp); 
1998/0916    
 
	return 1; 
} 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)