X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fcpu.h;h=bef2a029e947824560775001ddb73796320051af;hb=5a48b3b9d88fa2793793e2bf3db8bf156fe2951f;hp=6a812180008c85a864496ddbf37cdc85974f3629;hpb=e1480a2c12ff764622dd2ae1bc9bce6cd25bcbdd;p=vpp.git 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) = \