vlib: startup multi-arch variant configuration fix for interfaces
[vpp.git] / src / vppinfra / cpu.h
index 6a81218..bef2a02 100644 (file)
@@ -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) = \