X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fvppinfra%2Fmhash.c;h=791aa36024bd87224332700f7fe66c80ad62a310;hb=d8f48e2166747b529aa23762ac314dd686590c89;hp=c917e164cd9f735767ed314b988ea783b7198fb1;hpb=7cd468a3d7dee7d6c92f69a0bb7061ae208ec727;p=vpp.git diff --git a/src/vppinfra/mhash.c b/src/vppinfra/mhash.c index c917e164cd9..791aa36024b 100644 --- a/src/vppinfra/mhash.c +++ b/src/vppinfra/mhash.c @@ -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, @@ -226,9 +220,8 @@ static uword mhash_set_tmp_key (mhash_t * h, const void *key) { u8 *key_tmp; - int my_cpu = os_get_cpu_number (); + 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); @@ -263,7 +256,7 @@ typedef struct { u32 heap_handle; - /* Must conincide with vec_header. */ + /* Must coincide with vec_header. */ vec_header_t vec; } mhash_string_key_t; @@ -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;