diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-22 08:22:11 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2017-09-22 08:24:57 +0200 |
commit | bdc468a9c52ff89ff79fab84a1cbc6bfa8c872ca (patch) | |
tree | 16d6291332adc6c68f4f7dc0b093c98ad55a6e41 /cpukit/posix/src | |
parent | psxrdwrv/test.c: Clear iovec to ensure consistent results (diff) | |
download | rtems-bdc468a9c52ff89ff79fab84a1cbc6bfa8c872ca.tar.bz2 |
posix: Allow PTHREAD_PROCESS_SHARED for rwlocks
Close #3153.
Diffstat (limited to 'cpukit/posix/src')
-rw-r--r-- | cpukit/posix/src/prwlockinit.c | 30 |
1 files changed, 7 insertions, 23 deletions
diff --git a/cpukit/posix/src/prwlockinit.c b/cpukit/posix/src/prwlockinit.c index 34ab1aeff1..ffce8149a9 100644 --- a/cpukit/posix/src/prwlockinit.c +++ b/cpukit/posix/src/prwlockinit.c @@ -58,9 +58,7 @@ int pthread_rwlock_init( const pthread_rwlockattr_t *attr ) { - POSIX_RWLock_Control *the_rwlock; - pthread_rwlockattr_t default_attr; - const pthread_rwlockattr_t *the_attr; + POSIX_RWLock_Control *the_rwlock; /* * Error check parameters @@ -68,28 +66,14 @@ int pthread_rwlock_init( if ( !rwlock ) return EINVAL; - /* - * If the user passed in NULL, use the default attributes - */ - if ( attr ) { - the_attr = attr; - } else { - (void) pthread_rwlockattr_init( &default_attr ); - the_attr = &default_attr; - } - - /* - * Now start error checking the attributes that we are going to use - */ - if ( !the_attr->is_initialized ) - return EINVAL; + if ( attr != NULL ) { + if ( !attr->is_initialized ) { + return EINVAL; + } - switch ( the_attr->process_shared ) { - case PTHREAD_PROCESS_PRIVATE: /* only supported values */ - break; - case PTHREAD_PROCESS_SHARED: - default: + if ( !_POSIX_Is_valid_pshared( attr->process_shared ) ) { return EINVAL; + } } the_rwlock = _POSIX_RWLock_Allocate(); |