#include "eina_mempool.h"
#include "eina_trash.h"
+#ifndef NVALGRIND
+# include <valgrind/memcheck.h>
+#endif
+
#ifdef DEBUG
#include "eina_private.h"
#include "eina_log.h"
if (pool->empty)
{
+#ifndef NVALGRIND
+ VALGRIND_MAKE_MEM_DEFINED(pool->empty, pool->item_size);
+#endif
mem = eina_trash_pop(&pool->empty);
pool->usage++;
goto on_exit;
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
goto retry_smaller;
}
+#ifndef NVALGRIND
+ VALGRIND_MAKE_MEM_NOACCESS(pool->base, pool->item_size * pool->max);
+#endif
}
if (pool->served < pool->max)
eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
else
pool->over++;
+#ifndef NVALGRIND
+ VALGRIND_MAKE_MEM_NOACCESS(mem, pool->item_size);
+#endif
on_exit:
#ifdef EFL_HAVE_THREADS
ReleaseMutex(pool->mutex);
# endif
#endif
+
+#ifndef NVALGRIND
+ VALGRIND_MEMPOOL_ALLOC(pool, mem, pool->item_size);
+#endif
return mem;
}
pool->over--;
}
+#ifndef NVALGRIND
+ VALGRIND_MEMPOOL_FREE(pool, ptr);
+#endif
+
#ifdef EFL_HAVE_THREADS
# ifdef EFL_HAVE_POSIX_THREADS
pthread_mutex_unlock(&pool->mutex);
# endif
#endif
+#ifndef NVALGRIND
+ VALGRIND_CREATE_MEMPOOL(pool, 0, 1);
+#endif
+
return pool;
}
#endif
+#ifndef NVALGRIND
+ VALGRIND_DESTROY_MEMPOOL(pool);
+#endif
+
free(pool->base);
free(pool);
}