Change-Id: I78c0a6da5d8fc63c1ced43589c42abc15ab12b16
Signed-off-by: Damjan Marion <damarion@cisco.com>
{
volatile BVT (clib_bihash_bucket) * bv = b;
while (bv->lock)
{
volatile BVT (clib_bihash_bucket) * bv = b;
while (bv->lock)
}
hash >>= h->log2_nbuckets;
}
hash >>= h->log2_nbuckets;
#include <vppinfra/format.h>
#include <vppinfra/pool.h>
#include <vppinfra/cache.h>
#include <vppinfra/format.h>
#include <vppinfra/pool.h>
#include <vppinfra/cache.h>
+#include <vppinfra/lock.h>
#ifndef BIHASH_TYPE
#error BIHASH_TYPE not defined
#ifndef BIHASH_TYPE
#error BIHASH_TYPE not defined
static inline void BV (clib_bihash_alloc_lock) (BVT (clib_bihash) * h)
{
while (__atomic_test_and_set (h->alloc_lock, __ATOMIC_ACQUIRE))
static inline void BV (clib_bihash_alloc_lock) (BVT (clib_bihash) * h)
{
while (__atomic_test_and_set (h->alloc_lock, __ATOMIC_ACQUIRE))
}
static inline void BV (clib_bihash_alloc_unlock) (BVT (clib_bihash) * h)
}
static inline void BV (clib_bihash_alloc_unlock) (BVT (clib_bihash) * h)
locked_bucket.as_u64 = unlocked_bucket.as_u64 = b->as_u64;
unlocked_bucket.lock = 0;
locked_bucket.lock = 1;
locked_bucket.as_u64 = unlocked_bucket.as_u64 = b->as_u64;
unlocked_bucket.lock = 0;
locked_bucket.lock = 1;
}
while (__atomic_compare_exchange_n (&b->as_u64, &unlocked_bucket.as_u64,
locked_bucket.as_u64, 1 /* weak */ ,
}
while (__atomic_compare_exchange_n (&b->as_u64, &unlocked_bucket.as_u64,
locked_bucket.as_u64, 1 /* weak */ ,
{
volatile BVT (clib_bihash_bucket) * bv = b;
while (bv->lock)
{
volatile BVT (clib_bihash_bucket) * bv = b;
while (bv->lock)
}
hash >>= h->log2_nbuckets;
}
hash >>= h->log2_nbuckets;
{
volatile BVT (clib_bihash_bucket) * bv = b;
while (bv->lock)
{
volatile BVT (clib_bihash_bucket) * bv = b;
while (bv->lock)
}
hash >>= h->log2_nbuckets;
}
hash >>= h->log2_nbuckets;