Skip to content

Commit 490eeac

Browse files
committed
Implement umfPoolCreateFromMemspace() with proxy pool
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 0a0e8cf commit 490eeac

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

src/memory_targets/memory_target_numa.c

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <stdlib.h>
1313

1414
#include <umf/pools/pool_disjoint.h>
15+
#include <umf/pools/pool_proxy.h>
1516
#include <umf/providers/provider_os_memory.h>
1617

1718
#include "../memory_pool_internal.h"
@@ -101,12 +102,25 @@ static umf_result_t numa_memory_provider_create_from_memspace(
101102
static umf_result_t numa_pool_create_from_memspace(
102103
umf_memspace_handle_t memspace, void **memTargets, size_t numTargets,
103104
umf_memspace_policy_handle_t policy, umf_memory_pool_handle_t *pool) {
104-
(void)memspace;
105-
(void)memTargets;
106-
(void)numTargets;
107-
(void)policy;
108-
(void)pool;
109-
return UMF_RESULT_ERROR_NOT_SUPPORTED;
105+
106+
umf_memory_provider_handle_t provider;
107+
umf_result_t umf_result = numa_memory_provider_create_from_memspace(
108+
memspace, memTargets, numTargets, policy, &provider);
109+
if (umf_result != UMF_RESULT_SUCCESS) {
110+
return umf_result;
111+
}
112+
113+
umf_memory_pool_handle_t proxy_pool;
114+
umf_result = umfPoolCreate(umfProxyPoolOps(), provider, NULL,
115+
UMF_POOL_CREATE_FLAG_OWN_PROVIDER, &proxy_pool);
116+
if (umf_result != UMF_RESULT_SUCCESS) {
117+
umfMemoryProviderDestroy(provider);
118+
return umf_result;
119+
}
120+
121+
*pool = proxy_pool;
122+
123+
return umf_result;
110124
}
111125

112126
static umf_result_t numa_clone(void *memTarget, void **outMemTarget) {

0 commit comments

Comments
 (0)