1- // Copyright (C) 2023-2024 Intel Corporation
1+ // Copyright (C) 2023-2025 Intel Corporation
22// Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT.
33// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
44
1111#include " provider_null.h"
1212#include " provider_trace.h"
1313
14- using disjoint_params_unique_handle_t =
15- std::unique_ptr<umf_disjoint_pool_params_t ,
16- decltype (&umfDisjointPoolParamsDestroy)>;
17-
1814static constexpr size_t DEFAULT_DISJOINT_SLAB_MIN_SIZE = 4096 ;
1915static constexpr size_t DEFAULT_DISJOINT_MAX_POOLABLE_SIZE = 4096 ;
2016static constexpr size_t DEFAULT_DISJOINT_CAPACITY = 4 ;
2117static constexpr size_t DEFAULT_DISJOINT_MIN_BUCKET_SIZE = 64 ;
2218
23- disjoint_params_unique_handle_t poolConfig () {
19+ void * defaultPoolConfig () {
2420 umf_disjoint_pool_params_handle_t config = nullptr ;
2521 umf_result_t res = umfDisjointPoolParamsCreate (&config);
2622 if (res != UMF_RESULT_SUCCESS) {
@@ -50,8 +46,7 @@ disjoint_params_unique_handle_t poolConfig() {
5046 throw std::runtime_error (" Failed to set min bucket size" );
5147 }
5248
53- return disjoint_params_unique_handle_t (config,
54- &umfDisjointPoolParamsDestroy);
49+ return config;
5550}
5651
5752using umf_test::test;
@@ -83,17 +78,21 @@ TEST_F(test, freeErrorPropagation) {
8378 provider_handle = providerUnique.get ();
8479
8580 // force all allocations to go to memory provider
86- disjoint_params_unique_handle_t params = poolConfig ();
87- umf_result_t retp =
88- umfDisjointPoolParamsSetMaxPoolableSize (params.get (), 0 );
81+ umf_disjoint_pool_params_handle_t params;
82+ umf_result_t retp = umfDisjointPoolParamsCreate (¶ms);
83+ EXPECT_EQ (retp, UMF_RESULT_SUCCESS);
84+ retp = umfDisjointPoolParamsSetMaxPoolableSize (params, 0 );
8985 EXPECT_EQ (retp, UMF_RESULT_SUCCESS);
9086
9187 umf_memory_pool_handle_t pool = NULL ;
92- retp = umfPoolCreate ( umfDisjointPoolOps (), provider_handle, params. get (), 0 ,
93- &pool);
88+ retp =
89+ umfPoolCreate ( umfDisjointPoolOps (), provider_handle, params, 0 , &pool);
9490 EXPECT_EQ (retp, UMF_RESULT_SUCCESS);
9591 auto poolHandle = umf_test::wrapPoolUnique (pool);
9692
93+ retp = umfDisjointPoolParamsDestroy (params);
94+ EXPECT_EQ (retp, UMF_RESULT_SUCCESS);
95+
9796 static constexpr size_t size = 1024 ;
9897 void *ptr = umfPoolMalloc (pool, size);
9998
@@ -114,12 +113,12 @@ TEST_F(test, sharedLimits) {
114113
115114 struct memory_provider : public umf_test ::provider_base_t {
116115 umf_result_t alloc (size_t size, size_t , void **ptr) noexcept {
117- *ptr = malloc (size);
116+ *ptr = umf_ba_global_alloc (size);
118117 numAllocs++;
119118 return UMF_RESULT_SUCCESS;
120119 }
121120 umf_result_t free (void *ptr, [[maybe_unused]] size_t size) noexcept {
122- ::free (ptr);
121+ umf_ba_global_free (ptr);
123122 numFrees++;
124123 return UMF_RESULT_SUCCESS;
125124 }
@@ -130,9 +129,9 @@ TEST_F(test, sharedLimits) {
130129 static constexpr size_t SlabMinSize = 1024 ;
131130 static constexpr size_t MaxSize = 4 * SlabMinSize;
132131
133- disjoint_params_unique_handle_t config = poolConfig ();
134- umf_result_t ret =
135- umfDisjointPoolParamsSetSlabMinSize (config. get () , SlabMinSize);
132+ umf_disjoint_pool_params_handle_t params =
133+ ( umf_disjoint_pool_params_handle_t ) defaultPoolConfig ();
134+ umf_result_t ret = umfDisjointPoolParamsSetSlabMinSize (params , SlabMinSize);
136135 EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
137136
138137 auto limits =
@@ -141,24 +140,27 @@ TEST_F(test, sharedLimits) {
141140 umfDisjointPoolSharedLimitsCreate (MaxSize),
142141 &umfDisjointPoolSharedLimitsDestroy);
143142
144- ret = umfDisjointPoolParamsSetSharedLimits (config. get () , limits.get ());
143+ ret = umfDisjointPoolParamsSetSharedLimits (params , limits.get ());
145144 EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
146145
147146 auto provider =
148147 wrapProviderUnique (createProviderChecked (&provider_ops, nullptr ));
149148
150149 umf_memory_pool_handle_t pool1 = NULL ;
151150 umf_memory_pool_handle_t pool2 = NULL ;
152- ret = umfPoolCreate ( umfDisjointPoolOps (), provider. get (),
153- ( void *)config .get (), 0 , &pool1);
151+ ret =
152+ umfPoolCreate ( umfDisjointPoolOps (), provider .get (), params , 0 , &pool1);
154153 EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
155154 auto poolHandle1 = umf_test::wrapPoolUnique (pool1);
156155
157- ret = umfPoolCreate ( umfDisjointPoolOps (), provider. get (),
158- ( void *)config .get (), 0 , &pool2);
156+ ret =
157+ umfPoolCreate ( umfDisjointPoolOps (), provider .get (), params , 0 , &pool2);
159158 EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
160159 auto poolHandle2 = umf_test::wrapPoolUnique (pool2);
161160
161+ ret = umfDisjointPoolParamsDestroy (params);
162+ EXPECT_EQ (ret, UMF_RESULT_SUCCESS);
163+
162164 EXPECT_EQ (0 , numAllocs);
163165 EXPECT_EQ (0 , numFrees);
164166
@@ -243,23 +245,25 @@ TEST_F(test, disjointPoolInvalidBucketSize) {
243245 umfDisjointPoolParamsDestroy (params);
244246}
245247
246- disjoint_params_unique_handle_t defaultPoolConfig = poolConfig();
247248INSTANTIATE_TEST_SUITE_P (disjointPoolTests, umfPoolTest,
248249 ::testing::Values (poolCreateExtParams{
249- umfDisjointPoolOps (),
250- (void *)defaultPoolConfig.get (),
251- &BA_GLOBAL_PROVIDER_OPS, nullptr }));
250+ umfDisjointPoolOps (), defaultPoolConfig,
251+ (pfnPoolParamsDestroy)umfDisjointPoolParamsDestroy,
252+ &BA_GLOBAL_PROVIDER_OPS, nullptr , nullptr }));
253+
254+ void *memProviderParams () { return (void *)&DEFAULT_DISJOINT_CAPACITY; }
252255
253256INSTANTIATE_TEST_SUITE_P (
254257 disjointPoolTests, umfMemTest,
255258 ::testing::Values (std::make_tuple(
256- poolCreateExtParams{
257- umfDisjointPoolOps (), (void *)defaultPoolConfig.get (),
258- &MOCK_OUT_OF_MEM_PROVIDER_OPS, (void *)&DEFAULT_DISJOINT_CAPACITY},
259+ poolCreateExtParams{umfDisjointPoolOps (), defaultPoolConfig,
260+ (pfnPoolParamsDestroy)umfDisjointPoolParamsDestroy,
261+ &MOCK_OUT_OF_MEM_PROVIDER_OPS, memProviderParams,
262+ nullptr },
259263 static_cast <int >(DEFAULT_DISJOINT_CAPACITY) / 2)));
260264
261265INSTANTIATE_TEST_SUITE_P (disjointMultiPoolTests, umfMultiPoolTest,
262266 ::testing::Values (poolCreateExtParams{
263- umfDisjointPoolOps (),
264- (void *)defaultPoolConfig. get () ,
265- &BA_GLOBAL_PROVIDER_OPS, nullptr }));
267+ umfDisjointPoolOps (), defaultPoolConfig,
268+ (pfnPoolParamsDestroy)umfDisjointPoolParamsDestroy ,
269+ &BA_GLOBAL_PROVIDER_OPS, nullptr , nullptr }));
0 commit comments