Fix chained mempool allocator.

SVN revision: 36355
This commit is contained in:
Cedric BAIL 2008-09-30 12:55:33 +00:00
parent 88d0babd0c
commit 3315d29c7f
2 changed files with 7 additions and 5 deletions

View File

@ -92,6 +92,7 @@ eina_chained_mempool_malloc(void *data, __UNUSED__ unsigned int size)
if (p->base)
{
pool->first = eina_inlist_remove(pool->first, EINA_INLIST_GET(p));
pool->first = eina_inlist_append(pool->first, EINA_INLIST_GET(p));
break;
}
}
@ -128,6 +129,7 @@ eina_chained_mempool_free(void *data, void *ptr)
item_alloc = ((pool->item_size + sizeof(void *) - 1) / sizeof(void *)) * sizeof(void *);
psize = item_alloc * pool->pool_size;
// look 4 pool
EINA_INLIST_ITER_NEXT(pool->first, p)
{
// pool mem base

View File

@ -106,11 +106,11 @@ eina_mempool_ememoa_unknown(int request)
void
eina_bench_mempool(Eina_Benchmark *bench)
{
/* eina_benchmark_register(bench, "chained mempool", EINA_BENCHMARK(eina_mempool_chained_mempool), 10, 100, 10); */
eina_benchmark_register(bench, "pass through", EINA_BENCHMARK(eina_mempool_pass_through), 10, 10000, 100);
eina_benchmark_register(bench, "fixed bitmap", EINA_BENCHMARK(eina_mempool_fixed_bitmap), 10, 10000, 100);
eina_benchmark_register(bench, "chained mempool", EINA_BENCHMARK(eina_mempool_chained_mempool), 10, 1000, 10);
eina_benchmark_register(bench, "pass through", EINA_BENCHMARK(eina_mempool_pass_through), 10, 1000, 10);
eina_benchmark_register(bench, "fixed bitmap", EINA_BENCHMARK(eina_mempool_fixed_bitmap), 10, 1000, 10);
#ifdef EINA_EMEMOA_SUPPORT
eina_benchmark_register(bench, "ememoa fixed", EINA_BENCHMARK(eina_mempool_ememoa_fixed), 10, 10000, 100);
eina_benchmark_register(bench, "ememoa unknown", EINA_BENCHMARK(eina_mempool_ememoa_unknown), 10, 10000, 100);
eina_benchmark_register(bench, "ememoa fixed", EINA_BENCHMARK(eina_mempool_ememoa_fixed), 10, 1000, 10);
eina_benchmark_register(bench, "ememoa unknown", EINA_BENCHMARK(eina_mempool_ememoa_unknown), 10, 1000, 10);
#endif
}