| 
									
										
										
										
											2007-04-06 21:16:38 +00:00
										 |  |  | #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; | 
					
						
							| 
									
										
										
										
											2007-08-22 23:26:02 +00:00
										 |  |  | 	uint32_t line; | 
					
						
							| 
									
										
										
										
											2007-04-06 21:16:38 +00:00
										 |  |  | 	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 */
 |