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@neclab.eu>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
Tested-by: Unikraft CI <monkey@unikraft.io>
GitHub-Pull-Request: #229
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 */
SECTIONS
{
.uk_alloc_libstats : {
+ PROVIDE(_uk_alloc_libstats_start = .);
KEEP (*(.uk_alloc_libstats))
+ PROVIDE(_uk_alloc_libstats_end = .);
}
}
INSERT BEFORE .data;