Skip to content

Commit 26ffbe8

Browse files
committed
Add size param to the close_ipc_handle API
1 parent f24134d commit 26ffbe8

File tree

10 files changed

+28
-16
lines changed

10 files changed

+28
-16
lines changed

include/umf/memory_provider.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,12 +188,13 @@ umfMemoryProviderOpenIPCHandle(umf_memory_provider_handle_t hProvider,
188188
/// @brief Close an IPC memory handle.
189189
/// @param hProvider [in] handle to the memory provider.
190190
/// @param ptr [in] pointer returned by umfMemoryProviderOpenIPCHandle function.
191+
/// @param size [in] size of the memory address range.
191192
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
192193
/// UMF_RESULT_ERROR_INVALID_ARGUMENT if invalid \p hProvider or \p ptr are passed.
193194
/// UMF_RESULT_ERROR_NOT_SUPPORTED if IPC functionality is not supported by this provider.
194195
umf_result_t
195196
umfMemoryProviderCloseIPCHandle(umf_memory_provider_handle_t hProvider,
196-
void *ptr);
197+
void *ptr, size_t size);
197198

198199
///
199200
/// @brief Retrieve name of a given memory \p hProvider.

include/umf/memory_provider_ops.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,10 +125,11 @@ typedef struct umf_memory_provider_ipc_ops_t {
125125
/// @brief Closes an IPC memory handle.
126126
/// @param provider pointer to the memory provider.
127127
/// @param ptr pointer to the memory retrieved with open_ipc_handle function.
128+
/// @param size size of the memory address range.
128129
/// @return UMF_RESULT_SUCCESS on success or appropriate error code on failure.
129130
/// UMF_RESULT_ERROR_INVALID_ARGUMENT if invalid \p ptr is passed.
130131
/// UMF_RESULT_ERROR_NOT_SUPPORTED if IPC functionality is not supported by this provider.
131-
umf_result_t (*close_ipc_handle)(void *provider, void *ptr);
132+
umf_result_t (*close_ipc_handle)(void *provider, void *ptr, size_t size);
132133
} umf_memory_provider_ipc_ops_t;
133134

134135
///

src/ipc.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,6 @@ umf_result_t umfCloseIPCHandle(void *ptr) {
113113
// upstream provider but we need tracking one
114114
umf_memory_provider_handle_t hProvider = allocInfo.pool->provider;
115115

116-
return umfMemoryProviderCloseIPCHandle(hProvider, allocInfo.base);
116+
return umfMemoryProviderCloseIPCHandle(hProvider, allocInfo.base,
117+
allocInfo.size);
117118
}

src/memory_provider.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,11 @@ static umf_result_t umfDefaultOpenIPCHandle(void *provider,
9090
return UMF_RESULT_ERROR_NOT_SUPPORTED;
9191
}
9292

93-
static umf_result_t umfDefaultCloseIPCHandle(void *provider, void *ptr) {
93+
static umf_result_t umfDefaultCloseIPCHandle(void *provider, void *ptr,
94+
size_t size) {
9495
(void)provider;
9596
(void)ptr;
97+
(void)size;
9698
return UMF_RESULT_ERROR_NOT_SUPPORTED;
9799
}
98100

@@ -356,6 +358,7 @@ umfMemoryProviderOpenIPCHandle(umf_memory_provider_handle_t hProvider,
356358

357359
umf_result_t
358360
umfMemoryProviderCloseIPCHandle(umf_memory_provider_handle_t hProvider,
359-
void *ptr) {
360-
return hProvider->ops.ipc.close_ipc_handle(hProvider->provider_priv, ptr);
361+
void *ptr, size_t size) {
362+
return hProvider->ops.ipc.close_ipc_handle(hProvider->provider_priv, ptr,
363+
size);
361364
}

src/provider/provider_level_zero.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,11 @@ static umf_result_t ze_memory_provider_open_ipc_handle(void *provider,
366366
return UMF_RESULT_SUCCESS;
367367
}
368368

369-
static umf_result_t ze_memory_provider_close_ipc_handle(void *provider,
370-
void *ptr) {
369+
static umf_result_t
370+
ze_memory_provider_close_ipc_handle(void *provider, void *ptr, size_t size) {
371371
ASSERT(provider != NULL);
372372
ASSERT(ptr != NULL);
373+
(void)size;
373374
ze_result_t ze_result;
374375
struct ze_memory_provider_t *ze_provider =
375376
(struct ze_memory_provider_t *)provider;

src/provider/provider_tracking.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -598,14 +598,15 @@ static umf_result_t trackingOpenIpcHandle(void *provider, void *providerIpcData,
598598
size_t bufferSize = getDataSizeFromIpcHandle(providerIpcData);
599599
ret = umfMemoryTrackerAdd(p->hTracker, p->pool, *ptr, bufferSize);
600600
if (ret != UMF_RESULT_SUCCESS) {
601-
if (umfMemoryProviderCloseIPCHandle(p->hUpstream, *ptr)) {
601+
if (umfMemoryProviderCloseIPCHandle(p->hUpstream, *ptr, bufferSize)) {
602602
// TODO: LOG
603603
}
604604
}
605605
return ret;
606606
}
607607

608-
static umf_result_t trackingCloseIpcHandle(void *provider, void *ptr) {
608+
static umf_result_t trackingCloseIpcHandle(void *provider, void *ptr,
609+
size_t size) {
609610
umf_tracking_memory_provider_t *p =
610611
(umf_tracking_memory_provider_t *)provider;
611612

@@ -621,7 +622,7 @@ static umf_result_t trackingCloseIpcHandle(void *provider, void *ptr) {
621622
LOG_ERR("tracking free: umfMemoryTrackerRemove failed");
622623
}
623624
}
624-
return umfMemoryProviderCloseIPCHandle(p->hUpstream, ptr);
625+
return umfMemoryProviderCloseIPCHandle(p->hUpstream, ptr, size);
625626
}
626627

627628
umf_memory_provider_ops_t UMF_TRACKING_MEMORY_PROVIDER_OPS = {

test/common/provider.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,8 @@ typedef struct provider_base_t {
9090
[[maybe_unused]] void **ptr) noexcept {
9191
return UMF_RESULT_ERROR_UNKNOWN;
9292
}
93-
umf_result_t close_ipc_handle([[maybe_unused]] void *ptr) noexcept {
93+
umf_result_t close_ipc_handle([[maybe_unused]] void *ptr,
94+
[[maybe_unused]] size_t size) noexcept {
9495
return UMF_RESULT_ERROR_UNKNOWN;
9596
}
9697
} provider_base_t;

test/common/provider_null.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,10 @@ static umf_result_t nullOpenIpcHandle(void *provider, void *ipcHandle,
122122
return UMF_RESULT_SUCCESS;
123123
}
124124

125-
static umf_result_t nullCloseIpcHandle(void *provider, void *ptr) {
125+
static umf_result_t nullCloseIpcHandle(void *provider, void *ptr, size_t size) {
126126
(void)provider;
127127
(void)ptr;
128+
(void)size;
128129
return UMF_RESULT_SUCCESS;
129130
}
130131

test/common/provider_trace.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,14 @@ static umf_result_t traceOpenIpcHandle(void *provider, void *ipcHandle,
165165
ipcHandle, ptr);
166166
}
167167

168-
static umf_result_t traceCloseIpcHandle(void *provider, void *ptr) {
168+
static umf_result_t traceCloseIpcHandle(void *provider, void *ptr,
169+
size_t size) {
169170
umf_provider_trace_params_priv_t *traceProvider =
170171
(umf_provider_trace_params_priv_t *)provider;
171172

172173
traceProvider->trace("close_ipc_handle");
173174
return umfMemoryProviderCloseIPCHandle(traceProvider->hUpstreamProvider,
174-
ptr);
175+
ptr, size);
175176
}
176177

177178
umf_memory_provider_ops_t UMF_TRACE_PROVIDER_OPS = {

test/ipcAPI.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ struct provider_mock_ipc : public umf_test::provider_base_t {
111111

112112
return UMF_RESULT_SUCCESS;
113113
}
114-
enum umf_result_t close_ipc_handle(void *ptr) noexcept {
114+
enum umf_result_t close_ipc_handle(void *ptr, size_t size) noexcept {
115+
(void)size;
115116
++stat->closeCount;
116117
std::free(ptr);
117118
return UMF_RESULT_SUCCESS;

0 commit comments

Comments
 (0)