提交 6891a79d 编写于 作者: R Richard Levitte

Add internal functions to fetch a refcount

Reviewed-by: NTim Hudson <tjh@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3573)
上级 df578aa0
......@@ -22,6 +22,12 @@
typedef _Atomic int CRYPTO_REF_COUNT;
static ossl_inline int CRYPTO_GET_REF(_Atomic int *val, int *ret, void *lock)
{
*ret = atomic_fetch_add_explicit(val, 0, memory_order_relaxed);
return 1;
}
static ossl_inline int CRYPTO_UP_REF(_Atomic int *val, int *ret, void *lock)
{
*ret = atomic_fetch_add_explicit(val, 1, memory_order_relaxed) + 1;
......@@ -42,6 +48,12 @@ static ossl_inline int CRYPTO_DOWN_REF(_Atomic int *val, int *ret, void *lock)
typedef int CRYPTO_REF_COUNT;
static ossl_inline int CRYPTO_GET_REF(_Atomic int *val, int *ret, void *lock)
{
*ret = __atomic_fetch_add(val, 0, __ATOMIC_RELAXED);
return 1;
}
static ossl_inline int CRYPTO_UP_REF(int *val, int *ret, void *lock)
{
*ret = __atomic_fetch_add(val, 1, __ATOMIC_RELAXED) + 1;
......@@ -60,6 +72,7 @@ static ossl_inline int CRYPTO_DOWN_REF(int *val, int *ret, void *lock)
typedef int CRYPTO_REF_COUNT;
# define CRYPTO_GET_REF(val, ret, lock) CRYPTO_atomic_add(val, 0, ret, lock)
# define CRYPTO_UP_REF(val, ret, lock) CRYPTO_atomic_add(val, 1, ret, lock)
# define CRYPTO_DOWN_REF(val, ret, lock) CRYPTO_atomic_add(val, -1, ret, lock)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册