diff options
author | James Bursa <james@netsurf-browser.org> | 2004-01-02 12:04:29 +0000 |
---|---|---|
committer | James Bursa <james@netsurf-browser.org> | 2004-01-02 12:04:29 +0000 |
commit | 314a53cd63f1f28cf5e95eb612181cfffc152135 (patch) | |
tree | 506e4a6519828bc685f0a73335c30ecb5f1a1005 /utils/pool.h | |
parent | 825c81f03a226a85b48e77a761be2a7245b9f030 (diff) | |
download | netsurf-314a53cd63f1f28cf5e95eb612181cfffc152135.tar.gz netsurf-314a53cd63f1f28cf5e95eb612181cfffc152135.tar.bz2 |
[project @ 2004-01-02 12:04:29 by bursa]
Implement memory pools.
svn path=/import/netsurf/; revision=478
Diffstat (limited to 'utils/pool.h')
-rw-r--r-- | utils/pool.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/utils/pool.h b/utils/pool.h new file mode 100644 index 000000000..4dceb3f47 --- /dev/null +++ b/utils/pool.h @@ -0,0 +1,38 @@ +/* + * This file is part of NetSurf, http://netsurf.sourceforge.net/ + * Licensed under the GNU General Public License, + * http://www.opensource.org/licenses/gpl-license + * Copyright 2003 James Bursa <bursa@users.sourceforge.net> + */ + +/** \file + * Memory pool manager (interface). + * + * A memory pool is intended for allocating memory which is required in small + * blocks and all released together. It avoids the overhead of many small + * malloc()s. + * + * Create a pool using pool_create(), and allocate memory from it using + * pool_alloc() and pool_string(). Destroy and free the entire pool using + * pool_destroy(). + * + * The suggested block size should be large enough to store many allocations. + * Use a multiple of the size of contents, if fixed. Larger allocations than + * the block size are possible. + */ + +#ifndef _NETSURF_UTILS_POOL_H_ +#define _NETSURF_UTILS_POOL_H_ + +#include <stdlib.h> + +/** Opaque memory pool handle. */ +typedef struct pool *pool; + +pool pool_create(size_t block_size); +void pool_destroy(pool p); +void *pool_alloc(pool p, size_t size); +char *pool_string(pool p, const char *s); + +#endif + |