api: API trace improvements
[vpp.git] / src / vppinfra / mhash.c
index 00b67c4..c556312 100644 (file)
@@ -164,7 +164,7 @@ mhash_sanitize_hash_user (mhash_t * mh)
   h->user = pointer_to_uword (mh);
 }
 
-void
+__clib_export void
 mhash_init (mhash_t * h, uword n_value_bytes, uword n_key_bytes)
 {
   static struct
@@ -202,16 +202,10 @@ mhash_init (mhash_t * h, uword n_value_bytes, uword n_key_bytes)
   vec_free (h->key_tmps);
   hash_free (h->hash);
 
-  memset (h, 0, sizeof (h[0]));
+  clib_memset (h, 0, sizeof (h[0]));
   h->n_key_bytes = n_key_bytes;
 
-#if 0
-  if (h->n_key_bytes > 0)
-    {
-      vec_validate (h->key_tmp, h->n_key_bytes - 1);
-      _vec_len (h->key_tmp) = 0;
-    }
-#endif
+  vec_validate (h->key_tmps, os_get_nthreads () - 1);
 
   ASSERT (n_key_bytes < ARRAY_LEN (t));
   h->hash = hash_create2 ( /* elts */ 0,
@@ -228,7 +222,6 @@ mhash_set_tmp_key (mhash_t * h, const void *key)
   u8 *key_tmp;
   int my_cpu = os_get_thread_index ();
 
-  vec_validate (h->key_tmps, my_cpu);
   key_tmp = h->key_tmps[my_cpu];
 
   vec_reset_length (key_tmp);
@@ -250,7 +243,7 @@ mhash_set_tmp_key (mhash_t * h, const void *key)
   return ~0;
 }
 
-hash_pair_t *
+__clib_export hash_pair_t *
 mhash_get_pair (mhash_t * h, const void *key)
 {
   uword ikey;
@@ -263,11 +256,11 @@ typedef struct
 {
   u32 heap_handle;
 
-  /* Must conincide with vec_header. */
+  /* Must coincide with vec_header. */
   vec_header_t vec;
 } mhash_string_key_t;
 
-uword
+__clib_export uword
 mhash_set_mem (mhash_t * h, void *key, uword * new_value, uword * old_value)
 {
   u8 *k;
@@ -289,7 +282,7 @@ mhash_set_mem (mhash_t * h, void *key, uword * new_value, uword * old_value)
       sk = (void *) (h->key_vector_or_heap + i);
       sk->heap_handle = handle;
       sk->vec.len = n_key_bytes;
-      clib_memcpy (sk->vec.vector_data, key, n_key_bytes);
+      clib_memcpy_fast (sk->vec.vector_data, key, n_key_bytes);
 
       /* Advance key past vector header. */
       i += sizeof (sk[0]);
@@ -311,7 +304,7 @@ mhash_set_mem (mhash_t * h, void *key, uword * new_value, uword * old_value)
        }
 
       n_key_bytes = h->n_key_bytes;
-      clib_memcpy (k, key, n_key_bytes);
+      clib_memcpy_fast (k, key, n_key_bytes);
     }
   ikey = i;
 
@@ -349,7 +342,7 @@ mhash_set_mem (mhash_t * h, void *key, uword * new_value, uword * old_value)
   return ikey;
 }
 
-uword
+__clib_export uword
 mhash_unset (mhash_t * h, void *key, uword * old_value)
 {
   hash_pair_t *p;