17
17
#include "../memory_pool_internal.h"
18
18
#include "base_alloc.h"
19
19
#include "base_alloc_global.h"
20
- #include "base_alloc_linear.h"
21
20
#include "memory_target_numa.h"
22
21
23
22
struct numa_memory_target_t {
@@ -51,8 +50,7 @@ static void numa_finalize(void *memTarget) {
51
50
static umf_result_t
52
51
numa_targets_create_nodemask (struct numa_memory_target_t * * targets ,
53
52
size_t numTargets , unsigned long * * mask ,
54
- unsigned * maxnode ,
55
- umf_ba_linear_pool_t * linear_allocator ) {
53
+ unsigned * maxnode , size_t * mask_size ) {
56
54
assert (targets );
57
55
assert (mask );
58
56
assert (maxnode );
@@ -83,8 +81,9 @@ numa_targets_create_nodemask(struct numa_memory_target_t **targets,
83
81
unsigned bits_per_long = sizeof (unsigned long ) * 8 ;
84
82
int nrUlongs = (lastBit + bits_per_long ) / bits_per_long ;
85
83
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 );
88
87
if (!nodemask ) {
89
88
hwloc_bitmap_free (bitmap );
90
89
return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
@@ -94,7 +93,7 @@ numa_targets_create_nodemask(struct numa_memory_target_t **targets,
94
93
hwloc_bitmap_free (bitmap );
95
94
96
95
if (ret ) {
97
- // nodemask is freed during destroying linear_allocator
96
+ umf_ba_global_free ( nodemask , * mask_size );
98
97
return UMF_RESULT_ERROR_UNKNOWN ;
99
98
}
100
99
@@ -116,15 +115,10 @@ static enum umf_result_t numa_memory_provider_create_from_memspace(
116
115
117
116
unsigned long * nodemask ;
118
117
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 ;
125
119
126
120
umf_result_t ret = numa_targets_create_nodemask (
127
- numaTargets , numTargets , & nodemask , & maxnode , linear_allocator );
121
+ numaTargets , numTargets , & nodemask , & maxnode , & nodemask_size );
128
122
if (ret != UMF_RESULT_SUCCESS ) {
129
123
return ret ;
130
124
}
@@ -137,9 +131,8 @@ static enum umf_result_t numa_memory_provider_create_from_memspace(
137
131
umf_memory_provider_handle_t numaProvider = NULL ;
138
132
ret = umfMemoryProviderCreate (umfOsMemoryProviderOps (), & params ,
139
133
& numaProvider );
140
- umf_ba_linear_destroy ( linear_allocator ); // nodemask is freed here
134
+ umf_ba_global_free ( nodemask , nodemask_size );
141
135
if (ret ) {
142
-
143
136
return ret ;
144
137
}
145
138
0 commit comments