stats: support multiple works for error counters
[vpp.git] / src / vpp / stats / stat_segment.h
index fb450f3..b9ffedf 100644 (file)
@@ -24,6 +24,8 @@
 typedef enum
 {
  STAT_COUNTER_VECTOR_RATE = 0,
+ STAT_COUNTER_NUM_WORKER_THREADS,
+ STAT_COUNTER_VECTOR_RATE_PER_WORKER,
  STAT_COUNTER_INPUT_RATE,
  STAT_COUNTER_LAST_UPDATE,
  STAT_COUNTER_LAST_STATS_CLEAR,
@@ -32,19 +34,26 @@ typedef enum
  STAT_COUNTER_NODE_VECTORS,
  STAT_COUNTER_NODE_CALLS,
  STAT_COUNTER_NODE_SUSPENDS,
+ STAT_COUNTER_INTERFACE_NAMES,
+ STAT_COUNTER_NODE_NAMES,
  STAT_COUNTERS
 } stat_segment_counter_t;
 
-#define foreach_stat_segment_counter_name                      \
-  _(VECTOR_RATE, SCALAR_INDEX, vector_rate,)                   \
-  _(INPUT_RATE, SCALAR_INDEX, input_rate,)                     \
-  _(LAST_UPDATE, SCALAR_INDEX, last_update,)                   \
-  _(LAST_STATS_CLEAR, SCALAR_INDEX, last_stats_clear,)         \
-  _(HEARTBEAT, SCALAR_INDEX, heartbeat,)                       \
-  _(NODE_CLOCKS, COUNTER_VECTOR_SIMPLE, clocks, /node)         \
-  _(NODE_VECTORS, COUNTER_VECTOR_SIMPLE, vectors, /node)       \
-  _(NODE_CALLS, COUNTER_VECTOR_SIMPLE, calls, /node)           \
-  _(NODE_SUSPENDS, COUNTER_VECTOR_SIMPLE, suspends, /node)
+#define foreach_stat_segment_counter_name                       \
+  _(VECTOR_RATE, SCALAR_INDEX, vector_rate, /sys)               \
+  _(VECTOR_RATE_PER_WORKER, COUNTER_VECTOR_SIMPLE,              \
+    vector_rate_per_worker, /sys)                               \
+  _(NUM_WORKER_THREADS, SCALAR_INDEX, num_worker_threads, /sys) \
+  _(INPUT_RATE, SCALAR_INDEX, input_rate, /sys)                 \
+  _(LAST_UPDATE, SCALAR_INDEX, last_update, /sys)               \
+  _(LAST_STATS_CLEAR, SCALAR_INDEX, last_stats_clear, /sys)     \
+  _(HEARTBEAT, SCALAR_INDEX, heartbeat, /sys)                   \
+  _(NODE_CLOCKS, COUNTER_VECTOR_SIMPLE, clocks, /sys/node)      \
+  _(NODE_VECTORS, COUNTER_VECTOR_SIMPLE, vectors, /sys/node)    \
+  _(NODE_CALLS, COUNTER_VECTOR_SIMPLE, calls, /sys/node)        \
+  _(NODE_SUSPENDS, COUNTER_VECTOR_SIMPLE, suspends, /sys/node)  \
+  _(INTERFACE_NAMES, NAME_VECTOR, names, /if)                   \
+  _(NODE_NAMES, NAME_VECTOR, names, /sys/node)
 
 typedef struct
 {
@@ -101,11 +110,16 @@ typedef struct
   /* statistics segment */
   uword *directory_vector_by_name;
   stat_segment_directory_entry_t *directory_vector;
+  u64 *error_vector;
+  u8 **interfaces;
+  u8 **nodes;
+
   clib_spinlock_t *stat_segment_lockp;
   clib_socket_t *socket;
   u8 *socket_name;
   ssize_t memory_size;
   u8 node_counters_enabled;
+  void *last;
   void *heap;
   stat_segment_shared_header_t *shared_header; /* pointer to shared memory segment */
   int memfd;