From df3ba95a2498447b037d0d8efbdf605be25ff8ff Mon Sep 17 00:00:00 2001 From: Danylo Piliaiev Date: Tue, 19 Mar 2024 17:00:22 +0100 Subject: [PATCH] util/vma: Add function to get max continuous free size Useful to find out what's the biggest allocation we could make. Signed-off-by: Danylo Piliaiev Part-of: --- src/util/vma.c | 10 ++++++++++ src/util/vma.h | 2 ++ 2 files changed, 12 insertions(+) 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);