Skip to content

Commit cef869a

Browse files
committed
Add free() op to the file provider
Signed-off-by: Lukasz Dorau <[email protected]>
1 parent 0ea8873 commit cef869a

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

src/provider/provider_file_memory.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -815,6 +815,11 @@ static umf_result_t file_close_ipc_handle(void *provider, void *ptr,
815815
return UMF_RESULT_SUCCESS;
816816
}
817817

818+
static umf_result_t file_free(void *provider, void *ptr, size_t size) {
819+
file_memory_provider_t *file_provider = (file_memory_provider_t *)provider;
820+
return coarse_free(file_provider->coarse, ptr, size);
821+
}
822+
818823
static umf_memory_provider_ops_t UMF_FILE_MEMORY_PROVIDER_OPS = {
819824
.version = UMF_VERSION_CURRENT,
820825
.initialize = file_initialize,
@@ -824,6 +829,7 @@ static umf_memory_provider_ops_t UMF_FILE_MEMORY_PROVIDER_OPS = {
824829
.get_recommended_page_size = file_get_recommended_page_size,
825830
.get_min_page_size = file_get_min_page_size,
826831
.get_name = file_get_name,
832+
.ext.free = file_free,
827833
.ext.purge_lazy = file_purge_lazy,
828834
.ext.purge_force = file_purge_force,
829835
.ext.allocation_merge = file_allocation_merge,

test/provider_file_memory.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ static void test_alloc_free_success(umf_memory_provider_handle_t provider,
9898
}
9999

100100
umf_result = umfMemoryProviderFree(provider, ptr, size);
101-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
101+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
102102
}
103103

104104
static void verify_last_native_error(umf_memory_provider_handle_t provider,
@@ -159,7 +159,7 @@ TEST_F(test, test_if_mapped_with_MAP_SYNC) {
159159
bool flag_found = is_mapped_with_MAP_SYNC(path, buf, size);
160160

161161
umf_result = umfMemoryProviderFree(hProvider, buf, size);
162-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
162+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
163163

164164
umfMemoryProviderDestroy(hProvider);
165165

@@ -244,10 +244,10 @@ TEST_P(FileProviderParamsDefault, two_allocations) {
244244
memset(ptr2, 0x22, size);
245245

246246
umf_result = umfMemoryProviderFree(provider.get(), ptr1, size);
247-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
247+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
248248

249249
umf_result = umfMemoryProviderFree(provider.get(), ptr2, size);
250-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
250+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
251251
}
252252

253253
TEST_P(FileProviderParamsDefault, alloc_page64_align_0) {
@@ -366,12 +366,12 @@ TEST_P(FileProviderParamsDefault, get_name) {
366366
TEST_P(FileProviderParamsDefault, free_size_0_ptr_not_null) {
367367
umf_result_t umf_result =
368368
umfMemoryProviderFree(provider.get(), INVALID_PTR, 0);
369-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
369+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
370370
}
371371

372372
TEST_P(FileProviderParamsDefault, free_NULL) {
373373
umf_result_t umf_result = umfMemoryProviderFree(provider.get(), nullptr, 0);
374-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
374+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
375375
}
376376

377377
// other negative tests
@@ -449,7 +449,7 @@ TEST_F(test, set_null_path) {
449449
TEST_P(FileProviderParamsDefault, free_INVALID_POINTER_SIZE_GT_0) {
450450
umf_result_t umf_result =
451451
umfMemoryProviderFree(provider.get(), INVALID_PTR, page_plus_64);
452-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
452+
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_INVALID_ARGUMENT);
453453
}
454454

455455
TEST_P(FileProviderParamsDefault, purge_lazy_INVALID_POINTER) {
@@ -512,7 +512,7 @@ TEST_P(FileProviderParamsShared, IPC_base_success_test) {
512512
ASSERT_EQ(ret, 0);
513513

514514
umf_result = umfMemoryProviderFree(provider.get(), ptr, size);
515-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
515+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
516516
}
517517

518518
TEST_P(FileProviderParamsShared, IPC_file_not_exist) {
@@ -552,5 +552,5 @@ TEST_P(FileProviderParamsShared, IPC_file_not_exist) {
552552
ASSERT_EQ(new_ptr, nullptr);
553553

554554
umf_result = umfMemoryProviderFree(provider.get(), ptr, size);
555-
ASSERT_EQ(umf_result, UMF_RESULT_ERROR_NOT_SUPPORTED);
555+
ASSERT_EQ(umf_result, UMF_RESULT_SUCCESS);
556556
}

test/provider_file_memory_ipc.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ HostMemoryAccessor hostAccessor;
7373
static std::vector<ipcTestParams> ipcManyPoolsTestParamsList = {
7474
// TODO: enable it when sizes of allocations in ipcFixtures.hpp are fixed
7575
// {umfProxyPoolOps(), nullptr, umfFileMemoryProviderOps(),
76-
// file_params_shared.get(), &hostAccessor, true},
76+
// file_params_shared.get(), &hostAccessor, false},
7777
#ifdef UMF_POOL_JEMALLOC_ENABLED
7878
{umfJemallocPoolOps(), nullptr, umfFileMemoryProviderOps(),
7979
file_params_shared.get(), &hostAccessor, false},

0 commit comments

Comments
 (0)