27 #define CLIB_MEM_BULK_DEFAULT_MIN_ELTS_PER_CHUNK 32 66 if (min_elts_per_chunk == 0)
186 ASSERT (elt_idx < b->elts_per_chunk);
217 uword n_chunks = 0, n_free_elts = 0, n_elts, chunk_sz;
237 s =
format (s,
"%u bytes/elt, align %u, chunk-align %u, ", b->
elt_sz,
243 return format (s,
"\nempty");
245 s =
format (s,
"\n%lu chunks allocated, ", n_chunks);
246 s =
format (s,
"%lu / %lu free elts (%.1f%%), ", n_free_elts, n_elts,
247 (
f64) n_free_elts * 100 / n_elts);
248 s =
format (s,
"%lu bytes of memory consumed", n_chunks * chunk_sz);
#define CLIB_MEM_UNPOISON(a, s)
struct clib_mem_bulk_chunk_hdr clib_mem_bulk_chunk_hdr_t
clib_memset(h->entries, 0, sizeof(h->entries[0]) *entries)
static void remove_from_chunk_list(clib_mem_bulk_chunk_hdr_t **first, clib_mem_bulk_chunk_hdr_t *c)
clib_mem_bulk_chunk_hdr_t * full_chunks
__clib_export void clib_mem_bulk_destroy(clib_mem_bulk_handle_t h)
void * clib_mem_bulk_handle_t
static void add_to_chunk_list(clib_mem_bulk_chunk_hdr_t **first, clib_mem_bulk_chunk_hdr_t *c)
description fragment has unexpected format
struct clib_mem_bulk_chunk_hdr * next
static heap_elt_t * first(heap_header_t *h)
DLMALLOC_EXPORT void * mspace_memalign(mspace msp, size_t alignment, size_t bytes)
__clib_export u8 * format_clib_mem_bulk(u8 *s, va_list *args)
static void * get_chunk_elt_ptr(clib_mem_bulk_t *b, clib_mem_bulk_chunk_hdr_t *c, u32 index)
clib_mem_bulk_chunk_hdr_t * avail_chunks
sll srl srl sll sra u16x4 i
static uword max_pow2(uword x)
#define CLIB_MEM_BULK_DEFAULT_MIN_ELTS_PER_CHUNK
static uword round_pow2(uword x, uword pow2)
static uword bulk_chunk_size(clib_mem_bulk_t *b)
static clib_mem_heap_t * clib_mem_get_heap(void)
DLMALLOC_EXPORT void mspace_free(mspace msp, void *mem)
struct clib_mem_bulk_chunk_hdr * prev
__clib_export void clib_mem_bulk_free(clib_mem_bulk_handle_t h, void *p)
template key/value backing page structure
__clib_export clib_mem_bulk_handle_t clib_mem_bulk_init(u32 elt_sz, u32 align, u32 min_elts_per_chunk)
struct clib_bihash_value offset
template key/value backing page structure
__clib_export void * clib_mem_bulk_alloc(clib_mem_bulk_handle_t h)
#define CLIB_MEM_POISON(a, s)