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

1998/0731/pc/trap.c (diff list | history)

1998/0731/sys/src/9/pc/trap.c:18,381998/0806/sys/src/9/pc/trap.c:18,41 (short | long | prev | next)
Call intrenable even if that interrupt has already been enabled in the past. XXX why?
rsc Fri Mar 4 12:44:25 2005
1991/0703    
void 
1997/0327    
intrenable(int v, void (*f)(Ureg*, void*), void* a, int tbdf) 
1991/0613    
{ 
1997/0327    
	Irq * irq; 
1998/0806    
	Irq *irq; 
1997/0327    
	Irqctl *ctl; 
1991/0614    
 
1997/0327    
	lock(&irqctllock); 
	if(irqctl[v] == 0){ 
		ctl = xalloc(sizeof(Irqctl)); 
1998/0320    
		if(v >= VectorINTR && arch->intrenable(v, tbdf, ctl) == -1){ 
1997/0327    
			unlock(&irqctllock); 
1998/0401    
			//print("intrenable: didn't find v %d, tbdf 0x%uX\n", v, tbdf); 
1998/0806    
	if(irqctl[v] == 0) 
		irqctl[v] = xalloc(sizeof(Irqctl)); 
	ctl = irqctl[v]; 
 
	if(v >= VectorINTR && arch->intrenable(v, tbdf, ctl) == -1){ 
		if(ctl->irq == nil){ 
			irqctl[v] = nil; 
1997/0327    
			xfree(ctl); 
			return; 
		} 
		irqctl[v] = ctl; 
1998/0806    
		unlock(&irqctllock); 
		print("intrenable: didn't find v %d, tbdf 0x%uX\n", v, tbdf); 
		return; 
1991/0709    
	} 
1997/0327    
	ctl = irqctl[v]; 
1998/0806    
 
1997/0327    
	irq = xalloc(sizeof(Irq)); 
	irq->f = f; 
	irq->a = a; 


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