#include "u.h"
#include "libc.h"
#include "thread.h"

static long
refadd(Ref *r, long a)
{
	long ref;

	lock(&r->lock);
	r->ref += a;
	ref = r->ref;
	unlock(&r->lock);
	return ref;
}

long
incref(Ref *r)
{
	return refadd(r, 1);
}

long
decref(Ref *r)
{
	return refadd(r, -1);
}