~kris/9p

9hist

8a79dacef4226df206796ad83f2e64cae872e82c — David du Colombier 28 years ago 862b13d
Plan 9 from Bell Labs 1998-07-31
5 files changed, 25 insertions(+), 21 deletions(-)

M ip/rudp.c
M ip/udp.c
M pc/trap.c
M port/devcons.c
M port/portfns.h
M ip/rudp.c => ip/rudp.c +2 -4
@@ 492,7 492,7 @@ rudpiput(Proto *rudp, uchar *ia, Block *bp)
		break;
	default:
		/* connection oriented rudp */
		if(c->raddr == 0){
		if(ipcmp(c->raddr, IPnoaddr) == 0){
			/* save the src address in the conversation */
		 	ipmove(c->raddr, raddr);
			c->rport = rport;


@@ 691,7 691,7 @@ relstate(Rudpcb *ucb, uchar *addr, ushort port, char *from)
	/* no state for this addr/port, create some */
	if(r == nil){
		if(generation == 0)
			generation = TK2SEC(MACHP(0)->ticks);
			generation = rand();
		DPRINT("from %s new state %d for %I!%d\n", 
		        from, generation, addr, port);
		r = smalloc(sizeof(Reliable));


@@ 728,8 728,6 @@ reliput(Conv *c, Block *bp, uchar *addr, ushort port)
	Rudphdr *rh;
	ulong seq, ack, sgen, agen, ackreal;



	/* get fields */
	uh = (Udphdr*)(bp->rp);
	rh = (Rudphdr*)uh;

M ip/udp.c => ip/udp.c +1 -1
@@ 345,7 345,7 @@ udpiput(Proto *udp, uchar *ia, Block *bp)
		break;
	default:
		/* connection oriented udp */
		if(c->raddr == 0){
		if(ipcmp(c->raddr, IPnoaddr) == 0){
			/* save the src address in the conversation */
		 	ipmove(c->raddr, raddr);
			c->rport = rport;

M pc/trap.c => pc/trap.c +7 -7
@@ 322,11 322,13 @@ fault386(Ureg* ureg, void*)
	int read, user, n, insyscall;
	char buf[ERRLEN];

	insyscall = up->insyscall;
	up->insyscall = 1;
	addr = getcr2();
	user = (ureg->cs & 0xFFFF) == UESEL;
	if(!user && mmukmapsync(addr))
		return;
	read = !(ureg->ecode & 2);
	user = (ureg->cs&0xffff) == UESEL;
	insyscall = up->insyscall;
	up->insyscall = 1;
	spllo();
	n = fault(addr, read);
	if(n < 0){


@@ 336,10 338,8 @@ fault386(Ureg* ureg, void*)
			postnote(up, 1, buf, NDebug);
			return;
		}
		if(mmukmapsync(addr) == 0){	
			dumpregs(ureg);
			panic("fault: 0x%lux\n", addr);
		}
		dumpregs(ureg);
		panic("fault: 0x%lux\n", addr);
	}
	up->insyscall = insyscall;
}

M port/devcons.c => port/devcons.c +14 -9
@@ 31,7 31,7 @@ char	sysname[NAMELEN];

static ulong	randomread(void*, ulong);
static void	randominit(void);
static void	seednrand(void);
static void	seedrand(void);
static long	qtimer(long, vlong);

int qtimerentry = -1;


@@ 462,12 462,6 @@ consinit(void)
static Chan*
consattach(char *spec)
{
	static int seeded;

	if(!seeded){
		seednrand();
		seeded = 1;
	}
	return devattach('c', spec);
}



@@ 945,7 939,7 @@ static struct
} rb;

static void
seednrand(void)
seedrand(void)
{
	randomread((void*)&rb.randn, sizeof(rb.randn));
}


@@ 953,10 947,20 @@ seednrand(void)
int
nrand(int n)
{
	if(rb.randn == 0)
		seedrand();
	rb.randn = rb.randn*1103515245 + 12345 + MACHP(0)->ticks;
	return (rb.randn>>16) % n;
}

int
rand(void)
{
	nrand(1);
	return rb.randn;
}


static int
rbnotfull(void*)
{


@@ 1073,7 1077,8 @@ randomread(void *xp, ulong n)
}

static long
qtimer(long n, vlong offset) {
qtimer(long n, vlong offset)
{
	/* block until time ≥ offset;
	 * add n to offset
	 * return increment to offset (i.e., n)

M port/portfns.h => port/portfns.h +1 -0
@@ 236,6 236,7 @@ int		qwindow(Queue*);
int		qwrite(Queue*, void*, int);
void		qsetlimit(Queue*, int);
void		qnoblock(Queue*, int);
int		rand(void);
int		readnum(ulong, char*, ulong, ulong, int);
int		readstr(ulong, char*, ulong, char*);
void		ready(Proc*);