Skip to content

Commit 91fea02

Browse files
committed
x
1 parent 96e5b38 commit 91fea02

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

src/memory_props.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,26 @@ umfGetMemoryPropertiesHandle(const void *ptr,
3030

3131
tracker_alloc_info_t *info = NULL;
3232
umf_result_t ret = umfMemoryTrackerGetAllocInfo(ptr, &info);
33-
if (ret != UMF_RESULT_SUCCESS) {
34-
return UMF_RESULT_ERROR_INVALID_ARGUMENT;
33+
34+
if (ret == UMF_RESULT_SUCCESS) {
35+
*props_handle = &info->props;
36+
LOG_DEBUG("umfGetMemoryPropertiesHandle: props_handle=%p, id=%" PRIu64,
37+
*props_handle, (*props_handle)->id);
38+
return UMF_RESULT_SUCCESS;
3539
}
3640

37-
*props_handle = &info->props;
41+
// try to get IPC info
42+
umf_ipc_info_t ipc_info;
43+
ret = umfMemoryTrackerGetIpcInfo(ptr, &ipc_info);
44+
if (ret != UMF_RESULT_SUCCESS) {
45+
LOG_ERR("Failed to get memory properties handle for ptr=%p", ptr);
46+
return ret;
47+
}
3848

39-
LOG_DEBUG("umfGetMemoryPropertiesHandle: props_handle=%p, id=%" PRIu64,
40-
*props_handle, (*props_handle)->id);
49+
*props_handle = ipc_info.props;
50+
LOG_DEBUG(
51+
"umfGetMemoryPropertiesHandle (IPC info): props_handle=%p, id=%" PRIu64,
52+
*props_handle, (*props_handle)->id);
4153

4254
return UMF_RESULT_SUCCESS;
4355
}

src/provider/provider_tracking.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ struct umf_memory_tracker_t {
4747
};
4848

4949
typedef struct tracker_ipc_info_t {
50+
umf_memory_properties_t props;
5051
size_t size;
5152
umf_memory_provider_handle_t provider;
5253
ipc_opened_cache_value_t *ipc_cache_value;
@@ -410,6 +411,14 @@ umfMemoryTrackerAddIpcSegment(umf_memory_tracker_handle_t hTracker,
410411
value->provider = provider;
411412
value->ipc_cache_value = cache_entry;
412413

414+
memset(&value->props, 0, sizeof(umf_memory_properties_t));
415+
value->props.id = utils_atomic_increment_u64(&unique_alloc_id);
416+
value->props.base = (void *)ptr;
417+
value->props.base_size = size;
418+
value->props.provider = provider;
419+
value->props.ptr = (void *)ptr;
420+
value->props.pool = NULL; // TODO
421+
413422
int ret =
414423
critnib_insert(hTracker->ipc_segments_map, (uintptr_t)ptr, value, 0);
415424
if (ret == 0) {
@@ -593,6 +602,8 @@ umf_result_t umfMemoryTrackerGetIpcInfo(const void *ptr,
593602
pIpcInfo->baseSize = rvalue->size;
594603
pIpcInfo->provider = rvalue->provider;
595604

605+
pIpcInfo->props = &rvalue->props;
606+
596607
if (ref_value) {
597608
critnib_release(TRACKER->ipc_segments_map, ref_value);
598609
}

src/provider/provider_tracking.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ umf_result_t umfMemoryTrackerGetAllocInfo(const void *ptr,
5050
tracker_alloc_info_t **info);
5151

5252
typedef struct umf_ipc_info_t {
53+
umf_memory_properties_handle_t props;
54+
5355
void *base;
5456
size_t baseSize;
5557
umf_memory_provider_handle_t provider;

0 commit comments

Comments
 (0)