Create a mutex for the custom memory functions. Fixes list corruption.
[pwmd.git] / src / mem.h
blobe59bcafcf581b2177339c4786d0eca584580ba03
1 /* vim:tw=78:ts=8:sw=4:set ft=c: */
2 /*
3 Copyright (C) 2007 Ben Kibbey <bjk@luxsci.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02110-1301 USA
20 #ifndef MEM_H
21 #define MEM_H
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
27 #ifdef MEM_DEBUG
28 #define xfree free
29 #define xmalloc malloc
30 #define xrealloc realloc
31 #define xcalloc calloc
32 #define xstrdup strdup
33 #else
34 struct memlist_s {
35 void *ptr;
36 size_t size;
37 struct memlist_s *next;
40 void xmem_init(void);
41 void xmem_deinit(void);
42 void xfree(void *ptr) __attribute__ ((visibility ("hidden")));
43 void *xmalloc(size_t size) __attribute__ ((visibility ("hidden")));
44 void *xrealloc(void *ptr, size_t size) __attribute__ ((visibility ("hidden")));
45 char *xstrdup(const char *str) __attribute__ ((visibility ("hidden")));
46 void *xcalloc(size_t nmemb, size_t size) __attribute__ ((visibility ("hidden")));
47 void xpanic(void) __attribute__ ((visibility ("hidden")));
48 #ifdef DEBUG
49 void xdump(void) __attribute__ ((visibility ("hidden")));
50 #endif
51 #endif
53 #ifdef __cplusplus
55 #endif
57 #endif