aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/ioam
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2017-04-05 19:18:20 +0200
committerDave Barach <openvpp@barachs.net>2017-04-06 11:31:39 +0000
commit586afd762bfa149f5ca167bd5fd5a0cd59ce94fe (patch)
tree808b57c61e0fe1a181871bb1ad94398c5ba42671 /src/plugins/ioam
parentbc799c92d761a2d45105aa6a1685b3663687d2a4 (diff)
Use thread local storage for thread index
This patch deprecates stack-based thread identification, Also removes requirement that thread stacks are adjacent. Finally, possibly annoying for some folks, it renames all occurences of cpu_index and cpu_number with thread index. Using word "cpu" is misleading here as thread can be migrated ti different CPU, and also it is not related to linux cpu index. Change-Id: I68cdaf661e701d2336fc953dcb9978d10a70f7c1 Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/plugins/ioam')
-rw-r--r--src/plugins/ioam/export-common/ioam_export.h6
-rw-r--r--src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c16
2 files changed, 11 insertions, 11 deletions
diff --git a/src/plugins/ioam/export-common/ioam_export.h b/src/plugins/ioam/export-common/ioam_export.h
index 2bf3fd54..9de0d13b 100644
--- a/src/plugins/ioam/export-common/ioam_export.h
+++ b/src/plugins/ioam/export-common/ioam_export.h
@@ -477,8 +477,8 @@ do { \
from = vlib_frame_vector_args (F); \
n_left_from = (F)->n_vectors; \
next_index = (N)->cached_next_index; \
- while (__sync_lock_test_and_set ((EM)->lockp[(VM)->cpu_index], 1)); \
- my_buf = ioam_export_get_my_buffer (EM, (VM)->cpu_index); \
+ while (__sync_lock_test_and_set ((EM)->lockp[(VM)->thread_index], 1)); \
+ my_buf = ioam_export_get_my_buffer (EM, (VM)->thread_index); \
my_buf->touched_at = vlib_time_now (VM); \
while (n_left_from > 0) \
{ \
@@ -620,7 +620,7 @@ do { \
} \
vlib_node_increment_counter (VM, export_node.index, \
EXPORT_ERROR_RECORDED, pkts_recorded); \
- *(EM)->lockp[(VM)->cpu_index] = 0; \
+ *(EM)->lockp[(VM)->thread_index] = 0; \
} while(0)
#endif /* __included_ioam_export_h__ */
diff --git a/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c b/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c
index a56dc040..0cf742c9 100644
--- a/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c
+++ b/src/plugins/ioam/ip6/ioam_cache_tunnel_select_node.c
@@ -396,7 +396,7 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
clib_net_to_host_u32
(tcp0->seq_number) + 1,
no_of_responses, now,
- vm->cpu_index, &pool_index0))
+ vm->thread_index, &pool_index0))
{
cache_ts_added++;
}
@@ -419,7 +419,7 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
e2e =
(ioam_e2e_cache_option_t *) ((u8 *) hbh0 +
cm->rewrite_pool_index_offset);
- e2e->pool_id = (u8) vm->cpu_index;
+ e2e->pool_id = (u8) vm->thread_index;
e2e->pool_index = pool_index0;
ioam_e2e_id_rewrite_handler ((ioam_e2e_id_option_t *)
((u8 *) e2e +
@@ -455,7 +455,7 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
clib_net_to_host_u32
(tcp1->seq_number) + 1,
no_of_responses, now,
- vm->cpu_index, &pool_index1))
+ vm->thread_index, &pool_index1))
{
cache_ts_added++;
}
@@ -479,7 +479,7 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
e2e =
(ioam_e2e_cache_option_t *) ((u8 *) hbh1 +
cm->rewrite_pool_index_offset);
- e2e->pool_id = (u8) vm->cpu_index;
+ e2e->pool_id = (u8) vm->thread_index;
e2e->pool_index = pool_index1;
ioam_e2e_id_rewrite_handler ((ioam_e2e_id_option_t *)
((u8 *) e2e +
@@ -562,7 +562,7 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
clib_net_to_host_u32
(tcp0->seq_number) + 1,
no_of_responses, now,
- vm->cpu_index, &pool_index0))
+ vm->thread_index, &pool_index0))
{
cache_ts_added++;
}
@@ -585,7 +585,7 @@ ip6_reset_ts_hbh_node_fn (vlib_main_t * vm,
e2e =
(ioam_e2e_cache_option_t *) ((u8 *) hbh0 +
cm->rewrite_pool_index_offset);
- e2e->pool_id = (u8) vm->cpu_index;
+ e2e->pool_id = (u8) vm->thread_index;
e2e->pool_index = pool_index0;
ioam_e2e_id_rewrite_handler ((ioam_e2e_id_option_t *)
((u8 *) e2e +
@@ -701,7 +701,7 @@ expired_cache_ts_timer_callback (u32 * expired_timers)
ioam_cache_main_t *cm = &ioam_cache_main;
int i;
u32 pool_index;
- u32 thread_index = os_get_cpu_number ();
+ u32 thread_index = vlib_get_thread_index ();
u32 count = 0;
for (i = 0; i < vec_len (expired_timers); i++)
@@ -724,7 +724,7 @@ ioam_cache_ts_timer_tick_node_fn (vlib_main_t * vm,
vlib_frame_t * f)
{
ioam_cache_main_t *cm = &ioam_cache_main;
- u32 my_thread_index = os_get_cpu_number ();
+ u32 my_thread_index = vlib_get_thread_index ();
struct timespec ts, tsrem;
tw_timer_expire_timers_16t_2w_512sl (&cm->timer_wheels[my_thread_index],