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
@@ -159,10 +160,7 @@ UBENCH_EX(simple, os_memory_provider) {
159160}
160161#endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
161162
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 ))
163+ #ifdef UMF_BUILD_OS_MEMORY_PROVIDER
166164
167165static void * w_umfPoolMalloc (void * provider , size_t size , size_t alignment ) {
168166 umf_memory_pool_handle_t hPool = (umf_memory_pool_handle_t )provider ;
@@ -177,7 +175,41 @@ static void w_umfPoolFree(void *provider, void *ptr, size_t size) {
177175 exit (-1 );
178176 }
179177}
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)) */
178+
179+ ////////////////// PROXY POOL WITH OS MEMORY PROVIDER
180+
181+ UBENCH_EX (simple , proxy_pool_with_os_memory_provider ) {
182+ alloc_t * array = alloc_array (N_ITERATIONS );
183+
184+ enum umf_result_t umf_result ;
185+ umf_memory_provider_handle_t os_memory_provider = NULL ;
186+ umf_result = umfMemoryProviderCreate (umfOsMemoryProviderOps (),
187+ & UMF_OS_MEMORY_PROVIDER_PARAMS ,
188+ & os_memory_provider );
189+ if (umf_result != UMF_RESULT_SUCCESS ) {
190+ exit (-1 );
191+ }
192+
193+ umf_memory_pool_handle_t proxy_pool ;
194+ umf_result = umfPoolCreate (umfProxyPoolOps (), os_memory_provider , NULL , 0 ,
195+ & proxy_pool );
196+ if (umf_result != UMF_RESULT_SUCCESS ) {
197+ exit (-1 );
198+ }
199+
200+ do_benchmark (array , N_ITERATIONS , w_umfPoolMalloc , w_umfPoolFree ,
201+ proxy_pool ); // WARMUP
202+
203+ UBENCH_DO_BENCHMARK () {
204+ do_benchmark (array , N_ITERATIONS , w_umfPoolMalloc , w_umfPoolFree ,
205+ proxy_pool );
206+ }
207+
208+ umfPoolDestroy (proxy_pool );
209+ umfMemoryProviderDestroy (os_memory_provider );
210+ free (array );
211+ }
212+ #endif /* UMF_BUILD_OS_MEMORY_PROVIDER */
181213
182214#if (defined UMF_BUILD_LIBUMF_POOL_DISJOINT ) && \
183215 (defined UMF_BUILD_OS_MEMORY_PROVIDER )
0 commit comments