28 lines
278 B
C
28 lines
278 B
C
|
|
#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);
|
||
|
|
}
|