aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/allocator.h
diff options
context:
space:
mode:
authorJan Hutter <jhutter@hsr.ch>2005-11-09 09:07:29 +0000
committerJan Hutter <jhutter@hsr.ch>2005-11-09 09:07:29 +0000
commitb53209a86aa3ecfec3b2a42b4b985b856bdbf7e7 (patch)
tree243919ae27d32783d515ba90aa55b322f8183c4a /Source/charon/allocator.h
parent5b07c10ae37137ab5e550ab342a36b1f42c7d190 (diff)
downloadstrongswan-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.h47
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_*/