mem.h revision 1633838b8255282d10af15c5c84cee5a51466712
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley/*
1633838b8255282d10af15c5c84cee5a51466712Bob Halley * Copyright (C) 1997, 1998 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
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#ifndef ISC_MEMCLUSTER_H
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define ISC_MEMCLUSTER_H 1
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#include <stdio.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#include <stddef.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#include <isc/boolean.h>
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#include <isc/result.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleytypedef struct isc_memctx * isc_memctx_t;
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_memctx_create __isc_memctx_create
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_memctx_destroy __isc_memctx_destroy
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#ifdef ISC_MEMCLUSTER_DEBUG
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_get(c, s) __isc_mem_getdebug(c, s, __FILE__, \
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley __LINE__)
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_put(c, p, s) __isc_mem_putdebug(c, p, s, __FILE__, \
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley __LINE__)
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#else
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_get __isc_mem_get
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_put __isc_mem_put
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#endif /* ISC_MEMCLUSTER_DEBUG */
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_valid __isc_mem_valid
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_stats __isc_mem_stats
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_allocate __isc_mem_allocate
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley#define isc_mem_free __isc_mem_free
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyisc_result_t isc_memctx_create(size_t, size_t,
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley isc_memctx_t *);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid isc_memctx_destroy(isc_memctx_t *);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid * __isc_mem_get(isc_memctx_t, size_t);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid __isc_mem_put(isc_memctx_t, void *, size_t);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid * __isc_mem_getdebug(isc_memctx_t, size_t,
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley const char *, int);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid __isc_mem_putdebug(isc_memctx_t, void *,
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halley size_t, const char *, int);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyisc_boolean_t isc_mem_valid(isc_memctx_t, void *);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid isc_mem_stats(isc_memctx_t, FILE *);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid * isc_mem_allocate(isc_memctx_t, size_t);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyvoid isc_mem_free(isc_memctx_t, void *);
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);
de9282a1eaa50764fdc2e88046f8ff3522e3092eBob Halleyisc_memctx_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
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#endif /* MEMCLUSTER_H */