diff options
Diffstat (limited to 'src/vlib/counter.h')
-rw-r--r-- | src/vlib/counter.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vlib/counter.h b/src/vlib/counter.h index 9f5654292b9..f9da576a5f2 100644 --- a/src/vlib/counter.h +++ b/src/vlib/counter.h @@ -59,11 +59,26 @@ typedef struct counter_t **counters; /**< Per-thread u64 non-atomic counters */ char *name; /**< The counter collection's name. */ char *stat_segment_name; /**< Name in stat segment directory */ + u32 stats_entry_index; } vlib_simple_counter_main_t; /** The number of counters (not the number of per-thread counters) */ u32 vlib_simple_counter_n_counters (const vlib_simple_counter_main_t * cm); +/** Pre-fetch a per-thread simple counter for the given object index */ +always_inline void +vlib_prefetch_simple_counter (const vlib_simple_counter_main_t *cm, + u32 thread_index, u32 index) +{ + counter_t *my_counters; + + /* + * This CPU's index is assumed to already be in cache + */ + my_counters = cm->counters[thread_index]; + clib_prefetch_store (my_counters + index); +} + /** Increment a simple counter @param cm - (vlib_simple_counter_main_t *) simple counter main pointer @param thread_index - (u32) the current cpu index @@ -205,6 +220,7 @@ typedef struct vlib_counter_t **counters; /**< Per-thread u64 non-atomic counter pairs */ char *name; /**< The counter collection's name. */ char *stat_segment_name; /**< Name in stat segment directory */ + u32 stats_entry_index; } vlib_combined_counter_main_t; /** The number of counters (not the number of per-thread counters) */ |