summaryrefslogtreecommitdiffstats
path: root/src/vppinfra/bihash_template.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vppinfra/bihash_template.h')
-rw-r--r--src/vppinfra/bihash_template.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/vppinfra/bihash_template.h b/src/vppinfra/bihash_template.h
index 4e5d995cd9f..81d9ffad41e 100644
--- a/src/vppinfra/bihash_template.h
+++ b/src/vppinfra/bihash_template.h
@@ -89,7 +89,14 @@ typedef struct
u64 cache_misses;
BVT (clib_bihash_value) ** freelists;
- void *mheap;
+
+ /*
+ * Backing store allocation. Since bihash mananges its own
+ * freelists, we simple dole out memory at alloc_arena_next.
+ */
+ uword alloc_arena;
+ uword alloc_arena_next;
+ uword alloc_arena_size;
/**
* A custom format function to print the Key and Value of bihash_key instead of default hexdump
@@ -224,7 +231,7 @@ static inline void BV (clib_bihash_unlock_bucket)
static inline void *BV (clib_bihash_get_value) (BVT (clib_bihash) * h,
uword offset)
{
- u8 *hp = h->mheap;
+ u8 *hp = (u8 *) h->alloc_arena;
u8 *vp = hp + offset;
return (void *) vp;
@@ -235,10 +242,9 @@ static inline uword BV (clib_bihash_get_offset) (BVT (clib_bihash) * h,
{
u8 *hp, *vp;
- hp = (u8 *) h->mheap;
+ hp = (u8 *) h->alloc_arena;
vp = (u8 *) v;
- ASSERT ((vp - hp) < 0x100000000ULL);
return vp - hp;
}