nat: handle ED in2out ICMP errors with workers
[vpp.git] / src / vppinfra / cpu.c
index 9ed8e80..045d1f7 100644 (file)
  _(0x41, 0xd07, "ARM", "Cortex-A57", 0) \
  _(0x41, 0xd08, "ARM", "Cortex-A72", 0) \
  _(0x41, 0xd09, "ARM", "Cortex-A73", 0) \
+ _(0x41, 0xd0a, "ARM", "Cortex-A75", 0) \
+ _(0x41, 0xd0b, "ARM", "Cortex-A76", 0) \
+ _(0x41, 0xd0c, "ARM", "Neoverse-N1", 0) \
+ _(0x41, 0xd4a, "ARM", "Neoverse-E1", 0) \
  _(0x43, 0x0a1, "Marvell", "THUNDERX CN88XX", 0) \
  _(0x43, 0x0a2, "Marvell", "OCTEON TX CN81XX", 0) \
  _(0x43, 0x0a3, "Marvell", "OCTEON TX CN83XX", 0) \
@@ -78,7 +82,7 @@
  _(0x43, 0x0b1, "Marvell", "OCTEON TX2 CN98XX", 1) \
  _(0x43, 0x0b2, "Marvell", "OCTEON TX2 CN96XX", 1)
 
-u8 *
+__clib_export u8 *
 format_cpu_uarch (u8 * s, va_list * args)
 {
 #if __x86_64__
@@ -142,7 +146,7 @@ format(s, "[0x%x] %s ([0x%02x] %s) stepping 0x%x", f, a, m, c, stepping);
 #endif
 }
 
-u8 *
+__clib_export u8 *
 format_cpu_model_name (u8 * s, va_list * args)
 {
 #if __x86_64__
@@ -198,7 +202,7 @@ flag_skip_prefix (char const *flag, const char *pfx, int len)
   return flag;
 }
 
-u8 *
+__clib_export u8 *
 format_cpu_flags (u8 * s, va_list * args)
 {
 #if defined(__x86_64__)
@@ -218,7 +222,33 @@ format_cpu_flags (u8 * s, va_list * args)
 #endif
 }
 
+__clib_export u32
+clib_get_current_cpu_id ()
+{
+  unsigned cpu, node;
+  syscall (__NR_getcpu, &cpu, &node, 0);
+  return cpu;
+}
+
+__clib_export u32
+clib_get_current_numa_node ()
+{
+  unsigned cpu, node;
+  syscall (__NR_getcpu, &cpu, &node, 0);
+  return node;
+}
 
+__clib_export u8 *
+format_march_variant (u8 *s, va_list *args)
+{
+  clib_march_variant_type_t t = va_arg (*args, clib_march_variant_type_t);
+  char *variants[] = { [0] = "default",
+#define _(s, n) [CLIB_MARCH_VARIANT_TYPE_##s] = n,
+                      foreach_march_variant
+#undef _
+  };
+  return format (s, "%s", variants[t]);
+}
 
 /*
  * fd.io coding-style-patch-verification: ON