pc, pc64: simplify intrdisable()
This commit is contained in:
parent
173bafd800
commit
c6069e28ac
2 changed files with 8 additions and 14 deletions
|
@ -96,7 +96,7 @@ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
|
||||||
vno = arch->intrvecno(irq);
|
vno = arch->intrvecno(irq);
|
||||||
}
|
}
|
||||||
ilock(&vctllock);
|
ilock(&vctllock);
|
||||||
for(; vno <= MaxVectorAPIC; vno++){
|
do {
|
||||||
for(pv = &vctl[vno]; (v = *pv) != nil; pv = &v->next){
|
for(pv = &vctl[vno]; (v = *pv) != nil; pv = &v->next){
|
||||||
if(v->isintr && (v->irq == irq || irq == -1)
|
if(v->isintr && (v->irq == irq || irq == -1)
|
||||||
&& v->tbdf == tbdf && v->f == f && v->a == a
|
&& v->tbdf == tbdf && v->f == f && v->a == a
|
||||||
|
@ -107,14 +107,11 @@ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
|
||||||
*pv = v->next;
|
*pv = v->next;
|
||||||
xfree(v);
|
xfree(v);
|
||||||
|
|
||||||
if(irq == -1)
|
if(irq != -1 && vctl[vno] == nil && arch->intrdisable != nil)
|
||||||
break;
|
|
||||||
if(vctl[vno] == nil && arch->intrdisable != nil)
|
|
||||||
arch->intrdisable(irq);
|
arch->intrdisable(irq);
|
||||||
}
|
|
||||||
if(irq != -1)
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} while(irq == -1 && ++vno <= MaxVectorAPIC);
|
||||||
iunlock(&vctllock);
|
iunlock(&vctllock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,7 +96,7 @@ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
|
||||||
vno = arch->intrvecno(irq);
|
vno = arch->intrvecno(irq);
|
||||||
}
|
}
|
||||||
ilock(&vctllock);
|
ilock(&vctllock);
|
||||||
for(; vno <= MaxVectorAPIC; vno++){
|
do {
|
||||||
for(pv = &vctl[vno]; (v = *pv) != nil; pv = &v->next){
|
for(pv = &vctl[vno]; (v = *pv) != nil; pv = &v->next){
|
||||||
if(v->isintr && (v->irq == irq || irq == -1)
|
if(v->isintr && (v->irq == irq || irq == -1)
|
||||||
&& v->tbdf == tbdf && v->f == f && v->a == a
|
&& v->tbdf == tbdf && v->f == f && v->a == a
|
||||||
|
@ -107,14 +107,11 @@ intrdisable(int irq, void (*f)(Ureg *, void *), void *a, int tbdf, char *name)
|
||||||
*pv = v->next;
|
*pv = v->next;
|
||||||
xfree(v);
|
xfree(v);
|
||||||
|
|
||||||
if(irq == -1)
|
if(irq != -1 && vctl[vno] == nil && arch->intrdisable != nil)
|
||||||
break;
|
|
||||||
if(vctl[vno] == nil && arch->intrdisable != nil)
|
|
||||||
arch->intrdisable(irq);
|
arch->intrdisable(irq);
|
||||||
}
|
|
||||||
if(irq != -1)
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
} while(irq == -1 && ++vno <= MaxVectorAPIC);
|
||||||
iunlock(&vctllock);
|
iunlock(&vctllock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue