diff options
Diffstat (limited to 'cpukit/posix/src/mutexget.c')
-rw-r--r-- | cpukit/posix/src/mutexget.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/cpukit/posix/src/mutexget.c b/cpukit/posix/src/mutexget.c index f683137655..41a5495fa2 100644 --- a/cpukit/posix/src/mutexget.c +++ b/cpukit/posix/src/mutexget.c @@ -19,6 +19,7 @@ #endif #include <rtems/posix/muteximpl.h> +#include <rtems/score/apimutex.h> static bool _POSIX_Mutex_Check_id_and_auto_init( pthread_mutex_t *mutex, @@ -34,7 +35,15 @@ static bool _POSIX_Mutex_Check_id_and_auto_init( if ( *mutex == PTHREAD_MUTEX_INITIALIZER ) { int eno; - eno = pthread_mutex_init( mutex, NULL ); + _Once_Lock(); + + if ( *mutex == PTHREAD_MUTEX_INITIALIZER ) { + eno = pthread_mutex_init( mutex, NULL ); + } else { + eno = 0; + } + + _Once_Unlock(); if ( eno != 0 ) { *location = OBJECTS_ERROR; |