diff --git a/src/util/vma.c b/src/util/vma.c index 2afeb23fd81..a91bd471f7d 100644 --- a/src/util/vma.c +++ b/src/util/vma.c @@ -352,6 +352,16 @@ util_vma_heap_free(struct util_vma_heap *heap, util_vma_heap_validate(heap); } +uint64_t +util_vma_heap_get_max_free_continuous_size(struct util_vma_heap *heap) +{ + if (list_is_empty(&heap->holes)) + return 0; + + struct util_vma_hole *top_hole = list_first_entry(&heap->holes, struct util_vma_hole, link); + return top_hole->size; +} + void util_vma_heap_print(struct util_vma_heap *heap, FILE *fp, const char *tab, uint64_t total_size) diff --git a/src/util/vma.h b/src/util/vma.h index 31d312e932a..cd3e4244af1 100644 --- a/src/util/vma.h +++ b/src/util/vma.h @@ -66,6 +66,8 @@ bool util_vma_heap_alloc_addr(struct util_vma_heap *heap, void util_vma_heap_free(struct util_vma_heap *heap, uint64_t offset, uint64_t size); +uint64_t util_vma_heap_get_max_free_continuous_size(struct util_vma_heap *heap); + void util_vma_heap_print(struct util_vma_heap *heap, FILE *fp, const char *tab, uint64_t total_size);