Let hastd use C11 atomics.
C11 atomics now work on all the architectures. Have at least a single piece of software in our base system that uses C11 atomics. This somewhat makes it less likely that we break it because of LLVM imports, etc.
This commit is contained in:
parent
8ed396853b
commit
87f02f6f89
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=251796
@ -32,24 +32,24 @@
|
||||
#ifndef __REFCNT_H__
|
||||
#define __REFCNT_H__
|
||||
|
||||
#include <machine/atomic.h>
|
||||
#include <stdatomic.h>
|
||||
|
||||
#include "pjdlog.h"
|
||||
|
||||
typedef unsigned int refcnt_t;
|
||||
typedef atomic_uint refcnt_t;
|
||||
|
||||
static __inline void
|
||||
refcnt_init(refcnt_t *count, unsigned int v)
|
||||
{
|
||||
|
||||
*count = v;
|
||||
atomic_init(count, v);
|
||||
}
|
||||
|
||||
static __inline void
|
||||
refcnt_acquire(refcnt_t *count)
|
||||
{
|
||||
|
||||
atomic_add_acq_int(count, 1);
|
||||
atomic_fetch_add_explicit(count, 1, memory_order_acquire);
|
||||
}
|
||||
|
||||
static __inline unsigned int
|
||||
@ -58,7 +58,7 @@ refcnt_release(refcnt_t *count)
|
||||
unsigned int old;
|
||||
|
||||
/* XXX: Should this have a rel membar? */
|
||||
old = atomic_fetchadd_int(count, -1);
|
||||
old = atomic_fetch_sub(count, 1);
|
||||
PJDLOG_ASSERT(old > 0);
|
||||
return (old - 1);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user