summaryrefslogtreecommitdiffstats
path: root/cpukit/posix/src/mutexget.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-07-06 22:02:34 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-07-06 22:02:34 +0000
commit8860ecf27587bf9971750b70ec1db07f074d1d4f (patch)
tree171868fdfbd3f8533593d3326a8cdc312cccfd81 /cpukit/posix/src/mutexget.c
parent2009-07-06 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-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.c19
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,