1313 * Copyright (c) 2006 University of Houston. All rights reserved.
1414 * Copyright (c) 2010-2012 Oak Ridge National Labs. All rights reserved.
1515 * Copyright (c) 2013-2018 Cisco Systems, Inc. All rights reserved
16- * Copyright (c) 2013 Los Alamos National Security, LLC. All rights
16+ * Copyright (c) 2013-2018 Los Alamos National Security, LLC. All rights
1717 * reserved.
1818 * Copyright (c) 2015 Research Organization for Information Science
1919 * and Technology (RIST). All rights reserved.
20- * Copyright (c) 2018 Los Alamos National Security, LLC. All rights
20+ * Copyright (c) 2022 Triad National Security, LLC. All rights
2121 * reserved.
2222 * $COPYRIGHT$
2323 *
@@ -140,14 +140,14 @@ do { \
140140 opal_pointer_array_set_item(&ompi_mpi_errcodes, (ERRCODE), &(VAR)); \
141141} while (0)
142142
143- static opal_mutex_t errcode_init_lock = OPAL_MUTEX_STATIC_INIT ;
143+ static opal_mutex_t errcode_lock = OPAL_MUTEX_STATIC_INIT ;
144144
145145int ompi_mpi_errcode_init (void )
146146{
147- opal_mutex_lock (& errcode_init_lock );
147+ opal_mutex_lock (& errcode_lock );
148148 if ( 0 != ompi_mpi_errcode_lastpredefined ) {
149149 /* Already initialized (presumably by an API call before MPI_init */
150- opal_mutex_unlock (& errcode_init_lock );
150+ opal_mutex_unlock (& errcode_lock );
151151 return OMPI_SUCCESS ;
152152 }
153153
@@ -247,7 +247,7 @@ int ompi_mpi_errcode_init (void)
247247 ompi_mpi_errcode_lastused = MPI_ERR_LASTCODE ;
248248 ompi_mpi_errcode_lastpredefined = MPI_ERR_LASTCODE ;
249249
250- opal_mutex_unlock (& errcode_init_lock );
250+ opal_mutex_unlock (& errcode_lock );
251251
252252 ompi_mpi_instance_append_finalize (ompi_mpi_errcode_finalize );
253253
@@ -266,7 +266,7 @@ int ompi_mpi_errcode_finalize (void)
266266 int i ;
267267 ompi_mpi_errcode_t * errc ;
268268
269- opal_mutex_lock (& errcode_init_lock );
269+ opal_mutex_lock (& errcode_lock );
270270 for (i = ompi_mpi_errcode_lastpredefined + 1 ; i <=ompi_mpi_errcode_lastused ; i ++ ) {
271271 /*
272272 * there are some user defined error-codes, which
@@ -359,7 +359,7 @@ int ompi_mpi_errcode_finalize (void)
359359
360360 OBJ_DESTRUCT (& ompi_mpi_errcodes );
361361 ompi_mpi_errcode_lastpredefined = 0 ;
362- opal_mutex_unlock (& errcode_init_lock );
362+ opal_mutex_unlock (& errcode_lock );
363363 return OMPI_SUCCESS ;
364364}
365365
@@ -368,11 +368,14 @@ int ompi_mpi_errcode_add(int errclass )
368368 ompi_mpi_errcode_t * newerrcode ;
369369
370370 newerrcode = OBJ_NEW (ompi_mpi_errcode_t );
371+
372+ opal_mutex_lock (& errcode_lock );
371373 newerrcode -> code = (ompi_mpi_errcode_lastused + 1 );
372374 newerrcode -> cls = errclass ;
373375 opal_pointer_array_set_item (& ompi_mpi_errcodes , newerrcode -> code , newerrcode );
374-
375376 ompi_mpi_errcode_lastused ++ ;
377+ opal_mutex_unlock (& errcode_lock );
378+
376379 return newerrcode -> code ;
377380}
378381
@@ -381,10 +384,13 @@ int ompi_mpi_errclass_add(void)
381384 ompi_mpi_errcode_t * newerrcode ;
382385
383386 newerrcode = OBJ_NEW (ompi_mpi_errcode_t );
387+
388+ opal_mutex_lock (& errcode_lock );
384389 newerrcode -> cls = ( ompi_mpi_errcode_lastused + 1 );
385390 opal_pointer_array_set_item (& ompi_mpi_errcodes , newerrcode -> cls , newerrcode );
386-
387391 ompi_mpi_errcode_lastused ++ ;
392+ opal_mutex_unlock (& errcode_lock );
393+
388394 return newerrcode -> cls ;
389395}
390396
0 commit comments