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

1993/1124/pc/clock.c (diff list | history)

1993/1113/sys/src/9/pc/clock.c:42,471993/1124/sys/src/9/pc/clock.c:42,85 (short | long | prev | next)
add arg to setvec functions; move clock to avoid prototype
rsc Fri Mar 4 12:44:25 2005
1991/0719    
			; 
} 
 
1993/1124    
static void 
clock(Ureg *ur, void *arg) 
{ 
	Proc *p; 
	int nrun = 0; 
 
	USED(arg); 
 
	m->ticks++; 
 
	checkalarms(); 
	mouseclock(); 
 
	/* 
	 *  process time accounting 
	 */ 
	p = m->proc; 
	if(p){ 
		nrun = 1; 
		p->pc = ur->pc; 
		if (p->state==Running) 
			p->time[p->insyscall]++; 
	} 
	nrun = (nrdy+nrun)*1000; 
	MACHP(0)->load = (MACHP(0)->load*19+nrun)/20; 
 
	if(up == 0 || (ur->cs&0xffff) != UESEL || up->state != Running) 
		return; 
 
	if(anyready()) 
		sched(); 
 
	/* user profiling clock */ 
	spllo();		/* in case we fault */ 
	(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1); 
	splhi(); 
} 
 
1991/0704    
void 
clockinit(void) 
{ 
1993/1113/sys/src/9/pc/clock.c:50,561993/1124/sys/src/9/pc/clock.c:88,94
1991/0709    
	/* 
	 *  set vector for clock interrupts 
	 */ 
1991/0716    
	setvec(Clockvec, clock); 
1993/1124    
	setvec(Clockvec, clock, 0); 
1991/0709    
 
	/* 
	 *  make clock output a square wave with a 1/HZ period 
1993/1113/sys/src/9/pc/clock.c:77,1161993/1124/sys/src/9/pc/clock.c:115,118
1992/0923    
	delayloop = (delayloop*1193*10)/x; 
	if(delayloop == 0) 
		delayloop = 1; 
1991/0704    
} 
                 
1991/0705    
void 
1991/0706    
clock(Ureg *ur) 
1991/0705    
{ 
1991/0706    
	Proc *p; 
1991/1113    
	int nrun = 0; 
1991/0706    
                 
1991/0705    
	m->ticks++; 
1991/0711    
                 
	checkalarms(); 
1993/0226    
	mouseclock(); 
1991/0711    
                 
1991/0808    
	/* 
	 *  process time accounting 
	 */ 
1991/0706    
	p = m->proc; 
	if(p){ 
1991/1113    
		nrun = 1; 
1991/0711    
		p->pc = ur->pc; 
1991/0706    
		if (p->state==Running) 
			p->time[p->insyscall]++; 
	} 
1991/1113    
	nrun = (nrdy+nrun)*1000; 
	MACHP(0)->load = (MACHP(0)->load*19+nrun)/20; 
1991/0801    
                 
1993/0915    
	if(up == 0 || (ur->cs&0xffff) != UESEL || up->state != Running) 
		return; 
                 
	if(anyready()) 
		sched(); 
                 
	/* user profiling clock */ 
	spllo();		/* in case we fault */ 
	(*(ulong*)(USTKTOP-BY2WD)) += TK2MS(1); 
	splhi(); 
1991/0808    
} 


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