M pc/devincon.c => pc/devincon.c +5 -5
@@ 968,15 968,15 @@ nextin(Incon *ip, unsigned int c)
int next;
bp = ip->inb[ip->wi];
- bp->base[0] = ip->chan;
- bp->base[1] = ip->chan>>8;
- bp->base[2] = c;
+ bp->rptr[0] = ip->chan;
+ bp->rptr[1] = ip->chan>>8;
+ bp->rptr[2] = c;
if(incondebug)
showpkt("<-", ip->chan, c, bp, 3);
next = (ip->wi+1)%Nin;
if(next == ip->ri){
- bp->wptr = bp->base+3;
+ bp->wptr = bp->rptr+3;
return bp;
}
ip->wi = next;
@@ 1052,7 1052,7 @@ rdpackets(Incon *ip)
}
}
bp->wptr = p;
- if(bp->wptr != bp->base+3)
+ if(bp->wptr != bp->rptr+3)
nextin(ip, 0);
if(first != ip->wi)/**/
M port/alloc.c => port/alloc.c +8 -4
@@ 132,25 132,29 @@ void*
xspanalloc(ulong size, int align, ulong span)
{
int i, j;
- ulong a, p;
+ ulong a, p, sinc;
ulong ptr[Spanlist];
+ sinc = span/8;
span = ~(span-1);
for(i = 0; i < Spanlist; i++) {
p = (ulong)xalloc(size+align);
if(p == 0)
- panic("xspanalloc: size %d align %d span %d", size, align, span);
+ panic("xspanalloc: size %d align %d span %lux", size, align, span);
a = p+align;
a &= ~(align-1);
if((a&span) == ((a+size)&span)) {
for(j = 0; j < i; j++)
- xfree((void*)ptr[j]);
+ if(ptr[j])
+ xfree((void*)ptr[j]);
return (void*)a;
}
- ptr[i] = p;
+ xfree((void*)p);
+ ptr[i] = (ulong)xalloc(sinc);
}
+ USED(sinc);
panic("xspanalloc: spanlist");
return 0;
}