Current section

Files

Jump to
hackney c_src lsquic src liblsquic lsquic_malo.h
Raw

c_src/lsquic/src/liblsquic/lsquic_malo.h

/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_malo.h -- Fast allocator for fixed-sized objects.
*/
#ifndef LSQUIC_MALO_H
#define LSQUIC_MALO_H 1
#ifndef LSQUIC_USE_POOLS
#define LSQUIC_USE_POOLS 1
#endif
struct malo;
/* Create a malo allocator for objects of size `obj_size'. */
struct malo *
lsquic_malo_create (size_t obj_size);
/* Get a new object. */
void *
lsquic_malo_get (struct malo *);
/* Return obj to the pool */
void
lsquic_malo_put (void *obj);
/* This deallocates all remaining objects. */
void
lsquic_malo_destroy (struct malo *);
/* This iterator is slow. It is only used in unit tests for verification.
*
* If you to iterate over all elements allocated in a pool, keep track yourself.
*/
/* The iterator is built-in. Usage:
* void *obj;
* for (obj = lsquic_malo_first(obj); obj; lsquic_malo_next(obj))
* do_stuff(obj);
*/
void *
lsquic_malo_first (struct malo *);
void *
lsquic_malo_next (struct malo *);
size_t
lsquic_malo_mem_used (const struct malo *);
#endif