Browse Source

add facility to de/activate tree base memory optimizations

release0.1.5
Georg Hopp 12 years ago
parent
commit
815f42e174
  1. 5
      configure.ac
  2. 3
      include/utils/memory.h
  3. 7
      src/Makefile.am
  4. 31
      src/utils/memory.c

5
configure.ac

@ -6,7 +6,7 @@ AC_INIT([taskrambler], [0.1.6], [Georg Hopp <georg@steffers.org>])
LT_INIT LT_INIT
AM_INIT_AUTOMAKE AM_INIT_AUTOMAKE
#AM_INIT_AUTOMAKE([subdir-objects]) #AM_INIT_AUTOMAKE([subdir-objects])
AM_SILENT_RULES([yes])
#AM_SILENT_RULES([yes])
AC_COPYRIGHT([Copyright © 2013 Georg Hopp]) AC_COPYRIGHT([Copyright © 2013 Georg Hopp])
AC_REVISION([$Revision: 0.02 $]) AC_REVISION([$Revision: 0.02 $])
AC_CONFIG_SRCDIR([src/taskrambler.c]) AC_CONFIG_SRCDIR([src/taskrambler.c])
@ -19,6 +19,9 @@ AC_SUBST(COVERAGE_CFLAGS)
AC_SUBST(COVERAGE_CXXFLAGS) AC_SUBST(COVERAGE_CXXFLAGS)
AC_SUBST(COVERAGE_LDFLAGS) AC_SUBST(COVERAGE_LDFLAGS)
m4_include([m4/memopt.m4])
AC_MEM_OPT
PWD=$(/bin/pwd) PWD=$(/bin/pwd)
AC_SUBST(PWD) AC_SUBST(PWD)

3
include/utils/memory.h

@ -25,7 +25,6 @@
#define CSTRA(val) val, sizeof(val)-1 //!< Const STRing Argument #define CSTRA(val) val, sizeof(val)-1 //!< Const STRing Argument
#define FREE(val) (ffree((void**)&(val)))
#define MEM_FREE(seg) (memFree((void **)&(seg))) #define MEM_FREE(seg) (memFree((void **)&(seg)))
#include <sys/types.h> #include <sys/types.h>
@ -36,8 +35,6 @@ void memFree(void **);
size_t memGetSize(void *); size_t memGetSize(void *);
void memCleanup(); void memCleanup();
void ffree(void **);
#endif // __UTILS_MEMORY_H__ #endif // __UTILS_MEMORY_H__
// vim: set ts=4 sw=4: // vim: set ts=4 sw=4:

7
src/Makefile.am

@ -32,8 +32,13 @@ AM_CFLAGS = -Wall -I ../include/
bin_PROGRAMS = taskrambler bin_PROGRAMS = taskrambler
taskrambler_SOURCES = taskrambler.c $(IFACE) $(UTILS) taskrambler_SOURCES = taskrambler.c $(IFACE) $(UTILS)
taskrambler_CFLAGS = $(CFLAGS) -Wall -DPWD=\"$(PWD)\" -I../include/ # $(COVERAGE_CFLAGS)
taskrambler_CFLAGS = $(CFLAGS) \
-Wall \
-DPWD=\"$(PWD)\" \
$(MEM_OPT_FLAGS) \
-I../include/ # $(COVERAGE_CFLAGS)
taskrambler_LDADD = $(LIBS) -lrt -lssl -lldap -lgdbm -luuid taskrambler_LDADD = $(LIBS) -lrt -lssl -lldap -lgdbm -luuid
#taskrambler_LDFLAGS = $(COVERAGE_LDFLAGS) #taskrambler_LDFLAGS = $(COVERAGE_LDFLAGS)

31
src/utils/memory.c

@ -782,6 +782,7 @@ memNewRef(void * mem)
void * void *
memMalloc(size_t size) memMalloc(size_t size)
{ {
#ifdef MEM_OPT
struct memSegment * seg; struct memSegment * seg;
//long psize = sysconf(_SC_PAGESIZE); //long psize = sysconf(_SC_PAGESIZE);
long psize = 64; long psize = 64;
@ -801,8 +802,10 @@ memMalloc(size_t size)
seg = deleteElement(&segments, seg); seg = deleteElement(&segments, seg);
} }
return seg->ptr; return seg->ptr;
#else
return malloc(size);
#endif
} }
/** /**
@ -816,17 +819,22 @@ memMalloc(size_t size)
void * void *
memCalloc(size_t nmemb, size_t size) memCalloc(size_t nmemb, size_t size)
{ {
#ifdef MEM_OPT
size_t _size = nmemb * size; size_t _size = nmemb * size;
void * mem = memMalloc(_size); void * mem = memMalloc(_size);
memset(mem, 0, _size); memset(mem, 0, _size);
return mem; return mem;
#else
return calloc(nmemb, size);
#endif
} }
void void
memFree(void ** mem) memFree(void ** mem)
{ {
#ifdef MEM_OPT
if (NULL != *mem) { if (NULL != *mem) {
struct memSegment * seg = (*mem - sizeof(struct memSegment)); struct memSegment * seg = (*mem - sizeof(struct memSegment));
@ -838,11 +846,18 @@ memFree(void ** mem)
*mem = NULL; *mem = NULL;
} }
#else
if (NULL != *mem) {
free(*mem);
*mem = NULL;
}
#endif
} }
size_t size_t
memGetSize(void * mem) memGetSize(void * mem)
{ {
#ifdef MEM_OPT
struct memSegment * segment; struct memSegment * segment;
if (NULL == mem) { if (NULL == mem) {
@ -851,21 +866,17 @@ memGetSize(void * mem)
segment = (struct memSegment *)(mem - sizeof(struct memSegment)); segment = (struct memSegment *)(mem - sizeof(struct memSegment));
return segment->size; return segment->size;
#else
return 0;
#endif
} }
void void
memCleanup() memCleanup()
{ {
#ifdef MEM_OPT
post(segments, segmentFree); post(segments, segmentFree);
#endif
} }
void
ffree(void ** data)
{
if (NULL != *data) {
free(*data);
*data = NULL;
}
}
// vim: set ts=4 sw=4: // vim: set ts=4 sw=4:
Loading…
Cancel
Save