@@ -49,10 +49,6 @@ struct umf_memory_tracker_t {
4949typedef struct tracker_alloc_info_t {
5050 umf_memory_properties_t props ;
5151
52- // TODO remove
53- umf_memory_pool_handle_t pool ;
54- size_t size ;
55-
5652 // number of overlapping memory regions in the next level of map falling
5753 // within the current range
5854 size_t n_children ;
@@ -119,7 +115,8 @@ static tracker_alloc_info_t *get_most_nested_alloc_segment(
119115 continue ;
120116 }
121117
122- utils_atomic_load_acquire_u64 ((uint64_t * )& rvalue -> size , & rsize );
118+ utils_atomic_load_acquire_u64 ((uint64_t * )& rvalue -> props .base_size ,
119+ & rsize );
123120 utils_atomic_load_acquire_size_t (& rvalue -> n_children , & n_children );
124121 if (found && ((uintptr_t )ptr < rkey + rsize ) && n_children ) {
125122 if (level == MAX_LEVELS_OF_ALLOC_SEGMENT_MAP - 1 ) {
@@ -198,15 +195,14 @@ umfMemoryTrackerAddAtLevel(umf_memory_tracker_handle_t hTracker, int level,
198195 return UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
199196 }
200197
201- value -> pool = pool ;
202-
203198 memset (& value -> props , 0 , sizeof (umf_memory_properties_t ));
204199 umfPoolGetMemoryProvider (pool , & value -> props .provider );
205200 value -> props .id = utils_atomic_increment_u64 (& unique_alloc_id );
206201 value -> props .base = (void * )ptr ;
207202 value -> props .base_size = size ;
203+ value -> props .pool = pool ;
204+ value -> props .ptr = (void * )ptr ;
208205
209- value -> size = size ;
210206 value -> n_children = 0 ;
211207#if !defined(NDEBUG ) && defined(UMF_DEVELOPER_MODE )
212208 value -> is_freed = 0 ;
@@ -299,7 +295,8 @@ static umf_result_t umfMemoryTrackerAdd(umf_memory_tracker_handle_t hTracker,
299295 assert (is_freed != 0xDEADBEEF );
300296#endif
301297
302- utils_atomic_load_acquire_u64 ((uint64_t * )& rvalue -> size , & rsize );
298+ utils_atomic_load_acquire_u64 ((uint64_t * )& rvalue -> props .base_size ,
299+ & rsize );
303300
304301 if ((uintptr_t )ptr < rkey + rsize ) {
305302 if (level == MAX_LEVELS_OF_ALLOC_SEGMENT_MAP - 1 ) {
@@ -313,8 +310,8 @@ static umf_result_t umfMemoryTrackerAdd(umf_memory_tracker_handle_t hTracker,
313310 "cannot insert to the tracker value (pool=%p, ptr=%p, "
314311 "size=%zu) "
315312 "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 );
313+ (void * )pool , ptr , size , (void * )rvalue -> props . pool ,
314+ (void * ) rkey , ( size_t )rsize );
318315 return UMF_RESULT_ERROR_INVALID_ARGUMENT ;
319316 }
320317 parent_key = rkey ;
@@ -376,7 +373,8 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
376373
377374 LOG_DEBUG ("memory region removed: tracker=%p, level=%i, pool=%p, ptr=%p, "
378375 "size=%zu" ,
379- (void * )hTracker , level , (void * )value -> pool , ptr , value -> size );
376+ (void * )hTracker , level , (void * )value -> props .pool , ptr ,
377+ value -> props .base_size );
380378
381379 // release the reference to the value got from critnib_remove()
382380 assert (ref_value );
@@ -388,8 +386,9 @@ static umf_result_t umfMemoryTrackerRemove(umf_memory_tracker_handle_t hTracker,
388386 LOG_DEBUG (
389387 "child #%zu removed from memory region: tracker=%p, level=%i, "
390388 "pool=%p, ptr=%p, size=%zu" ,
391- n_children , (void * )hTracker , level - 1 , (void * )parent_value -> pool ,
392- (void * )parent_key , parent_value -> size );
389+ n_children , (void * )hTracker , level - 1 ,
390+ (void * )parent_value -> props .pool , (void * )parent_key ,
391+ parent_value -> props .base_size );
393392
394393 assert (ref_parent_value );
395394 assert (level >= 1 );
@@ -472,18 +471,17 @@ umfMemoryTrackerRemoveIpcSegment(umf_memory_tracker_handle_t hTracker,
472471}
473472
474473umf_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 );
474+ umf_alloc_info_t allocInfo = {NULL , 0 , NULL , NULL };
475+ umf_result_t ret = umfMemoryTrackerGetAllocInfo (ptr , & allocInfo );
477476 if (ret != UMF_RESULT_SUCCESS ) {
478477 return NULL ;
479478 }
480479
481480 return allocInfo .pool ;
482481}
483482
484- umf_result_t
485- umfMemoryTrackerGetAllocInfo (const void * ptr , umf_alloc_info_t * pAllocInfo ,
486- umf_memory_properties_handle_t * props ) {
483+ umf_result_t umfMemoryTrackerGetAllocInfo (const void * ptr ,
484+ umf_alloc_info_t * pAllocInfo ) {
487485 assert (pAllocInfo );
488486
489487 if (ptr == NULL ) {
@@ -539,7 +537,8 @@ umfMemoryTrackerGetAllocInfo(const void *ptr, umf_alloc_info_t *pAllocInfo,
539537 continue ;
540538 }
541539
542- utils_atomic_load_acquire_u64 ((uint64_t * )& rvalue -> size , & rsize );
540+ utils_atomic_load_acquire_u64 ((uint64_t * )& rvalue -> props .base_size ,
541+ & rsize );
543542 utils_atomic_load_acquire_size_t (& rvalue -> n_children , & n_children );
544543 if (found && (uintptr_t )ptr < rkey + rsize ) {
545544 top_most_key = rkey ;
@@ -570,13 +569,10 @@ umfMemoryTrackerGetAllocInfo(const void *ptr, umf_alloc_info_t *pAllocInfo,
570569 }
571570
572571 pAllocInfo -> base = (void * )top_most_key ;
573- pAllocInfo -> baseSize = top_most_value -> size ;
574- pAllocInfo -> pool = top_most_value -> pool ;
572+ pAllocInfo -> baseSize = top_most_value -> props .base_size ;
573+ pAllocInfo -> pool = top_most_value -> props .pool ;
574+ pAllocInfo -> props = & top_most_value -> props ;
575575
576- if (props != NULL ) {
577- * props = & top_most_value -> props ;
578- }
579-
580576 assert (ref_top_most_value );
581577 critnib_release (TRACKER -> alloc_segments_map [ref_level ], ref_top_most_value );
582578
@@ -710,9 +706,9 @@ static umf_result_t trackingAllocationSplit(void *hProvider, void *ptr,
710706 ret = UMF_RESULT_ERROR_INVALID_ARGUMENT ;
711707 goto err ;
712708 }
713- if (value -> size != totalSize ) {
709+ if (value -> props . base_size != totalSize ) {
714710 LOG_ERR ("tracked size=%zu does not match requested size to split: %zu" ,
715- value -> size , totalSize );
711+ value -> props . base_size , totalSize );
716712 ret = UMF_RESULT_ERROR_INVALID_ARGUMENT ;
717713 goto err ;
718714 }
@@ -750,7 +746,8 @@ static umf_result_t trackingAllocationSplit(void *hProvider, void *ptr,
750746 }
751747
752748 // update the size of the first part
753- utils_atomic_store_release_u64 ((uint64_t * )& value -> size , firstSize );
749+ utils_atomic_store_release_u64 ((uint64_t * )& value -> props .base_size ,
750+ firstSize );
754751 critnib_release (provider -> hTracker -> alloc_segments_map [level ], ref_value );
755752
756753 utils_mutex_unlock (& provider -> hTracker -> splitMergeMutex );
@@ -823,12 +820,12 @@ 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 ;
830827 }
831- if (lowValue -> size + highValue -> size != totalSize ) {
828+ if (lowValue -> props . base_size + highValue -> props . base_size != totalSize ) {
832829 LOG_FATAL ("lowValue->size + highValue->size != totalSize" );
833830 ret = UMF_RESULT_ERROR_INVALID_ARGUMENT ;
834831 goto err_fatal ;
@@ -842,7 +839,8 @@ static umf_result_t trackingAllocationMerge(void *hProvider, void *lowPtr,
842839 }
843840
844841 // we only need to update the size of the first part
845- utils_atomic_store_release_u64 ((uint64_t * )& lowValue -> size , totalSize );
842+ utils_atomic_store_release_u64 ((uint64_t * )& lowValue -> props .base_size ,
843+ totalSize );
846844
847845 size_t low_children = lowValue -> n_children ;
848846 size_t high_children = highValue -> n_children ;
@@ -968,12 +966,13 @@ static void check_if_tracker_is_empty(umf_memory_tracker_handle_t hTracker,
968966
969967 while (1 == critnib_find (hTracker -> alloc_segments_map [i ], last_key ,
970968 FIND_G , & rkey , (void * * )& rvalue , & ref_value )) {
971- if (rvalue && ((rvalue -> pool == pool ) || pool == NULL )) {
969+ if (rvalue && ((rvalue -> props . pool == pool ) || pool == NULL )) {
972970 n_items ++ ;
973971 LOG_DEBUG (
974972 "found abandoned allocation in the tracking provider: "
975973 "pool=%p, ptr=%p, size=%zu" ,
976- (void * )rvalue -> pool , (void * )rkey , (size_t )rvalue -> size );
974+ (void * )rvalue -> props .pool , (void * )rkey ,
975+ (size_t )rvalue -> props .base_size );
977976 }
978977
979978 if (ref_value ) {
0 commit comments