39 lines
764 B
C
39 lines
764 B
C
|
/* Copyright (c) 2017 LiteSpeed Technologies Inc. See LICENSE. */
|
||
|
/*
|
||
|
* lsquic_malo.h -- Fast allocator for fixed-sized objects.
|
||
|
*/
|
||
|
|
||
|
#ifndef LSQUIC_MALO_H
|
||
|
#define LSQUIC_MALO_H 1
|
||
|
|
||
|
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 *);
|
||
|
|
||
|
/* 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 *);
|
||
|
|
||
|
#endif
|