diff options
author | rpj <rpj> | 2004-05-17 01:38:02 +0000 |
---|---|---|
committer | rpj <rpj> | 2004-05-17 01:38:02 +0000 |
commit | 771465fed0cf50ee2dd790723245fc091699c324 (patch) | |
tree | d8c18d095a33fe7c4564bd90c5f313bb9e4057dd /pthread_rwlock_rdlock.c | |
parent | 8b14911744f58cbe3730703f3fcc41cd969fd0f3 (diff) |
re-indentation, bug fixes, hooks for pre-emptive async cancelation
Diffstat (limited to 'pthread_rwlock_rdlock.c')
-rw-r--r-- | pthread_rwlock_rdlock.c | 94 |
1 files changed, 48 insertions, 46 deletions
diff --git a/pthread_rwlock_rdlock.c b/pthread_rwlock_rdlock.c index 029f6b8..3fbf831 100644 --- a/pthread_rwlock_rdlock.c +++ b/pthread_rwlock_rdlock.c @@ -41,61 +41,63 @@ #include "implement.h" int -pthread_rwlock_rdlock(pthread_rwlock_t *rwlock) +pthread_rwlock_rdlock (pthread_rwlock_t * rwlock) { - int result; - pthread_rwlock_t rwl; + int result; + pthread_rwlock_t rwl; - if (rwlock == NULL || *rwlock == NULL) - { - return EINVAL; - } + if (rwlock == NULL || *rwlock == NULL) + { + return EINVAL; + } - /* - * We do a quick check to see if we need to do more work - * to initialise a static rwlock. We check - * again inside the guarded section of ptw32_rwlock_check_need_init() - * to avoid race conditions. - */ - if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) - { - result = ptw32_rwlock_check_need_init(rwlock); + /* + * We do a quick check to see if we need to do more work + * to initialise a static rwlock. We check + * again inside the guarded section of ptw32_rwlock_check_need_init() + * to avoid race conditions. + */ + if (*rwlock == PTHREAD_RWLOCK_INITIALIZER) + { + result = ptw32_rwlock_check_need_init (rwlock); - if (result != 0 && result != EBUSY) - { - return result; - } - } + if (result != 0 && result != EBUSY) + { + return result; + } + } - rwl = *rwlock; + rwl = *rwlock; - if (rwl->nMagic != PTW32_RWLOCK_MAGIC) - { - return EINVAL; - } + if (rwl->nMagic != PTW32_RWLOCK_MAGIC) + { + return EINVAL; + } - if ((result = pthread_mutex_lock(&(rwl->mtxExclusiveAccess))) != 0) - { - return result; - } + if ((result = pthread_mutex_lock (&(rwl->mtxExclusiveAccess))) != 0) + { + return result; + } - if (++rwl->nSharedAccessCount == INT_MAX) - { - if ((result = pthread_mutex_lock(&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock(&(rwl->mtxExclusiveAccess)); - return result; - } + if (++rwl->nSharedAccessCount == INT_MAX) + { + if ((result = + pthread_mutex_lock (&(rwl->mtxSharedAccessCompleted))) != 0) + { + (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); + return result; + } - rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; - rwl->nCompletedSharedAccessCount = 0; + rwl->nSharedAccessCount -= rwl->nCompletedSharedAccessCount; + rwl->nCompletedSharedAccessCount = 0; - if ((result = pthread_mutex_unlock(&(rwl->mtxSharedAccessCompleted))) != 0) - { - (void) pthread_mutex_unlock(&(rwl->mtxExclusiveAccess)); - return result; - } - } + if ((result = + pthread_mutex_unlock (&(rwl->mtxSharedAccessCompleted))) != 0) + { + (void) pthread_mutex_unlock (&(rwl->mtxExclusiveAccess)); + return result; + } + } - return (pthread_mutex_unlock(&(rwl->mtxExclusiveAccess))); + return (pthread_mutex_unlock (&(rwl->mtxExclusiveAccess))); } |