[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[UNIKRAFT PATCH 16/18] lib/ukalloc: Iterator for per-library statistics



Provides the `uk_alloc_foreach_libstats()` helper macro that can be used
to iterate over the available library allocator statistics.

Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
 lib/ukalloc/include/uk/alloc.h | 10 ++++++++++
 lib/ukalloc/libstats.ld        |  2 ++
 2 files changed, 12 insertions(+)

diff --git a/lib/ukalloc/include/uk/alloc.h b/lib/ukalloc/include/uk/alloc.h
index e7166dfa..5392fcfe 100644
--- a/lib/ukalloc/include/uk/alloc.h
+++ b/lib/ukalloc/include/uk/alloc.h
@@ -324,6 +324,16 @@ struct uk_alloc_libstats_entry {
        const char *libname;
        struct uk_alloc *a; /* default allocator wrapper for the library */
 };
+
+extern struct uk_alloc_libstats_entry _uk_alloc_libstats_start[];
+extern struct uk_alloc_libstats_entry _uk_alloc_libstats_end;
+
+#define uk_alloc_foreach_libstats(iter)                                        
\
+       for ((iter) = _uk_alloc_libstats_start;                         \
+            (iter) < &_uk_alloc_libstats_end;                          \
+            (iter) = (struct uk_alloc_libstats_entry *) ((__uptr)(iter) \
+                     + ALIGN_UP(sizeof(struct uk_alloc_libstats_entry), 8)))
+
 #endif /* CONFIG_LIBUKALLOC_IFSTATS_PERLIB */
 #endif /* CONFIG_LIBUKALLOC_IFSTATS */
 
diff --git a/lib/ukalloc/libstats.ld b/lib/ukalloc/libstats.ld
index 79a0a837..d38aecf2 100644
--- a/lib/ukalloc/libstats.ld
+++ b/lib/ukalloc/libstats.ld
@@ -1,7 +1,9 @@
 SECTIONS
 {
        .uk_alloc_libstats : {
+               PROVIDE(_uk_alloc_libstats_start = .);
                KEEP (*(.uk_alloc_libstats))
+               PROVIDE(_uk_alloc_libstats_end = .);
        }
 }
 INSERT BEFORE .data;
-- 
2.20.1



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.