~kris/9p

9hist

40dcfe9b658d75b94294d0e382d1511cde811f9e — David du Colombier 34 years ago b956e06
Plan 9 from Bell Labs 1992-07-08
2 files changed, 13 insertions(+), 9 deletions(-)

M pc/devincon.c
M port/alloc.c
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;
}