M port/devlance.c => port/devlance.c +2 -2
@@ 348,10 348,10 @@ lanceoput(Queue *q, Block *bp )
tsleep(&l.tr, isobuf, (void *)0, 1000);
if(isobuf(0) == 0 || l.misses > 4){
l.misses = 0;
- print("lance wedged, restarting\n");
+print("lance wedged, restarting\n");
lancestart(0, 0);
- qunlock(&l.tlock);
freeb(bp);
+ poperror();
return; /* the interrupt routine will qunlock(&l.tlock) */
}
p = &l.tp[l.tc];
M port/devproc.c => port/devproc.c +2 -0
@@ 330,6 330,8 @@ procread(Chan *c, void *va, long n, ulong offset)
return 0;
if(offset+n > STATSIZE)
n = STATSIZE - offset;
+if((p->state < Dead) || (p->state > Rendezvous))
+ panic("p->state=#%lux, p->psstate=#%lux\n", p->state, p->psstate);
j = sprint(statbuf, "%-27s %-27s %-11s ",
p->text, p->user, p->psstate ? p->psstate : statename[p->state]);
for(i=0; i<6; i++){
M port/proc.c => port/proc.c +2 -0
@@ 641,6 641,8 @@ pwait(Waitmsg *w)
Proc*
proctab(int i)
{
+if((i < 0) || (i >= conf.nproc))
+ panic("proctab(%d)\n", i);
return &procalloc.arena[i];
}