diff options
author | Jan Hutter <jhutter@hsr.ch> | 2005-11-09 09:07:29 +0000 |
---|---|---|
committer | Jan Hutter <jhutter@hsr.ch> | 2005-11-09 09:07:29 +0000 |
commit | b53209a86aa3ecfec3b2a42b4b985b856bdbf7e7 (patch) | |
tree | 243919ae27d32783d515ba90aa55b322f8183c4a /Source/charon/allocator.h | |
parent | 5b07c10ae37137ab5e550ab342a36b1f42c7d190 (diff) | |
download | strongswan-b53209a86aa3ecfec3b2a42b4b985b856bdbf7e7.tar.bz2 strongswan-b53209a86aa3ecfec3b2a42b4b985b856bdbf7e7.tar.xz |
- implemented thread save memory allocator
Diffstat (limited to 'Source/charon/allocator.h')
-rw-r--r-- | Source/charon/allocator.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Source/charon/allocator.h b/Source/charon/allocator.h new file mode 100644 index 000000000..10c58f325 --- /dev/null +++ b/Source/charon/allocator.h @@ -0,0 +1,47 @@ +/** + * @file allocator.c + * + * @brief Memory allocation with LEAK_DETECTION support + * + * Thread-save implementation + */ + +/* + * Copyright (C) 2005 Jan Hutter, Martin Willi + * Hochschule fuer Technik Rapperswil + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#ifndef ALLOCATOR_H_ +#define ALLOCATOR_H_ + +#include <stddef.h> + +#define allocator_alloc_thing(thing) (allocator_alloc(sizeof(thing))) + +#ifdef LEAK_DETECTIVE + void * allocate(size_t bytes, char * file,int line); + void * reallocate(void * old, size_t bytes, char * file, int line); + void free_pointer(void * pointer); + + #define allocator_alloc(bytes) (allocate(bytes,__FILE__,__LINE__)) + #define allocator_realloc(old,bytes) (reallocate(old,bytes,__FILE__, __LINE__)) + #define allocator_free(pointer) (free_pointer(pointer)) + void report_memory_leaks(void); +#else + #define allocator_alloc(bytes) (malloc(bytes)) + #define allocator_realloc(old,bytes) (realloc(old,bytes)) + #define allocator_free(pointer) (free(pointer)) + #define report_memory_leaks(void) {} +#endif + +#endif /*ALLOCATOR_H_*/ |