diff options
author | Trojal <trojal@gmail.com> | 2013-01-10 20:09:39 -0800 |
---|---|---|
committer | shennetsind <ind@henn.et> | 2013-01-12 05:56:35 -0200 |
commit | c55855fcf627478f864c0f82a1a2f201fd407a38 (patch) | |
tree | b7f6d11b2058248d026f2d9944e8f4b6ac288d50 /src/common/malloc.h | |
parent | 51bfeb38eb139e97e0e1c096c85c15fba234f35b (diff) | |
parent | 38e583df21eccd9e4f31d38acaae32579c6f0d27 (diff) | |
download | hercules-c55855fcf627478f864c0f82a1a2f201fd407a38.tar.gz hercules-c55855fcf627478f864c0f82a1a2f201fd407a38.tar.bz2 hercules-c55855fcf627478f864c0f82a1a2f201fd407a38.tar.xz hercules-c55855fcf627478f864c0f82a1a2f201fd407a38.zip |
Test1, testing for the commit widget, need to edit something.
Test2, testing for the commit widget, need to edit something.
Signed-off-by: shennetsind <ind@henn.et>
Diffstat (limited to 'src/common/malloc.h')
-rw-r--r-- | src/common/malloc.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/common/malloc.h b/src/common/malloc.h new file mode 100644 index 000000000..6b4e8e5c4 --- /dev/null +++ b/src/common/malloc.h @@ -0,0 +1,92 @@ +// Copyright (c) Athena Dev Teams - Licensed under GNU GPL +// For more information, see LICENCE in the main folder + +#ifndef _MALLOC_H_ +#define _MALLOC_H_ + +#include "../common/cbasetypes.h" + +#define ALC_MARK __FILE__, __LINE__, __func__ + + +// default use of the built-in memory manager +#if !defined(NO_MEMMGR) && !defined(USE_MEMMGR) +#if defined(MEMWATCH) || defined(DMALLOC) || defined(GCOLLECT) +// disable built-in memory manager when using another memory library +#define NO_MEMMGR +#else +// use built-in memory manager by default +#define USE_MEMMGR +#endif +#endif + + +////////////////////////////////////////////////////////////////////// +// Athena's built-in Memory Manager +#ifdef USE_MEMMGR + +// Enable memory manager logging by default +#define LOG_MEMMGR + +// no logging for minicore +#if defined(MINICORE) && defined(LOG_MEMMGR) +#undef LOG_MEMMGR +#endif + +# define aMalloc(n) _mmalloc(n,ALC_MARK) +# define aCalloc(m,n) _mcalloc(m,n,ALC_MARK) +# define aRealloc(p,n) _mrealloc(p,n,ALC_MARK) +# define aStrdup(p) _mstrdup(p,ALC_MARK) +# define aFree(p) _mfree(p,ALC_MARK) + + void* _mmalloc (size_t size, const char *file, int line, const char *func); + void* _mcalloc (size_t num, size_t size, const char *file, int line, const char *func); + void* _mrealloc (void *p, size_t size, const char *file, int line, const char *func); + char* _mstrdup (const char *p, const char *file, int line, const char *func); + void _mfree (void *p, const char *file, int line, const char *func); + +#else + +# define aMalloc(n) aMalloc_((n),ALC_MARK) +# define aCalloc(m,n) aCalloc_((m),(n),ALC_MARK) +# define aRealloc(p,n) aRealloc_(p,n,ALC_MARK) +# define aStrdup(p) aStrdup_(p,ALC_MARK) +# define aFree(p) aFree_(p,ALC_MARK) + + void* aMalloc_ (size_t size, const char *file, int line, const char *func); + void* aCalloc_ (size_t num, size_t size, const char *file, int line, const char *func); + void* aRealloc_ (void *p, size_t size, const char *file, int line, const char *func); + char* aStrdup_ (const char *p, const char *file, int line, const char *func); + void aFree_ (void *p, const char *file, int line, const char *func); + +#endif + +/////////////// Buffer Creation ///////////////// +// Full credit for this goes to Shinomori [Ajarn] + +#ifdef __GNUC__ // GCC has variable length arrays + + #define CREATE_BUFFER(name, type, size) type name[size] + #define DELETE_BUFFER(name) + +#else // others don't, so we emulate them + + #define CREATE_BUFFER(name, type, size) type *name = (type *) aCalloc (size, sizeof(type)) + #define DELETE_BUFFER(name) aFree(name) + +#endif + +////////////// Others ////////////////////////// +// should be merged with any of above later +#define CREATE(result, type, number) (result) = (type *) aCalloc ((number), sizeof(type)) +#define RECREATE(result, type, number) (result) = (type *) aRealloc ((result), sizeof(type) * (number)) + +//////////////////////////////////////////////// + +void malloc_memory_check(void); +bool malloc_verify_ptr(void* ptr); +size_t malloc_usage (void); +void malloc_init (void); +void malloc_final (void); + +#endif /* _MALLOC_H_ */ |