1 #include "bits/callback.h" // for SingleCallback
4 void refcount_ini(Refcount *refcount, void *obj, void *del)
9 pthread_mutex_init(&refcount->mtx, NULL);
12 void refcount_dst(Refcount *refcount)
14 pthread_mutex_destroy(&refcount->mtx);
17 void *refcount_inc(Refcount *refcount)
19 pthread_mutex_lock(&refcount->mtx);
21 pthread_mutex_unlock(&refcount->mtx);
25 void *refcount_grb(Refcount *refcount)
27 return refcount_obj(refcount_inc(refcount));
30 void refcount_drp(Refcount *refcount)
32 pthread_mutex_lock(&refcount->mtx);
33 unsigned short count = --refcount->cnt;
34 pthread_mutex_unlock(&refcount->mtx);
37 ((SingleCallback) refcount->del)(refcount->obj);
40 void *refcount_obj(Refcount *refcount)