pc, pc64: simplify intrdisable()

This commit is contained in:
cinap_lenrek 2015-02-20 18:43:32 +01:00
parent 173bafd800
commit c6069e28ac
2 changed files with 8 additions and 14 deletions

View file

@ -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);
} }

View file

@ -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);
} }