diff options
author | Florin Coras <fcoras@cisco.com> | 2018-01-24 10:49:23 -0800 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2018-01-27 19:02:12 +0000 |
commit | 84a30ef2b51d0dc60176f4a93c90134bb443a260 (patch) | |
tree | 58e8a07acc454c74f25c39526ce9863b15a6ac5e /src/vnet/session/session.c | |
parent | 6484a682153cf3ec057f0643d73cce688ad0eb41 (diff) |
session: use clib rwlocks instead of custom implementation
Change-Id: I68933d709ce9cc686ba06466e136434b663920ef
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/session.c')
-rw-r--r-- | src/vnet/session/session.c | 15 |
1 files changed, 5 insertions, 10 deletions
diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index ec6d7812f0b..ae8c42aa32b 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -85,12 +85,12 @@ session_alloc (u32 thread_index) pool_get_aligned_will_expand (smm->sessions[thread_index], will_expand, CLIB_CACHE_LINE_BYTES); /* If we have peekers, let them finish */ - if (PREDICT_FALSE (will_expand)) + if (PREDICT_FALSE (will_expand && vlib_num_workers ())) { - clib_spinlock_lock_if_init (&smm->peekers_write_locks[thread_index]); + clib_rwlock_writer_lock (&smm->peekers_rw_locks[thread_index]); pool_get_aligned (session_manager_main.sessions[thread_index], s, CLIB_CACHE_LINE_BYTES); - clib_spinlock_unlock_if_init (&smm->peekers_write_locks[thread_index]); + clib_rwlock_writer_unlock (&smm->peekers_rw_locks[thread_index]); } else { @@ -1133,9 +1133,7 @@ session_manager_main_enable (vlib_main_t * vm) vec_validate (smm->pending_disconnects, num_threads - 1); vec_validate (smm->free_event_vector, num_threads - 1); vec_validate (smm->vpp_event_queues, num_threads - 1); - vec_validate (smm->session_peekers, num_threads - 1); - vec_validate (smm->peekers_readers_locks, num_threads - 1); - vec_validate (smm->peekers_write_locks, num_threads - 1); + vec_validate (smm->peekers_rw_locks, num_threads - 1); for (i = 0; i < TRANSPORT_N_PROTO; i++) for (j = 0; j < num_threads; j++) @@ -1153,10 +1151,7 @@ session_manager_main_enable (vlib_main_t * vm) vec_validate (smm->pending_disconnects[i], 0); _vec_len (smm->pending_disconnects[i]) = 0; if (num_threads > 1) - { - clib_spinlock_init (&smm->peekers_readers_locks[i]); - clib_spinlock_init (&smm->peekers_write_locks[i]); - } + clib_rwlock_init (&smm->peekers_rw_locks[i]); } #if SESSION_DBG |