@@ -45,7 +45,7 @@ __ompi_datatype_create_from_args( int32_t* i, ptrdiff_t * a,
45
45
ompi_datatype_t * * d , int32_t type );
46
46
47
47
typedef struct __dt_args {
48
- int32_t ref_count ;
48
+ opal_atomic_int32_t ref_count ;
49
49
int32_t create_type ;
50
50
size_t total_pack_size ;
51
51
int32_t ci ;
@@ -104,7 +104,7 @@ typedef struct __dt_args {
104
104
pArgs->total_pack_size = (4 + (IC) + (DC)) * sizeof(int) + \
105
105
(AC) * sizeof(ptrdiff_t); \
106
106
(PDATA)->args = (void*)pArgs; \
107
- (PDATA)->packed_description = NULL; \
107
+ (PDATA)->packed_description = 0; \
108
108
} while(0)
109
109
110
110
@@ -483,12 +483,12 @@ int ompi_datatype_get_pack_description( ompi_datatype_t* datatype,
483
483
{
484
484
ompi_datatype_args_t * args = (ompi_datatype_args_t * )datatype -> args ;
485
485
int next_index = OMPI_DATATYPE_MAX_PREDEFINED ;
486
- void * packed_description = datatype -> packed_description ;
486
+ void * packed_description = ( void * ) datatype -> packed_description ;
487
487
void * recursive_buffer ;
488
488
489
489
if (NULL == packed_description ) {
490
490
void * _tmp_ptr = NULL ;
491
- if (opal_atomic_compare_exchange_strong_ptr (& datatype -> packed_description , (void * ) & _tmp_ptr , ( void * ) 1 )) {
491
+ if (opal_atomic_compare_exchange_strong_ptr (& datatype -> packed_description , (intptr_t * ) & _tmp_ptr , 1 )) {
492
492
if ( ompi_datatype_is_predefined (datatype ) ) {
493
493
packed_description = malloc (2 * sizeof (int ));
494
494
} else if ( NULL == args ) {
@@ -510,22 +510,22 @@ int ompi_datatype_get_pack_description( ompi_datatype_t* datatype,
510
510
}
511
511
512
512
opal_atomic_wmb ();
513
- datatype -> packed_description = packed_description ;
513
+ datatype -> packed_description = ( intptr_t ) packed_description ;
514
514
} else {
515
515
/* another thread beat us to it */
516
- packed_description = datatype -> packed_description ;
516
+ packed_description = ( void * ) datatype -> packed_description ;
517
517
}
518
518
}
519
519
520
520
if ((void * ) 1 == packed_description ) {
521
521
struct timespec interval = {.tv_sec = 0 , .tv_nsec = 1000 };
522
522
523
523
/* wait until the packed description is updated */
524
- while (( void * ) 1 == datatype -> packed_description ) {
524
+ while (1 == datatype -> packed_description ) {
525
525
nanosleep (& interval , NULL );
526
526
}
527
527
528
- packed_description = datatype -> packed_description ;
528
+ packed_description = ( void * ) datatype -> packed_description ;
529
529
}
530
530
531
531
* packed_buffer = (const void * ) packed_description ;
@@ -534,7 +534,7 @@ int ompi_datatype_get_pack_description( ompi_datatype_t* datatype,
534
534
535
535
size_t ompi_datatype_pack_description_length ( ompi_datatype_t * datatype )
536
536
{
537
- void * packed_description = datatype -> packed_description ;
537
+ void * packed_description = ( void * ) datatype -> packed_description ;
538
538
539
539
if ( ompi_datatype_is_predefined (datatype ) ) {
540
540
return 2 * sizeof (int );
0 commit comments