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

1991/1011/port/devkprof.c (diff list | history)

1991/1009/sys/src/9/port/devkprof.c:9,151991/1011/sys/src/9/port/devkprof.c:9,16 (short | long | prev | next)
1990/03292    
 
1991/1006    
#define	LRES	3		/* log of PC resolution */ 
1990/03292    
 
1991/1006    
struct{ 
1991/1011    
struct 
{ 
1991/1006    
	int	minpc; 
	int	maxpc; 
	int	nbuf; 
1991/1009/sys/src/9/port/devkprof.c:37,441991/1011/sys/src/9/port/devkprof.c:38,45
1991/1006    
	kprof.minpc = KTZERO; 
	kprof.maxpc = (ulong)&etext; 
	kprof.nbuf = (kprof.maxpc-kprof.minpc) >> LRES; 
	kprof.buf = ialloc(kprof.nbuf*sizeof kprof.buf[0], 0); 
	kproftab[0].length = kprof.nbuf*sizeof kprof.buf[0]; 
1991/1011    
	kprof.buf = ialloc(conf.nmach * kprof.nbuf*sizeof kprof.buf[0], 0); 
	kproftab[0].length = conf.nmach * kprof.nbuf*sizeof kprof.buf[0]; 
1990/0330    
} 
 
void 
1991/1009/sys/src/9/port/devkprof.c:113,1191991/1011/sys/src/9/port/devkprof.c:114,120
1990/03292    
	case Kprofdirqid: 
1990/0330    
		return devdirread(c, a, n, kproftab, Nkproftab, devgen); 
1990/03292    
	case Kprofdataqid: 
1991/1006    
		end = kprof.nbuf*sizeof kprof.buf[0]; 
1991/1011    
		end = conf.nmach * kprof.nbuf*sizeof kprof.buf[0]; 
1991/1006    
		if(offset >= end){ 
1990/0330    
			n = 0; 
1990/03292    
			break; 
1991/1009/sys/src/9/port/devkprof.c:135,1411991/1011/sys/src/9/port/devkprof.c:136,142
1991/1006    
	switch((int)(c->qid.path&~CHDIR)){ 
	case Kprofctlqid: 
		if(strncmp(a, "startclr", 8) == 0){ 
			memset((char *)kprof.buf, 0, kprof.nbuf*sizeof kprof.buf[0]); 
1991/1011    
			memset((char *)kprof.buf, 0, conf.nmach * kprof.nbuf*sizeof kprof.buf[0]); 
1991/1006    
			kprof.time = 1; 
		}else if(strncmp(a, "start", 5) == 0) 
			kprof.time = 1; 
1991/1009/sys/src/9/port/devkprof.c:152,1571991/1011/sys/src/9/port/devkprof.c:153,159
1990/03292    
kproftimer(ulong pc) 
{ 
1991/1009    
	extern void spldone(void); 
1991/1011    
	ulong *buf; 
1991/1009    
 
1991/1006    
	if(kprof.time == 0) 
		return; 
1991/1009/sys/src/9/port/devkprof.c:162,1721991/1011/sys/src/9/port/devkprof.c:164,175
1990/1004    
	if(pc>=(ulong)spllo && pc<=(ulong)spldone) 
		pc = m->splpc; 
1990/0928    
 
1991/1007    
	kprof.buf[0] += TK2MS(1); 
1991/1011    
	buf = kprof.buf+kprof.nbuf*m->machno; 
	buf[0] += TK2MS(1); 
1991/1006    
	if(kprof.minpc<=pc && pc<kprof.maxpc){ 
		pc -= kprof.minpc; 
1990/0330    
		pc >>= LRES; 
1991/1007    
		kprof.buf[pc] += TK2MS(1); 
1991/1011    
		buf[pc] += TK2MS(1); 
1990/0331    
	} else 
1991/1007    
		kprof.buf[1] += TK2MS(1); 
1991/1011    
		buf[1] += TK2MS(1); 
1990/03292    
} 


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