mem.h revision 669940866360b2e50eed04f18f58ca7fe302c8ba
9bff67898d55cddfcec9ce30cc2b1bb6211ec691David Lawrence * Copyright (C) 1997, 1998, 1999, 2000 Internet Software Consortium.
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence * Permission to use, copy, modify, and distribute this software for any
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid Lawrence * purpose with or without fee is hereby granted, provided that the above
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * copyright notice and this permission notice appear in all copies.
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Grafftypedef void * (*isc_memalloc_t)(void *, size_t);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Grafftypedef void (*isc_memfree_t)(void *, void *);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mem_get(c, s) isc__mem_getdebug(c, s, __FILE__, __LINE__)
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mem_put(c, p, s) isc__mem_putdebug(c, p, s, __FILE__, __LINE__)
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mem_allocate(c, s) isc__mem_allocatedebug(c, s, \
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mem_free(c, p) isc__mem_freedebug(c, p, __FILE__, __LINE__)
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mem_strdup(c, p) isc__mem_strdupdebug(c, p, \
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mempool_get(c) isc__mempool_getdebug(c, __FILE__, __LINE__)
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define isc_mempool_put(c, p) isc__mempool_putdebug(c, p, \
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#endif /* ISC_MEM_DEBUG */
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffisc_result_t isc_mem_create(size_t, size_t, isc_mem_t **);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid isc_mem_attach(isc_mem_t *, isc_mem_t **);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid isc__mem_put(isc_mem_t *, void *, size_t);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff size_t, const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffisc_boolean_t isc_mem_valid(isc_mem_t *, void *);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid * isc__mem_allocatedebug(isc_mem_t *, size_t,
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffchar * isc__mem_strdup(isc_mem_t *, const char *);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff const char *,
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid isc_mem_setsplit(isc_mem_t *, isc_boolean_t);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define mem_default_context __mem_default_context
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define memget(s) __memget_debug(s, __FILE__, __LINE__)
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#define memput(p, s) __memput_debug(p, s, __FILE__, __LINE__)
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid * __memget_debug(size_t, const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid __memput_debug(void *, size_t, const char *,
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff#endif /* ISC_MEMCLUSTER_LEGACY */
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * Memory pools
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * Internal (but public) functions. Don't call these from application
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * code. Use isc_mempool_get() and isc_mempool_put() instead.
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid isc__mempool_put(isc_mempool_t *, void *);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid * isc__mempool_getdebug(isc_mempool_t *, const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffvoid isc__mempool_putdebug(isc_mempool_t *, void *,
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff const char *, int);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graffisc_mempool_create(isc_mem_t *mctx, size_t size, isc_mempool_t **mpctxp);
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * Create a memory pool.
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * mctx is a valid memory context.
b75dc2a3d82c0ad078b5155057e66e5b694faeb7Michael Graff * mpctxp != NULL and *mpctxp == NULL