ip: Replace Sematics for Interface IP addresses
[vpp.git] / src / plugins / perfmon / perfmon.h
index 47ee471..000e3c2 100644 (file)
@@ -26,6 +26,7 @@
 #include <vppinfra/error.h>
 
 #include <linux/perf_event.h>
+#include <perfmon/perfmon_intel.h>
 
 #define foreach_perfmon_event                                           \
 _(PERF_TYPE_HARDWARE, PERF_COUNT_HW_CPU_CYCLES, "cpu-cycles")           \
@@ -69,12 +70,6 @@ typedef struct
   u64 *vectors_this_counter;
 } perfmon_capture_t;
 
-typedef struct
-{
-  u32 cpuid;
-  const char **table;
-} perfmon_cpuid_and_table_t;
-
 typedef struct
 {
   u8 *name;
@@ -93,12 +88,19 @@ typedef struct
   perfmon_capture_t *capture_pool;
   uword *capture_by_thread_and_node_name;
 
-  /* CPU-specific event tables, hash table of selected table (if any)  */
-  perfmon_cpuid_and_table_t *perfmon_tables;
-  uword *perfmon_table;
+  /* vector of registered perfmon tables */
+  perfmon_intel_pmc_registration_t *perfmon_tables;
+
+  /* active table */
+  perfmon_intel_pmc_event_t *perfmon_table;
 
-  /* vector of events to collect */
-  perfmon_event_config_t *events_to_collect;
+  uword *pmc_event_by_name;
+
+  /* vector of single events to collect */
+  perfmon_event_config_t *single_events_to_collect;
+
+  /* vector of paired events to collect */
+  perfmon_event_config_t *paired_events_to_collect;
 
   /* Base indices of synthetic event tuples */
   u32 ipc_event_index;
@@ -109,13 +111,17 @@ typedef struct
 
   /* Current event (index) being collected */
   u32 current_event;
-  u32 *rdpmc_indices;
+  int n_active;
+  u32 **rdpmc_indices;
   /* mmap base / size of (mapped) struct perf_event_mmap_page */
-  u8 **perf_event_pages;
+  u8 ***perf_event_pages;
   u32 page_size;
 
   /* Current perf_event file descriptors, per thread */
-  int *pm_fds;
+  int **pm_fds;
+
+  /* thread bitmap */
+  uword *thread_bitmap;
 
   /* Logging */
   vlib_log_class_t log_class;