@@ -33,7 +33,7 @@ __thread int initialized = 0;
33
33
static _ctx_record_t *
34
34
_tlocal_add_ctx_rec (opal_common_ucx_ctx_t * ctx );
35
35
static inline _ctx_record_t *
36
- _tlocal_get_ctx_rec (opal_tsd_key_t tls_key );
36
+ _tlocal_get_ctx_rec (opal_tsd_tracked_key_t tls_key );
37
37
static void _tlocal_ctx_rec_cleanup (_ctx_record_t * ctx_rec );
38
38
static void _tlocal_mem_rec_cleanup (_mem_record_t * mem_rec );
39
39
static void _ctx_rec_destructor (void * arg );
@@ -399,7 +399,8 @@ opal_common_ucx_wpctx_create(opal_common_ucx_wpool_t *wpool, int comm_size,
399
399
goto error ;
400
400
}
401
401
402
- opal_tsd_key_create (& ctx -> tls_key , _ctx_rec_destructor );
402
+ OBJ_CONSTRUCT (& ctx -> tls_key , opal_tsd_tracked_key_t );
403
+ opal_tsd_tracked_key_set_destructor (& ctx -> tls_key , _ctx_rec_destructor );
403
404
404
405
(* ctx_ptr ) = ctx ;
405
406
return ret ;
@@ -414,16 +415,16 @@ opal_common_ucx_wpctx_create(opal_common_ucx_wpool_t *wpool, int comm_size,
414
415
OPAL_DECLSPEC void
415
416
opal_common_ucx_wpctx_release (opal_common_ucx_ctx_t * ctx )
416
417
{
417
- _ctx_record_t * ctx_rec = NULL ;
418
+ _ctx_record_t * ctx_rec = NULL , * next ;
418
419
419
420
/* Application is expected to guarantee that no operation
420
421
* is performed on the context that is being released */
421
422
422
423
/* destroy key so that other threads don't invoke destructors */
423
- opal_tsd_key_delete ( ctx -> tls_key );
424
+ OBJ_DESTRUCT ( & ctx -> tls_key );
424
425
425
426
/* loop through list of records */
426
- OPAL_LIST_FOREACH (ctx_rec , & ctx -> ctx_records , _ctx_record_t ) {
427
+ OPAL_LIST_FOREACH_SAFE (ctx_rec , next , & ctx -> ctx_records , _ctx_record_t ) {
427
428
_tlocal_ctx_rec_cleanup (ctx_rec );
428
429
}
429
430
@@ -493,7 +494,8 @@ int opal_common_ucx_wpmem_create(opal_common_ucx_ctx_t *ctx,
493
494
goto error_rkey_pack ;
494
495
}
495
496
496
- opal_tsd_key_create (& mem -> tls_key , _mem_rec_destructor );
497
+ OBJ_CONSTRUCT (& mem -> tls_key , opal_tsd_tracked_key_t );
498
+ opal_tsd_tracked_key_set_destructor (& mem -> tls_key , _mem_rec_destructor );
497
499
498
500
(* mem_ptr ) = mem ;
499
501
(* my_mem_addr ) = rkey_addr ;
@@ -560,12 +562,12 @@ static int _comm_ucx_wpmem_map(opal_common_ucx_wpool_t *wpool,
560
562
561
563
void opal_common_ucx_wpmem_free (opal_common_ucx_wpmem_t * mem )
562
564
{
563
- _mem_record_t * mem_rec = NULL ;
564
-
565
- opal_tsd_key_delete (mem -> tls_key );
565
+ _mem_record_t * mem_rec = NULL , * next ;
566
566
567
+ OBJ_DESTRUCT (& mem -> tls_key );
568
+
567
569
/* Loop through list of records */
568
- OPAL_LIST_FOREACH (mem_rec , & mem -> mem_records , _mem_record_t ) {
570
+ OPAL_LIST_FOREACH_SAFE (mem_rec , next , & mem -> mem_records , _mem_record_t ) {
569
571
_tlocal_mem_rec_cleanup (mem_rec );
570
572
}
571
573
@@ -581,9 +583,9 @@ void opal_common_ucx_wpmem_free(opal_common_ucx_wpmem_t *mem)
581
583
}
582
584
583
585
static inline _ctx_record_t *
584
- _tlocal_get_ctx_rec (opal_tsd_key_t tls_key ){
586
+ _tlocal_get_ctx_rec (opal_tsd_tracked_key_t tls_key ){
585
587
_ctx_record_t * ctx_rec = NULL ;
586
- int rc = opal_tsd_getspecific ( tls_key , (void * * )& ctx_rec );
588
+ int rc = opal_tsd_tracked_key_get ( & tls_key , (void * * )& ctx_rec );
587
589
588
590
if (OPAL_SUCCESS != rc ) {
589
591
return NULL ;
@@ -657,7 +659,7 @@ _tlocal_add_ctx_rec(opal_common_ucx_ctx_t *ctx)
657
659
opal_mutex_unlock (& ctx -> mutex );
658
660
659
661
/* Add tls reference to record */
660
- rc = opal_tsd_setspecific ( ctx -> tls_key , ctx_rec );
662
+ rc = opal_tsd_tracked_key_set ( & ctx -> tls_key , ctx_rec );
661
663
if (OPAL_SUCCESS != rc ) {
662
664
OBJ_RELEASE (ctx_rec );
663
665
return NULL ;
@@ -743,7 +745,7 @@ static _mem_record_t *_tlocal_add_mem_rec(opal_common_ucx_wpmem_t *mem, _ctx_rec
743
745
744
746
opal_atomic_wmb ();
745
747
746
- rc = opal_tsd_setspecific ( mem -> tls_key , mem_rec );
748
+ rc = opal_tsd_tracked_key_set ( & mem -> tls_key , mem_rec );
747
749
if (OPAL_SUCCESS != rc ) {
748
750
return NULL ;
749
751
}
0 commit comments