Blame


1 619085f0 2004-12-25 devnull #include "u.h"
2 619085f0 2004-12-25 devnull #include "libc.h"
3 619085f0 2004-12-25 devnull #include "thread.h"
4 619085f0 2004-12-25 devnull
5 619085f0 2004-12-25 devnull static long
6 619085f0 2004-12-25 devnull refadd(Ref *r, long a)
7 619085f0 2004-12-25 devnull {
8 619085f0 2004-12-25 devnull long ref;
9 619085f0 2004-12-25 devnull
10 619085f0 2004-12-25 devnull lock(&r->lock);
11 619085f0 2004-12-25 devnull r->ref += a;
12 619085f0 2004-12-25 devnull ref = r->ref;
13 619085f0 2004-12-25 devnull unlock(&r->lock);
14 619085f0 2004-12-25 devnull return ref;
15 619085f0 2004-12-25 devnull }
16 619085f0 2004-12-25 devnull
17 619085f0 2004-12-25 devnull long
18 619085f0 2004-12-25 devnull incref(Ref *r)
19 619085f0 2004-12-25 devnull {
20 619085f0 2004-12-25 devnull return refadd(r, 1);
21 619085f0 2004-12-25 devnull }
22 619085f0 2004-12-25 devnull
23 619085f0 2004-12-25 devnull long
24 619085f0 2004-12-25 devnull decref(Ref *r)
25 619085f0 2004-12-25 devnull {
26 619085f0 2004-12-25 devnull return refadd(r, -1);
27 619085f0 2004-12-25 devnull }