move refcount to header
This commit is contained in:
@@ -8,6 +8,17 @@ struct refcount {
|
||||
_Atomic(size_t) count;
|
||||
};
|
||||
|
||||
void refcount_init(struct refcount* rc);
|
||||
void refcount_inc(struct refcount* rc);
|
||||
bool refcount_dec(struct refcount* rc);
|
||||
static inline void refcount_init(struct refcount* rc) {
|
||||
atomic_store_explicit(&rc->count, 1, memory_order_relaxed);
|
||||
}
|
||||
|
||||
static inline void refcount_inc(struct refcount* rc) {
|
||||
atomic_fetch_add_explicit(&rc->count, 1, memory_order_relaxed);
|
||||
}
|
||||
|
||||
static inline bool refcount_dec(struct refcount* rc) {
|
||||
if (atomic_fetch_sub_explicit(&rc->count, 1, memory_order_release) != 1)
|
||||
return false;
|
||||
atomic_thread_fence(memory_order_acquire);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user