vppinfra: Fix bihash del warning
[vpp.git] / src / vppinfra / bihash_template.h
index d6aa3c9..2a5c586 100644 (file)
@@ -34,7 +34,6 @@
 #endif
 
 #ifdef BIHASH_32_64_SVM
-#undef HAVE_MEMFD_CREATE
 #include <vppinfra/linux/syscall.h>
 #include <fcntl.h>
 #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;
 
@@ -149,11 +170,12 @@ BVS (clib_bihash)
 
   u64 alloc_arena;             /* Base of the allocation arena */
   volatile u8 instantiated;
+  u8 dont_add_to_all_bihash_list;
 
   /**
     * 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 +193,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 +334,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 +350,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 +366,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