aboutsummaryrefslogtreecommitdiffstats
path: root/src/util/vma.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/vma.c')
-rw-r--r--src/util/vma.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/util/vma.c b/src/util/vma.c
index f17ec0c08f1..dddc3fe187c 100644
--- a/src/util/vma.c
+++ b/src/util/vma.c
@@ -22,6 +22,7 @@
*/
#include <stdlib.h>
+#include <inttypes.h>
#include "util/u_math.h"
#include "util/vma.h"
@@ -304,3 +305,22 @@ util_vma_heap_free(struct util_vma_heap *heap,
util_vma_heap_validate(heap);
}
+
+void
+util_vma_heap_print(struct util_vma_heap *heap, FILE *fp,
+ const char *tab, uint64_t total_size)
+{
+ fprintf(fp, "%sutil_vma_heap:\n", tab);
+
+ uint64_t total_free = 0;
+ util_vma_foreach_hole(hole, heap) {
+ fprintf(fp, "%s hole: offset = %"PRIu64" (0x%"PRIx64", "
+ "size = %"PRIu64" (0x%"PRIx64")\n",
+ tab, hole->offset, hole->offset, hole->size, hole->size);
+ total_free += hole->size;
+ }
+ assert(total_free <= total_size);
+ fprintf(fp, "%s%"PRIu64"B (0x%"PRIx64") free (%.2f%% full)\n",
+ tab, total_free, total_free,
+ ((double)(total_size - total_free) / (double)total_size) * 100);
+}