@@ -50,7 +50,6 @@ typedef struct tracker_alloc_info_t {
5050 umf_memory_properties_t props ;
5151
5252 // TODO remove
53- umf_memory_pool_handle_t pool ;
5453 size_t size ;
5554
5655 // number of overlapping memory regions in the next level of map falling
@@ -198,13 +197,13 @@ umfMemoryTrackerAddAtLevel(umf_memory_tracker_handle_t hTracker, int level,
198197 return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
199198 }
200199
201- value -> pool = pool ;
202-
203200 memset (& value -> props , 0 , sizeof (umf_memory_properties_t ));
204201 umfPoolGetMemoryProvider (pool , & value -> props .provider );
205202 value -> props .id = utils_atomic_increment_u64 (& unique_alloc_id );
206203 value -> props .base = (void * )ptr ;
207204 value -> props .base_size = size ;
205+ value -> props .pool = pool ;
206+ value -> props .ptr = (void * )ptr ;
208207
209208 value -> size = size ;
210209 value -> n_children = 0 ;
@@ -313,8 +312,8 @@ static umf_result_t umfMemoryTrackerAdd(umf_memory_tracker_handle_t hTracker,
313312 "cannot insert to the tracker value (pool=%p, ptr=%p, "
314313 "size=%zu) "
315314 "that exceeds the parent value (pool=%p, ptr=%p, size=%zu)" ,
316- (void * )pool , ptr , size , (void * )rvalue -> pool , ( void * ) rkey ,
317- (size_t )rsize );
315+ (void * )pool , ptr , size , (void * )rvalue -> props . pool ,
316+ (void * ) rkey , ( size_t )rsize );
318317 return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
319318 }
320319 parent_key = rkey ;
@@ -376,7 +375,8 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
376375
377376 LOG_DEBUG ("memory region removed: tracker=%p, level=%i, pool=%p, ptr=%p, "
378377 "size=%zu" ,
379- (void * )hTracker , level , (void * )value -> pool , ptr , value -> size );
378+ (void * )hTracker , level , (void * )value -> props .pool , ptr ,
379+ value -> size );
380380
381381 // release the reference to the value got from critnib_remove()
382382 assert (ref_value );
@@ -388,8 +388,9 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
388388 LOG_DEBUG (
389389 "child #%zu removed from memory region: tracker=%p, level=%i, "
390390 "pool=%p, ptr=%p, size=%zu" ,
391- n_children , (void * )hTracker , level - 1 , (void * )parent_value -> pool ,
392- (void * )parent_key , parent_value -> size );
391+ n_children , (void * )hTracker , level - 1 ,
392+ (void * )parent_value -> props .pool , (void * )parent_key ,
393+ parent_value -> size );
393394
394395 assert (ref_parent_value );
395396 assert (level >= 1 );
@@ -472,18 +473,17 @@ umfMemoryTrackerRemoveIpcSegment(umf_memory_tracker_handle_t hTracker,
472473}
473474
474475umf_memory_pool_handle_t umfMemoryTrackerGetPool (const void * ptr ) {
475- umf_alloc_info_t allocInfo = {NULL , 0 , NULL };
476- umf_result_t ret = umfMemoryTrackerGetAllocInfo (ptr , & allocInfo , NULL );
476+ umf_alloc_info_t allocInfo = {NULL , 0 , NULL , NULL };
477+ umf_result_t ret = umfMemoryTrackerGetAllocInfo (ptr , & allocInfo );
477478 if (ret != UMF_RESULT_SUCCESS ) {
478479 return NULL ;
479480 }
480481
481482 return allocInfo .pool ;
482483}
483484
484- umf_result_t
485- umfMemoryTrackerGetAllocInfo (const void * ptr , umf_alloc_info_t * pAllocInfo ,
486- umf_memory_properties_handle_t * props ) {
485+ umf_result_t umfMemoryTrackerGetAllocInfo (const void * ptr ,
486+ umf_alloc_info_t * pAllocInfo ) {
487487 assert (pAllocInfo );
488488
489489 if (ptr == NULL ) {
@@ -571,12 +571,9 @@ umfMemoryTrackerGetAllocInfo(const void *ptr, umf_alloc_info_t *pAllocInfo,
571571
572572 pAllocInfo -> base = (void * )top_most_key ;
573573 pAllocInfo -> baseSize = top_most_value -> size ;
574- pAllocInfo -> pool = top_most_value -> pool ;
574+ pAllocInfo -> pool = top_most_value -> props .pool ;
575+ pAllocInfo -> props = & top_most_value -> props ;
575576
576- if (props != NULL ) {
577- * props = & top_most_value -> props ;
578- }
579-
580577 assert (ref_top_most_value );
581578 critnib_release (TRACKER -> alloc_segments_map [ref_level ], ref_top_most_value );
582579
@@ -823,7 +820,7 @@ static umf_result_t trackingAllocationMerge(void *hProvider, void *lowPtr,
823820 ret = UMF_RESULT_ERROR_INVALID_ARGUMENT ;
824821 goto err_fatal ;
825822 }
826- if (lowValue -> pool != highValue -> pool ) {
823+ if (lowValue -> props . pool != highValue -> props . pool ) {
827824 LOG_FATAL ("pool mismatch" );
828825 ret = UMF_RESULT_ERROR_INVALID_ARGUMENT ;
829826 goto err_fatal ;
@@ -968,12 +965,13 @@ static void check_if_tracker_is_empty(umf_memory_tracker_handle_t hTracker,
968965
969966 while (1 == critnib_find (hTracker -> alloc_segments_map [i ], last_key ,
970967 FIND_G , & rkey , (void * * )& rvalue , & ref_value )) {
971- if (rvalue && ((rvalue -> pool == pool ) || pool == NULL )) {
968+ if (rvalue && ((rvalue -> props . pool == pool ) || pool == NULL )) {
972969 n_items ++ ;
973970 LOG_DEBUG (
974971 "found abandoned allocation in the tracking provider: "
975972 "pool=%p, ptr=%p, size=%zu" ,
976- (void * )rvalue -> pool , (void * )rkey , (size_t )rvalue -> size );
973+ (void * )rvalue -> props .pool , (void * )rkey ,
974+ (size_t )rvalue -> size );
977975 }
978976
979977 if (ref_value ) {
0 commit comments