diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-07-06 22:02:34 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2009-07-06 22:02:34 +0000 |
commit | 8860ecf27587bf9971750b70ec1db07f074d1d4f (patch) | |
tree | 171868fdfbd3f8533593d3326a8cdc312cccfd81 /cpukit/posix/src/mutexget.c | |
parent | 2009-07-06 Joel Sherrill <joel.sherrill@OARcorp.com> (diff) | |
download | rtems-8860ecf27587bf9971750b70ec1db07f074d1d4f.tar.bz2 |
2009-07-06 Joel Sherrill <joel.sherrill@OARcorp.com>
* posix/src/mutexget.c: Restructure to improve ability to do coverage
analysis.
Diffstat (limited to 'cpukit/posix/src/mutexget.c')
-rw-r--r-- | cpukit/posix/src/mutexget.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/cpukit/posix/src/mutexget.c b/cpukit/posix/src/mutexget.c index 5ad33b8c7a..7dec12bb10 100644 --- a/cpukit/posix/src/mutexget.c +++ b/cpukit/posix/src/mutexget.c @@ -34,20 +34,23 @@ * PTHREAD_MUTEX_INITIALIZER without adding overhead. */ -#define ___POSIX_Mutex_Get_support( _id, _location ) \ +#define ___POSIX_Mutex_Get_support_error_check( _id, _location ) \ do { \ - int _status; \ - \ if ( !_id ) { \ *_location = OBJECTS_ERROR; \ return (POSIX_Mutex_Control *) 0; \ } \ + } while (0) + +#define ___POSIX_Mutex_Get_support_auto_initialization( _id, _location ) \ + do { \ + int _status; \ \ if ( *_id == PTHREAD_MUTEX_INITIALIZER ) { \ /* \ * Do an "auto-create" here. \ */ \ - \ + \ _status = pthread_mutex_init( (pthread_mutex_t *)_id, 0 ); \ if ( _status ) { \ *_location = OBJECTS_ERROR; \ @@ -61,7 +64,9 @@ POSIX_Mutex_Control *_POSIX_Mutex_Get ( Objects_Locations *location ) { - ___POSIX_Mutex_Get_support( mutex, location ); + ___POSIX_Mutex_Get_support_error_check( mutex, location ); + + ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); return (POSIX_Mutex_Control *) _Objects_Get( &_POSIX_Mutex_Information, (Objects_Id) *mutex, location ); @@ -73,7 +78,9 @@ POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable ( ISR_Level *level ) { - ___POSIX_Mutex_Get_support( mutex, location ); + ___POSIX_Mutex_Get_support_error_check( mutex, location ); + + ___POSIX_Mutex_Get_support_auto_initialization( mutex, location ); return (POSIX_Mutex_Control *) _Objects_Get_isr_disable( &_POSIX_Mutex_Information, |