2424#include "ctl/ctl_internal.h"
2525#include "libumf.h"
2626#include "provider_os_memory_internal.h"
27+ #include "topology.h"
2728#include "utils_assert.h"
2829#include "utils_common.h"
2930#include "utils_concurrency.h"
@@ -556,27 +557,19 @@ static umf_result_t os_initialize(const void *params, void **provider) {
556557
557558 memset (os_provider , 0 , sizeof (* os_provider ));
558559
559- int r = hwloc_topology_init (& os_provider -> topo );
560- if (r ) {
561- LOG_ERR ("HWLOC topology init failed" );
562- ret = UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
563- goto err_free_os_provider ;
564- }
565-
566- r = hwloc_topology_load (os_provider -> topo );
567- if (r ) {
560+ os_provider -> topo = umfGetTopology ();
561+ if (!os_provider -> topo ) {
568562 os_store_last_native_error (UMF_OS_RESULT_ERROR_TOPO_DISCOVERY_FAILED ,
569563 0 );
570564 LOG_ERR ("HWLOC topology discovery failed" );
571565 ret = UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC ;
572- goto err_destroy_hwloc_topology ;
573566 }
574567
575568 os_provider -> fd_offset_map = critnib_new (NULL , NULL );
576569 if (!os_provider -> fd_offset_map ) {
577570 LOG_ERR ("creating file descriptor offset map failed" );
578571 ret = UMF_RESULT_ERROR_OUT_OF_HOST_MEMORY ;
579- goto err_destroy_hwloc_topology ;
572+ goto err_free_os_provider ;
580573 }
581574
582575 ret = translate_params (in_params , os_provider );
@@ -619,8 +612,6 @@ static umf_result_t os_initialize(const void *params, void **provider) {
619612 free_bitmaps (os_provider );
620613err_destroy_critnib :
621614 critnib_delete (os_provider -> fd_offset_map );
622- err_destroy_hwloc_topology :
623- hwloc_topology_destroy (os_provider -> topo );
624615err_free_os_provider :
625616 umf_ba_global_free (os_provider );
626617 return ret ;
@@ -644,7 +635,7 @@ static umf_result_t os_finalize(void *provider) {
644635 if (os_provider -> nodeset_str_buf ) {
645636 umf_ba_global_free (os_provider -> nodeset_str_buf );
646637 }
647- hwloc_topology_destroy ( os_provider -> topo );
638+
648639 umf_ba_global_free (os_provider );
649640 return UMF_RESULT_SUCCESS ;
650641}
0 commit comments