88 */
99
1010#include <umf/memory_pool.h>
11+ #include <umf/pools/pool_proxy.h>
1112#include <umf/providers/provider_os_memory.h>
1213
1314#ifdef UMF_BUILD_LIBUMF_POOL_DISJOINT
@@ -157,12 +158,6 @@ UBENCH_EX(simple, os_memory_provider) {
157158 umfMemoryProviderDestroy (os_memory_provider );
158159 free (array );
159160}
160- #endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
161-
162- #if (defined UMF_BUILD_OS_MEMORY_PROVIDER ) && \
163- ((defined UMF_BUILD_LIBUMF_POOL_DISJOINT ) || \
164- (defined UMF_BUILD_LIBUMF_POOL_JEMALLOC ) || \
165- (defined UMF_BUILD_LIBUMF_POOL_SCALABLE ))
166161
167162static void * w_umfPoolMalloc (void * provider , size_t size , size_t alignment ) {
168163 umf_memory_pool_handle_t hPool = (umf_memory_pool_handle_t )provider ;
@@ -177,7 +172,42 @@ static void w_umfPoolFree(void *provider, void *ptr, size_t size) {
177172 exit (-1 );
178173 }
179174}
180- #endif /* (defined UMF_BUILD_OS_MEMORY_PROVIDER) && ((defined UMF_BUILD_LIBUMF_POOL_DISJOINT) || (defined UMF_BUILD_LIBUMF_POOL_JEMALLOC) || (defined UMF_BUILD_LIBUMF_POOL_SCALABLE)) */
175+
176+ ////////////////// PROXY POOL WITH OS MEMORY PROVIDER
177+
178+ UBENCH_EX (simple , proxy_pool_with_os_memory_provider ) {
179+ alloc_t * array = alloc_array (N_ITERATIONS );
180+
181+ enum umf_result_t umf_result ;
182+ umf_memory_provider_handle_t os_memory_provider = NULL ;
183+ umf_result = umfMemoryProviderCreate (umfOsMemoryProviderOps (),
184+ & UMF_OS_MEMORY_PROVIDER_PARAMS ,
185+ & os_memory_provider );
186+ if (umf_result != UMF_RESULT_SUCCESS ) {
187+ exit (-1 );
188+ }
189+
190+ umf_memory_pool_handle_t proxy_pool ;
191+ umf_result = umfPoolCreate (umfProxyPoolOps (), os_memory_provider , NULL , 0 ,
192+ & proxy_pool );
193+ if (umf_result != UMF_RESULT_SUCCESS ) {
194+ exit (-1 );
195+ }
196+
197+ do_benchmark (array , N_ITERATIONS , w_umfPoolMalloc , w_umfPoolFree ,
198+ proxy_pool ); // WARMUP
199+
200+ UBENCH_DO_BENCHMARK () {
201+ do_benchmark (array , N_ITERATIONS , w_umfPoolMalloc , w_umfPoolFree ,
202+ proxy_pool );
203+ }
204+
205+ umfPoolDestroy (proxy_pool );
206+ umfMemoryProviderDestroy (os_memory_provider );
207+ free (array );
208+ }
209+
210+ #endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
181211
182212#if (defined UMF_BUILD_LIBUMF_POOL_DISJOINT ) && \
183213 (defined UMF_BUILD_OS_MEMORY_PROVIDER )
0 commit comments