diff options
author | Ray Kinsella <mdr@ashroe.eu> | 2022-01-28 05:01:52 +0000 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2022-01-30 15:08:18 +0000 |
commit | 7e8aeb876b3bf21075621e40c3c1aa2fa2874dfb (patch) | |
tree | 992beb415bdc81f07f30cec95c5b411347a4f635 /src/plugins/perfmon/perfmon.h | |
parent | 0a0e711cce0f29012ceb6bcde732c072415c2f96 (diff) |
perfmon: fix init of bundles with pseudo events
Previously Linux pseudo events were being counted as multiple fixed
events, such that a bundle with pseudo events could exceed the number of
available fixed counters. Reworked to ignore pseudo events in the
accounting for the moment.
Type: fix
Fixes: 0024e53ad
Signed-off-by: Ray Kinsella <mdr@ashroe.eu>
Change-Id: Ic938f8266fd04d7731afbd02e261c61ef22a8522
Diffstat (limited to 'src/plugins/perfmon/perfmon.h')
-rw-r--r-- | src/plugins/perfmon/perfmon.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/plugins/perfmon/perfmon.h b/src/plugins/perfmon/perfmon.h index c7f43145943..fa15ef63aca 100644 --- a/src/plugins/perfmon/perfmon.h +++ b/src/plugins/perfmon/perfmon.h @@ -27,6 +27,14 @@ typedef enum { + PERFMON_EVENT_TYPE_GENERAL, + PERFMON_EVENT_TYPE_FIXED, + PERFMON_EVENT_TYPE_PSEUDO, + PERFMON_EVENT_TYPE_MAX, +} perfmon_event_type_t; + +typedef enum +{ PERFMON_BUNDLE_TYPE_UNKNOWN, PERFMON_BUNDLE_TYPE_NODE, PERFMON_BUNDLE_TYPE_THREAD, @@ -82,7 +90,7 @@ extern vlib_node_function_t *perfmon_dispatch_wrappers[PERF_MAX_EVENTS + 1]; typedef clib_error_t *(perfmon_source_init_fn_t) (vlib_main_t *vm, struct perfmon_source *); -typedef u8 (perfmon_source_is_fixed) (u32 event); +typedef perfmon_event_type_t (perfmon_source_get_event_type) (u32 event); typedef struct perfmon_source { @@ -93,7 +101,7 @@ typedef struct perfmon_source u32 n_events; perfmon_instance_type_t *instances_by_type; format_function_t *format_config; - perfmon_source_is_fixed *is_fixed; + perfmon_source_get_event_type *get_event_type; perfmon_source_init_fn_t *init_fn; } perfmon_source_t; |