VPP API: Memory trace
[vpp.git] / src / vppinfra / mheap.c
index d4010ce..fceca95 100644 (file)
@@ -311,7 +311,7 @@ mheap_small_object_cache_mask (mheap_small_object_cache_t * c, uword bin)
 
   ASSERT (bin < 256);
 
-#define _(i) ((uword) u8x16_compare_byte_mask (u8x16_is_equal (b, c->bins.as_u8x16[i])) << (uword) ((i)*16))
+#define _(i) ((uword) u8x16_compare_byte_mask ((b == c->bins.as_u8x16[i])) << (uword) ((i)*16))
   mask = _(0) | _(1);
   if (BITS (uword) > 32)
     mask |= _(2) | _(3);
@@ -549,23 +549,17 @@ mheap_get_search_free_list (void *v,
        non_empty_bin_mask &= ~pow2_mask (bin % BITS (uword));
 
       /* Search each occupied free bin which is large enough. */
-      foreach_set_bit (bi, non_empty_bin_mask, (
-                                                {
-                                                uword r =
-                                                mheap_get_search_free_bin (v,
-                                                                           bi
-                                                                           +
-                                                                           i
-                                                                           *
-                                                                           BITS
-                                                                           (uword),
-                                                                           n_user_bytes_arg,
-                                                                           align,
-                                                                           align_offset);
-                                                if (r !=
-                                                    MHEAP_GROUNDED) return
-                                                r;}
-                      ));
+      /* *INDENT-OFF* */
+      foreach_set_bit (bi, non_empty_bin_mask,
+      ({
+        uword r =
+          mheap_get_search_free_bin (v, bi + i * BITS (uword),
+                                     n_user_bytes_arg,
+                                     align,
+                                     align_offset);
+        if (r != MHEAP_GROUNDED) return r;
+      }));
+      /* *INDENT-ON* */
     }
 
   return MHEAP_GROUNDED;
@@ -1126,7 +1120,7 @@ format_mheap_stats (u8 * s, va_list * va)
 {
   mheap_t *h = va_arg (*va, mheap_t *);
   mheap_stats_t *st = &h->stats;
-  uword indent = format_get_indent (s);
+  u32 indent = format_get_indent (s);
 
   s =
     format (s,
@@ -1171,7 +1165,8 @@ format_mheap (u8 * s, va_list * va)
   int verbose = va_arg (*va, int);
 
   mheap_t *h;
-  uword i, size, indent;
+  uword i, size;
+  u32 indent;
   clib_mem_usage_t usage;
   mheap_elt_t *first_corrupt;
 
@@ -1242,7 +1237,7 @@ format_mheap (u8 * s, va_list * va)
     {
       /* Make a copy of traces since we'll be sorting them. */
       mheap_trace_t *t, *traces_copy;
-      uword indent, total_objects_traced;
+      u32 indent, total_objects_traced;
 
       traces_copy = vec_dup (h->trace_main.traces);
       qsort (traces_copy, vec_len (traces_copy), sizeof (traces_copy[0]),
@@ -1517,7 +1512,7 @@ mheap_get_trace (void *v, uword offset, uword size)
 
   if (!tm->trace_by_callers)
     tm->trace_by_callers =
-      hash_create_mem (0, sizeof (trace.callers), sizeof (uword));
+      hash_create_shmem (0, sizeof (trace.callers), sizeof (uword));
 
   p = hash_get_mem (tm->trace_by_callers, &trace.callers);
   if (p)