@@ -463,6 +463,11 @@ static umf_result_t umfDefaultTrimMemory(void *provider,
463463    return  UMF_RESULT_ERROR_NOT_SUPPORTED ;
464464}
465465
466+ static  umf_result_t  umfDefaultPostInitialize (void  * pool ) {
467+     (void )pool ;
468+     return  UMF_RESULT_ERROR_NOT_SUPPORTED ;
469+ }
470+ 
466471// logical sum (OR) of all umf_pool_create_flags_t flags 
467472static  const  umf_pool_create_flags_t  UMF_POOL_CREATE_FLAG_ALL  = 
468473    UMF_POOL_CREATE_FLAG_OWN_PROVIDER  | UMF_POOL_CREATE_FLAG_DISABLE_TRACKING ;
@@ -495,7 +500,6 @@ static umf_result_t umfPoolCreateInternal(const umf_memory_pool_ops_t *ops,
495500    }
496501
497502    umf_result_t  ret  =  UMF_RESULT_SUCCESS ;
498- 
499503    umf_memory_pool_ops_t  compatible_ops ;
500504    if  (ops -> version  !=  UMF_POOL_OPS_VERSION_CURRENT ) {
501505        LOG_WARN ("Memory Pool ops version \"%d\" is different than the current " 
@@ -504,8 +508,8 @@ static umf_result_t umfPoolCreateInternal(const umf_memory_pool_ops_t *ops,
504508
505509        // Create a new ops compatible structure with the current version 
506510        memset (& compatible_ops , 0 , sizeof (compatible_ops ));
507-         if  (UMF_MINOR_VERSION ( ops -> version )  ==   0 ) {
508-             LOG_INFO ("Detected 1.0 version of Memory Pool ops, " 
511+         if  (ops -> version   <   UMF_MAKE_VERSION ( 1 ,  1 ) ) {
512+             LOG_INFO ("Detected 1.0 version or below  of Memory Pool ops, " 
509513                     "upgrading to current version" );
510514            memcpy (& compatible_ops , ops ,
511515                   offsetof(umf_memory_pool_ops_t , ext_trim_memory ));
@@ -547,13 +551,17 @@ static umf_result_t umfPoolCreateInternal(const umf_memory_pool_ops_t *ops,
547551        pool -> ops .ext_trim_memory  =  umfDefaultTrimMemory ;
548552    }
549553
554+     if  (NULL  ==  pool -> ops .ext_post_initialize ) {
555+         pool -> ops .ext_post_initialize  =  umfDefaultPostInitialize ;
556+     }
557+ 
550558    if  (NULL  ==  utils_mutex_init (& pool -> lock )) {
551559        LOG_ERR ("Failed to initialize mutex for pool" );
552560        ret  =  UMF_RESULT_ERROR_UNKNOWN ;
553561        goto err_lock_init ;
554562    }
555563
556-     ret  =  ops -> initialize (pool -> provider , params , & pool -> pool_priv );
564+     ret  =  pool -> ops . initialize (pool -> provider , params , & pool -> pool_priv );
557565    if  (ret  !=  UMF_RESULT_SUCCESS ) {
558566        goto err_pool_init ;
559567    }
@@ -579,6 +587,12 @@ static umf_result_t umfPoolCreateInternal(const umf_memory_pool_ops_t *ops,
579587        }
580588    }
581589
590+     ret  =  pool -> ops .ext_post_initialize (pool -> pool_priv );
591+     if  (ret  !=  UMF_RESULT_SUCCESS  &&  ret  !=  UMF_RESULT_ERROR_NOT_SUPPORTED ) {
592+         LOG_ERR ("Failed to post-initialize pool" );
593+         goto err_pool_init ;
594+     }
595+ 
582596    * hPool  =  pool ;
583597    pools_by_name_add (pool );
584598
0 commit comments