1 /* SPDX-License-Identifier: LGPL-2.1+ */
5 Copyright 2013 Lennart Poettering
8 /* A type-safe atomic refcounter.
10 * DO NOT USE THIS UNLESS YOU ACTUALLY CARE ABOUT THREAD SAFETY! */
13 volatile unsigned _value;
16 #define REFCNT_GET(r) ((r)._value)
17 #define REFCNT_INC(r) (__sync_add_and_fetch(&(r)._value, 1))
18 #define REFCNT_DEC(r) (__sync_sub_and_fetch(&(r)._value, 1))
20 #define REFCNT_INIT ((RefCount) { ._value = 1 })