mem.h revision 7aacbd685b2107670e4179689abec9cb82d972ab
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley/*
7aacbd685b2107670e4179689abec9cb82d972abBob Halley * Copyright (C) 1997, 1998, 1999 Internet Software Consortium.
1633838b8255282d10af15c5c84cee5a51466712Bob Halley *
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * Permission to use, copy, modify, and distribute this software for any
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * purpose with or without fee is hereby granted, provided that the above
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * copyright notice and this permission notice appear in all copies.
1633838b8255282d10af15c5c84cee5a51466712Bob Halley *
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * SOFTWARE.
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley */
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#ifndef ISC_MEM_H
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#define ISC_MEM_H 1
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#include <stdio.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#include <stddef.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#include <isc/boolean.h>
7aacbd685b2107670e4179689abec9cb82d972abBob Halley#include <isc/lang.h>
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#include <isc/result.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
7aacbd685b2107670e4179689abec9cb82d972abBob HalleyISC_LANG_BEGINDECLS
7aacbd685b2107670e4179689abec9cb82d972abBob Halley
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleytypedef struct isc_mem isc_mem_t;
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#ifdef ISC_MEM_DEBUG
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#define isc_mem_get(c, s) __isc_mem_getdebug(c, s, __FILE__, __LINE__)
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#define isc_mem_put(c, p, s) __isc_mem_putdebug(c, p, s, __FILE__, __LINE__)
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#else
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#define isc_mem_get __isc_mem_get
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#define isc_mem_put __isc_mem_put
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#endif /* ISC_MEM_DEBUG */
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyisc_result_t isc_mem_create(size_t, size_t, isc_mem_t **);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid isc_mem_destroy(isc_mem_t **);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid * __isc_mem_get(isc_mem_t *, size_t);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid __isc_mem_put(isc_mem_t *, void *, size_t);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid * __isc_mem_getdebug(isc_mem_t *, size_t,
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley const char *, int);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid __isc_mem_putdebug(isc_mem_t *, void *,
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley size_t, const char *, int);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid isc_mem_stats(isc_mem_t *, FILE *);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyisc_boolean_t isc_mem_valid(isc_mem_t *, void *);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid * isc_mem_allocate(isc_mem_t *, size_t);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyvoid isc_mem_free(isc_mem_t *, void *);
dad8d67ed017dfa8a9e674056c93ae7ab73d51cfBob Halleychar * isc_mem_strdup(isc_mem_t *, const char *);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#ifdef ISC_MEMCLUSTER_LEGACY
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley/*
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * Legacy.
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley */
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define meminit __meminit
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_default_context __mem_default_context
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#ifdef MEMCLUSTER_DEBUG
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define memget(s) __memget_debug(s, __FILE__, __LINE__)
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define memput(p, s) __memput_debug(p, s, __FILE__, __LINE__)
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#else
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define memget __memget
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define memput __memput
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#endif
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define memvalid __memvalid
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define memstats __memstats
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyint meminit(size_t, size_t);
4cafb28abcaa2a485c7aac1696213435538b92edBob Halleyisc_mem_t * mem_default_context(void);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid * __memget(size_t);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid __memput(void *, size_t);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid * __memget_debug(size_t, const char *, int);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid __memput_debug(void *, size_t, const char *,
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley int);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyint memvalid(void *);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid memstats(FILE *);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#endif /* ISC_MEMCLUSTER_LEGACY */
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley
7aacbd685b2107670e4179689abec9cb82d972abBob HalleyISC_LANG_ENDDECLS
7aacbd685b2107670e4179689abec9cb82d972abBob Halley
4cafb28abcaa2a485c7aac1696213435538b92edBob Halley#endif /* MEM_H */