Skip to content

Commit 5ef4789

Browse files
committed
Add free() to the devdax provider
1 parent 4820e32 commit 5ef4789

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

src/provider/provider_devdax_memory.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,12 @@ static umf_result_t devdax_close_ipc_handle(void *provider, void *ptr,
511511
return UMF_RESULT_SUCCESS;
512512
}
513513

514+
static umf_result_t devdax_free(void *provider, void *ptr, size_t size) {
515+
devdax_memory_provider_t *devdax_provider =
516+
(devdax_memory_provider_t *)provider;
517+
return coarse_free(devdax_provider->coarse, ptr, size);
518+
}
519+
514520
static umf_memory_provider_ops_t UMF_DEVDAX_MEMORY_PROVIDER_OPS = {
515521
.version = UMF_VERSION_CURRENT,
516522
.initialize = devdax_initialize,
@@ -520,6 +526,7 @@ static umf_memory_provider_ops_t UMF_DEVDAX_MEMORY_PROVIDER_OPS = {
520526
.get_recommended_page_size = devdax_get_recommended_page_size,
521527
.get_min_page_size = devdax_get_min_page_size,
522528
.get_name = devdax_get_name,
529+
.ext.free = devdax_free,
523530
.ext.purge_lazy = devdax_purge_lazy,
524531
.ext.purge_force = devdax_purge_force,
525532
.ext.allocation_merge = devdax_allocation_merge,

test/provider_devdax_memory.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ static void test_alloc_free_success(umf_memory_provider_handle_t provider,
100100
}
101101

102102
umf_result = umfMemoryProviderFree(provider, ptr, size);
103-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
103+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
104104
}
105105

106106
static void verify_last_native_error(umf_memory_provider_handle_t provider,
@@ -162,7 +162,7 @@ TEST_F(test, test_if_mapped_with_MAP_SYNC) {
162162
bool flag_found = is_mapped_with_MAP_SYNC(path, buf, size);
163163

164164
umf_result = umfMemoryProviderFree(hProvider, buf, size);
165-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
165+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
166166

167167
umfMemoryProviderDestroy(hProvider);
168168

@@ -294,20 +294,20 @@ TEST_P(umfProviderTest, get_name) {
294294
TEST_P(umfProviderTest, free_size_0_ptr_not_null) {
295295
umf_result_t umf_result =
296296
umfMemoryProviderFree(provider.get(), INVALID_PTR, 0);
297-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
297+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
298298
}
299299

300300
TEST_P(umfProviderTest, free_NULL) {
301301
umf_result_t umf_result = umfMemoryProviderFree(provider.get(), nullptr, 0);
302-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
302+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
303303
}
304304

305305
// other negative tests
306306

307307
TEST_P(umfProviderTest, free_INVALID_POINTER_SIZE_GT_0) {
308308
umf_result_t umf_result =
309309
umfMemoryProviderFree(provider.get(), INVALID_PTR, page_plus_64);
310-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
310+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
311311
}
312312

313313
TEST_P(umfProviderTest, purge_lazy_INVALID_POINTER) {

test/provider_devdax_memory_ipc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ static std::vector<ipcTestParams> getIpcProxyPoolTestParamsList(void) {
5353

5454
ipcProxyPoolTestParamsList = {
5555
{umfProxyPoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
56-
defaultDevDaxParams.get(), &hostAccessor, true},
56+
defaultDevDaxParams.get(), &hostAccessor, false},
5757
#ifdef UMF_POOL_JEMALLOC_ENABLED
5858
{umfJemallocPoolOps(), nullptr, umfDevDaxMemoryProviderOps(),
5959
defaultDevDaxParams.get(), &hostAccessor, false},

0 commit comments

Comments
 (0)