X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fbihash_template.h;h=da2f684b6854e3a81bd2b5a2c4b02f7741861e3d;hb=2de7e96e6f1d657c124f55a75c8d63d6f05803a7;hp=d6aa3c9f6eff4c3bf534739a1fa133935041dddf;hpb=7be474635dad869975b3a5dbcaaf17d14f2fb104;p=vpp.git diff --git a/src/vppinfra/bihash_template.h b/src/vppinfra/bihash_template.h index d6aa3c9f6ef..da2f684b685 100644 --- a/src/vppinfra/bihash_template.h +++ b/src/vppinfra/bihash_template.h @@ -34,7 +34,6 @@ #endif #ifdef BIHASH_32_64_SVM -#undef HAVE_MEMFD_CREATE #include #include #define F_LINUX_SPECIFIC_BASE 1024 @@ -123,6 +122,25 @@ typedef CLIB_PACKED (struct { STATIC_ASSERT_SIZEOF (BVT (clib_bihash_shared_header), 8 * sizeof (u64)); +typedef +BVS (clib_bihash_alloc_chunk) +{ + CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); + + /* chunk size */ + uword size; + + /* pointer to the next allocation */ + u8 *next_alloc; + + /* number of bytes left in this chunk */ + uword bytes_left; + + /* doubly linked list of heap allocated chunks */ + BVS (clib_bihash_alloc_chunk) * prev, *next; + +} BVT (clib_bihash_alloc_chunk); + typedef BVS (clib_bihash) { @@ -137,6 +155,9 @@ BVS (clib_bihash) u32 log2_nbuckets; u64 memory_size; u8 *name; + format_function_t *fmt_fn; + void *heap; + BVT (clib_bihash_alloc_chunk) * chunks; u64 *freelists; @@ -153,7 +174,7 @@ BVS (clib_bihash) /** * A custom format function to print the Key and Value of bihash_key instead of default hexdump */ - format_function_t *fmt_fn; + format_function_t *kvp_fmt_fn; /** Optional statistics-gathering callback */ #if BIHASH_ENABLE_STATS @@ -171,7 +192,7 @@ typedef struct char *name; u32 nbuckets; uword memory_size; - format_function_t *fmt_fn; + format_function_t *kvp_fmt_fn; u8 instantiate_immediately; u8 dont_add_to_all_bihash_list; } BVT (clib_bihash_init2_args); @@ -312,6 +333,9 @@ static inline uword BV (clib_bihash_get_offset) (BVT (clib_bihash) * h, return vp - hp; } +#define BIHASH_ADD 1 +#define BIHASH_DEL 0 + void BV (clib_bihash_init) (BVT (clib_bihash) * h, char *name, u32 nbuckets, uword memory_size); @@ -325,7 +349,7 @@ void BV (clib_bihash_responder_init_svm) #endif void BV (clib_bihash_set_kvp_format_fn) (BVT (clib_bihash) * h, - format_function_t * fmt_fn); + format_function_t * kvp_fmt_fn); void BV (clib_bihash_free) (BVT (clib_bihash) * h); @@ -341,6 +365,8 @@ int BV (clib_bihash_search) (BVT (clib_bihash) * h, BVT (clib_bihash_kv) * search_v, BVT (clib_bihash_kv) * return_v); +int BV (clib_bihash_is_initialised) (const BVT (clib_bihash) * h); + #define BIHASH_WALK_STOP 0 #define BIHASH_WALK_CONTINUE 1