mem.h revision 138d22b316c7cd10eaa9df2ee0e3ec712a077153
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley/*
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley * Copyright (c) 1997, 1998 by Internet Software Consortium.
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob 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.
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob 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
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#ifndef MEMCLUSTER_H
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define MEMCLUSTER_H 1
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#include <stdio.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#include <stddef.h>
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleytypedef struct mem_context * mem_context_t;
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_context_create __mem_context_create
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_context_destroy __mem_context_destroy
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#ifdef MEMCLUSTER_DEBUG
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_get(c, s) __mem_get_debug(c, s, __FILE__, __LINE__)
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_put(c, p, s) __mem_put_debug(c, p, s, __FILE__, __LINE__)
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#else
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_get __mem_get
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_put __mem_put
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#endif
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_valid __mem_valid
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_stats __mem_stats
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_allocate __mem_allocate
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#define mem_free __mem_free
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyint mem_context_create(size_t, size_t,
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley mem_context_t *);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid mem_context_destroy(mem_context_t *);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid * __mem_get(mem_context_t, size_t);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid __mem_put(mem_context_t, void *, size_t);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid * __mem_get_debug(mem_context_t, size_t,
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley const char *, int);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid __mem_put_debug(mem_context_t, void *, size_t,
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley const char *, int);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyint mem_valid(mem_context_t, void *);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid mem_stats(mem_context_t, FILE *);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid * mem_allocate(mem_context_t, size_t);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleyvoid mem_free(mem_context_t, void *);
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);
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halleymem_context_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
138d22b316c7cd10eaa9df2ee0e3ec712a077153Bob Halley#endif /* MEMCLUSTER_H */