1717#include "../memory_pool_internal.h"
1818#include "base_alloc.h"
1919#include "base_alloc_global.h"
20- #include "base_alloc_linear.h"
2120#include "memory_target_numa.h"
2221
2322struct numa_memory_target_t {
@@ -51,8 +50,7 @@ static void numa_finalize(void *memTarget) {
5150static umf_result_t
5251numa_targets_create_nodemask (struct numa_memory_target_t * * targets ,
5352 size_t numTargets , unsigned long * * mask ,
54- unsigned * maxnode ,
55- umf_ba_linear_pool_t * linear_allocator ) {
53+ unsigned * maxnode , size_t * mask_size ) {
5654 assert (targets );
5755 assert (mask );
5856 assert (maxnode );
@@ -83,8 +81,9 @@ numa_targets_create_nodemask(struct numa_memory_target_t **targets,
8381 unsigned bits_per_long = sizeof (unsigned long ) * 8 ;
8482 int nrUlongs = (lastBit + bits_per_long ) / bits_per_long ;
8583
86- unsigned long * nodemask = umf_ba_linear_alloc (
87- linear_allocator , (sizeof (unsigned long ) * nrUlongs ));
84+ * mask_size = sizeof (unsigned long ) * nrUlongs ;
85+
86+ unsigned long * nodemask = umf_ba_global_alloc (* mask_size );
8887 if (!nodemask ) {
8988 hwloc_bitmap_free (bitmap );
9089 return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
@@ -94,7 +93,7 @@ numa_targets_create_nodemask(struct numa_memory_target_t **targets,
9493 hwloc_bitmap_free (bitmap );
9594
9695 if (ret ) {
97- // nodemask is freed during destroying linear_allocator
96+ umf_ba_global_free ( nodemask , * mask_size );
9897 return UMF_RESULT_ERROR_UNKNOWN ;
9998 }
10099
@@ -116,15 +115,10 @@ static enum umf_result_t numa_memory_provider_create_from_memspace(
116115
117116 unsigned long * nodemask ;
118117 unsigned maxnode ;
119-
120- umf_ba_linear_pool_t * linear_allocator =
121- umf_ba_linear_create (0 /* minimal pool size */ );
122- if (!linear_allocator ) {
123- return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
124- }
118+ size_t nodemask_size ;
125119
126120 umf_result_t ret = numa_targets_create_nodemask (
127- numaTargets , numTargets , & nodemask , & maxnode , linear_allocator );
121+ numaTargets , numTargets , & nodemask , & maxnode , & nodemask_size );
128122 if (ret != UMF_RESULT_SUCCESS ) {
129123 return ret ;
130124 }
@@ -137,9 +131,8 @@ static enum umf_result_t numa_memory_provider_create_from_memspace(
137131 umf_memory_provider_handle_t numaProvider = NULL ;
138132 ret = umfMemoryProviderCreate (umfOsMemoryProviderOps (), & params ,
139133 & numaProvider );
140- umf_ba_linear_destroy ( linear_allocator ); // nodemask is freed here
134+ umf_ba_global_free ( nodemask , nodemask_size );
141135 if (ret ) {
142-
143136 return ret ;
144137 }
145138
0 commit comments