Blame


1 7966faa9 2004-09-23 devnull /*
2 7966faa9 2004-09-23 devnull * Atomic reference counts - used by applications.
3 7966faa9 2004-09-23 devnull *
4 7966faa9 2004-09-23 devnull * We use locks to avoid the assembly of the Plan 9 versions.
5 7966faa9 2004-09-23 devnull */
6 7966faa9 2004-09-23 devnull
7 76193d7c 2003-09-30 devnull #include "threadimpl.h"
8 76193d7c 2003-09-30 devnull
9 76193d7c 2003-09-30 devnull void
10 76193d7c 2003-09-30 devnull incref(Ref *r)
11 76193d7c 2003-09-30 devnull {
12 49588d5d 2003-12-17 devnull lock(&r->lk);
13 49588d5d 2003-12-17 devnull r->ref++;
14 49588d5d 2003-12-17 devnull unlock(&r->lk);
15 76193d7c 2003-09-30 devnull }
16 76193d7c 2003-09-30 devnull
17 76193d7c 2003-09-30 devnull long
18 76193d7c 2003-09-30 devnull decref(Ref *r)
19 76193d7c 2003-09-30 devnull {
20 49588d5d 2003-12-17 devnull long n;
21 49588d5d 2003-12-17 devnull
22 49588d5d 2003-12-17 devnull lock(&r->lk);
23 49588d5d 2003-12-17 devnull n = --r->ref;
24 49588d5d 2003-12-17 devnull unlock(&r->lk);
25 49588d5d 2003-12-17 devnull return n;
26 76193d7c 2003-09-30 devnull }