From 5a48b3b9d88fa2793793e2bf3db8bf156fe2951f Mon Sep 17 00:00:00 2001 From: Radu Nicolau Date: Wed, 2 Dec 2020 11:45:11 +0000 Subject: vlib: startup multi-arch variant configuration fix for interfaces Propagate the multi-arch variant selection to interfaces. Type: fix Signed-off-by: Radu Nicolau Change-Id: I99c4a7896f172f0d14d2ded22a27383825529a7d --- src/vppinfra/cpu.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/vppinfra/cpu.h') diff --git a/src/vppinfra/cpu.h b/src/vppinfra/cpu.h index 6a812180008..bef2a029e94 100644 --- a/src/vppinfra/cpu.h +++ b/src/vppinfra/cpu.h @@ -84,9 +84,29 @@ clib_march_select_fn_ptr (clib_march_fn_registration * r) return rv; } +static_always_inline void * +clib_march_select_fn_ptr_by_name (clib_march_fn_registration * r, char *name) +{ + void *rv = 0; + + while (r) + { + if (strncmp (name, r->name, vec_len (r->name) - 1) == 0) + { + rv = r->function; + break; + } + r = r->next; + } + return rv; +} + #define CLIB_MARCH_FN_POINTER(fn) \ clib_march_select_fn_ptr (fn##_march_fn_registrations); +#define CLIB_MARCH_FN_POINTER_BY_NAME(fn, name) \ + clib_march_select_fn_ptr_by_name (fn##_march_fn_registrations, name); + #define _CLIB_MARCH_FN_REGISTRATION(fn) \ static clib_march_fn_registration \ CLIB_MARCH_SFX(fn##_march_fn_registration) = \ -- cgit 1.2.3-korg