#include <u.h>
#include <libc.h>
#include "9proc.h"

static Lock rendlock;
static Uproc *rendhash[RENDHASH];

ulong
rendezvous(ulong tag, ulong val)
{
	char c;
	ulong ret;
	Uproc *t, *self, **l;

	self = _p9uproc(0);
	lock(&rendlock);
	l = &rendhash[tag%RENDHASH];
	for(t=*l; t; l=&t->rendhash, t=*l){
		if(t->rendtag==tag){
			*l = t->rendhash;
			ret = t->rendval;
			t->rendval = val;
			t->rendtag++;
			c = 0;
			unlock(&rendlock);
			write(t->pipe[1], &c, 1);
			return ret;
		}
	}

	/* Going to sleep here. */
	t = self;
	t->rendtag = tag;
	t->rendval = val;
	t->rendhash = *l;
	*l = t;
	unlock(&rendlock);
	do
		read(t->pipe[0], &c, 1);
	while(t->rendtag == tag);
	return t->rendval;
}
