Type: fix
Signed-off-by: Florin Coras <fcoras@cisco.com>
Change-Id: I0faeef20c57486564122e39f01f31c8c45f38014
if (vcl_get_worker_index () != ~0)
return 0;
if (vcl_get_worker_index () != ~0)
return 0;
+ /* Grab lock before selecting mem thread index */
+ clib_spinlock_lock (&vcm->workers_lock);
+
/* Use separate heap map entry for worker */
clib_mem_set_thread_index ();
if (pool_elts (vcm->workers) == vcm->cfg.max_workers)
{
VDBG (0, "max-workers %u limit reached", vcm->cfg.max_workers);
/* Use separate heap map entry for worker */
clib_mem_set_thread_index ();
if (pool_elts (vcm->workers) == vcm->cfg.max_workers)
{
VDBG (0, "max-workers %u limit reached", vcm->cfg.max_workers);
- clib_spinlock_lock (&vcm->workers_lock);
wrk = vcl_worker_alloc ();
vcl_set_worker_index (wrk->wrk_index);
wrk->thread_id = pthread_self ();
wrk = vcl_worker_alloc ();
vcl_set_worker_index (wrk->wrk_index);
wrk->thread_id = pthread_self ();
vec_reset_length (wrk->mq_msg_vector);
vec_validate (wrk->unhandled_evts_vector, 128);
vec_reset_length (wrk->unhandled_evts_vector);
vec_reset_length (wrk->mq_msg_vector);
vec_validate (wrk->unhandled_evts_vector, 128);
vec_reset_length (wrk->unhandled_evts_vector);
- clib_spinlock_unlock (&vcm->workers_lock);
+ clib_spinlock_unlock (&vcm->workers_lock);