| 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,38 – 1998/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 |
| |
| 1998/0806 | Irq *irq; | |
| 1997/0327 | Irqctl *ctl; | |
| 1991/0614 | ||
| 1997/0327 | lock(&irqctllock); | |
| 1998/0320 |
| |
| 1997/0327 |
| |
| 1998/0401 |
| |
| 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); | |
| 1998/0806 | unlock(&irqctllock); print("intrenable: didn't find v %d, tbdf 0x%uX\n", v, tbdf); return; | |
| 1991/0709 | } | |
| 1997/0327 |
| |
| 1998/0806 | ||
| 1997/0327 | irq = xalloc(sizeof(Irq)); irq->f = f; irq->a = a; | |