From 8860ecf27587bf9971750b70ec1db07f074d1d4f Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 6 Jul 2009 22:02:34 +0000 Subject: [PATCH] 2009-07-06 Joel Sherrill * posix/src/mutexget.c: Restructure to improve ability to do coverage analysis. --- cpukit/ChangeLog | 5 +++++ cpukit/posix/src/mutexget.c | 19 +++++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index aed65d2879..3b9a35d2e4 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2009-07-06 Joel Sherrill + + * posix/src/mutexget.c: Restructure to improve ability to do coverage + analysis. + 2009-07-06 Joel Sherrill * posix/src/psxtransschedparam.c: Restructure to avoid untestable code 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,