aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/main/minimime/mm_mem.h
blob: 34840d03345b6ce8e98bd61355cf1950947df619 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef __MEM_H
#define __MEM_H

#ifdef __HAVE_LEAK_DETECTION

#define NAMEOF(v)       #v
#define xmalloc(x) MM_malloc(x, __FILE__, __LINE__)
#define xfree(x) MM_free(x, __FILE__, __LINE__, NAMEOF(x))
#define xstrdup(x) MM_strdup(x, __FILE__, __LINE__)
#define xrealloc(x, y) MM_realloc(x, y, __FILE__, __LINE__)

TAILQ_HEAD(MM_chunks, MM_mem_chunk);

struct MM_mem_chunk {
	void *address;
	const char *filename;
	uint32_t line;
	size_t size;
	
	TAILQ_ENTRY(MM_mem_chunk) next;
};

void *MM_malloc(size_t, char *, int);
void *MM_realloc(void *, size_t, char *, int);
void MM_free(void *, char *, int, char *);
char *MM_strdup(const char *, char *, int);
void MM_leakd_init(void);
void MM_leakd_printallocated(void);
void MM_leakd_flush(void);

#endif /* __HAVE_LEAK_DETECTION */
#endif /* ! HAVE_MEM_H */