diff options
author | Ray Kinsella <mdr@ashroe.eu> | 2021-10-06 15:15:41 +0000 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2021-10-07 13:23:06 +0000 |
commit | ce45b161566e2ece499426cbd937086b4b780a0d (patch) | |
tree | 0f807432bc5a5c56d3483f1031e306714f2879c8 /src/plugins/perfmon/perfmon.c | |
parent | 0d3914c026a2f51c2d37117e95585d39d49e55eb (diff) |
perfmon: check bundle is supported
Add a check bundle is supported before futher activation.
Enable different bundles with same name, supported on different platforms.
Type: improvement
Signed-off-by: Ray Kinsella <mdr@ashroe.eu>
Change-Id: I73e8bbd1e07c05ebccd9146d48a234eb598a2388
Diffstat (limited to 'src/plugins/perfmon/perfmon.c')
-rw-r--r-- | src/plugins/perfmon/perfmon.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/plugins/perfmon/perfmon.c b/src/plugins/perfmon/perfmon.c index 8abce94910f..4a220c7a233 100644 --- a/src/plugins/perfmon/perfmon.c +++ b/src/plugins/perfmon/perfmon.c @@ -288,6 +288,21 @@ perfmon_stop (vlib_main_t *vm) return 0; } +static_always_inline u8 +is_bundle_supported (perfmon_bundle_t *b) +{ + perfmon_cpu_supports_t *supports = b->cpu_supports; + + if (!b->cpu_supports) + return 1; + + for (int i = 0; i < b->n_cpu_supports; ++i) + if (supports[i].cpu_supports ()) + return 1; + + return 0; +} + static clib_error_t * perfmon_init (vlib_main_t *vm) { @@ -320,6 +335,14 @@ perfmon_init (vlib_main_t *vm) { clib_error_t *err; uword *p; + + if (!is_bundle_supported (b)) + { + log_warn ("skipping bundle '%s' - not supported", b->name); + b = b->next; + continue; + } + if (hash_get_mem (pm->bundle_by_name, b->name) != 0) clib_panic ("duplicate bundle name '%s'", b->name); |