STATS: Dynamically mapped shared memory segment
[vpp.git] / src / vpp / stats / stats.h
index fd1ab27..f21451d 100644 (file)
@@ -26,8 +26,7 @@
 #include <vlib/unix/unix.h>
 #include <vlibmemory/api.h>
 #include <vlibapi/api_helper_macros.h>
-#include <svm/queue.h>
-#include <svm/ssvm.h>
+#include <vpp/stats/stat_segment.h>
 
 typedef struct
 {
@@ -96,7 +95,6 @@ typedef struct
 
 } vpe_client_stats_registration_t;
 
-
 typedef struct
 {
   void *mheap;
@@ -159,13 +157,18 @@ typedef struct
   vpe_client_registration_t **clients_tmp;
 
   /* statistics segment */
-  ssvm_private_t stat_segment;
-  uword *counter_vector_by_name;
+  uword *directory_vector_by_name;
+  stat_segment_directory_entry_t *directory_vector;
   clib_spinlock_t *stat_segment_lockp;
+  clib_socket_t *socket;
+  u8 *socket_name;
+  ssize_t memory_size;
+  u8 node_counters_enabled;
+  void *heap;
+  stat_segment_shared_header_t *shared_header; /* pointer to shared memory segment */
+  int memfd;
 
-  /* Pointers to scalar stats maintained by the stat segment process */
-  f64 *input_rate_ptr;
-  f64 *vector_rate_ptr;
+  u64 last_input_packets;
 
   /* convenience */
   vlib_main_t *vlib_main;
@@ -176,24 +179,7 @@ typedef struct
 
 extern stats_main_t stats_main;
 
-#define STAT_SEGMENT_OPAQUE_LOCK       0
-#define STAT_SEGMENT_OPAQUE_DIR                1
-#define STAT_SEGMENT_OPAQUE_EPOCH      2
-
-typedef enum
-{
-  STAT_DIR_TYPE_ILLEGAL = 0,
-  STAT_DIR_TYPE_SCALAR_POINTER,
-  STAT_DIR_TYPE_VECTOR_POINTER,
-  STAT_DIR_TYPE_COUNTER_VECTOR,
-  STAT_DIR_TYPE_ERROR_INDEX,
-} stat_directory_type_t;
-
-typedef struct
-{
-  stat_directory_type_t type;
-  void *value;
-} stat_segment_directory_entry_t;
+void do_stat_segment_updates (stats_main_t * sm);
 
 #endif /* __included_stats_h__ */