Skip to content
Snippets Groups Projects
Commit 994fbc58 authored by Utz-Uwe Haus's avatar Utz-Uwe Haus
Browse files

Implement --disable-mempool configure option

This permits disabling the memory pool functionality, falling back to the underlying
malloc/free. Intended use is mainly leak debugging.
parent 6f5cc76e
Branches 104-permit-disabling-memory-pool
No related tags found
1 merge request!51Resolve "permit disabling memory pool"
Pipeline #90002 failed
......@@ -400,6 +400,18 @@ AC_CHECK_HEADERS([stdlib.h])
AC_C_CONST
AC_TYPE_SIZE_T
AC_ARG_ENABLE([mempool],
AS_HELP_STRING([--enable-mempool], [Enable memory pool implementation @<:@default=enabled@:>@]),
[if test "x$enableval" = "xyes" ; then
use_mempool=yes
elif test "x$enableval" = "xno" ; then
use_mempool=no
AC_DEFINE(DISABLE_MEMPOOL,[1],[Disable mempool (for debugging, mostly)])
else
AC_MSG_ERROR([--enable-mempool must be used with 'yes' or 'no' argument])
fi],
[use_mempool=yes])
dnl end of libyaml-introduced checks
dnl *****************************************************************************
......@@ -409,7 +421,7 @@ dnl We will support (at some point) OFI, MPI, and SMP
dnl An SMP pool manager is built if neither OFI or MPI are enabled
AC_ARG_ENABLE([ofi-pool-manager],
AS_HELP_STRING([--enable-ofi-pool-manager], [Enable OpenFabric based pool manager @<:@default=disabled@:>@]]),[],[enable_ofi_pool_manager=yes])
AS_HELP_STRING([--enable-ofi-pool-manager], [Enable OpenFabric based pool manager @<:@default=enabled@:>@]]),[],[enable_ofi_pool_manager=yes])
AC_ARG_ENABLE([mpi-pool-manager],
AS_HELP_STRING([--enable-mpi-pool-manager], [Enable MPI based pool manager @<:@default=disabled@:>@]]))
......
......@@ -275,6 +275,18 @@ mstro_mempool_destroy(mstro_mempool pool)
free(pool);
}
#ifdef DISABLE_MEMPOOL
void *
mstro_mempool_alloc(mstro_mempool pool)
{
assert(pool->num_arenas>0);
pool->arenas[0]->num_alloc++;
pool->arenas[0]->num_in_flight++;
return malloc(pool->object_size);
}
#else
void *
mstro_mempool_alloc(mstro_mempool pool)
{
......@@ -323,6 +335,20 @@ mstro_mempool_alloc(mstro_mempool pool)
}
}
}
#endif
#ifdef DISABLE_MEMPOOL
void
mstro_mempool_free(mstro_mempool pool, void *obj)
{
assert(pool->num_arenas>0);
free(obj);
pool->arenas[0]->num_free++;
pool->arenas[0]->num_in_flight--;
}
#else
void
mstro_mempool_free(mstro_mempool pool, void *obj)
......@@ -378,4 +404,5 @@ mstro_mempool_free(mstro_mempool pool, void *obj)
arena->num_recycle++;
}
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment