diff options
Diffstat (limited to 'pthread_cond_wait.c')
-rw-r--r-- | pthread_cond_wait.c | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/pthread_cond_wait.c b/pthread_cond_wait.c index cfd1ee8..57fc978 100644 --- a/pthread_cond_wait.c +++ b/pthread_cond_wait.c @@ -265,19 +265,21 @@ * Arguments for cond_wait_cleanup, since we can only pass a * single void * to it. */ -typedef struct { - pthread_mutex_t * mutexPtr; +typedef struct +{ + pthread_mutex_t *mutexPtr; pthread_cond_t cv; - int * resultPtr; + int *resultPtr; int signaled; } ptw32_cond_wait_cleanup_args_t; -static void -ptw32_cond_wait_cleanup(void * args) +static void PTW32_CDECL +ptw32_cond_wait_cleanup (void *args) { - ptw32_cond_wait_cleanup_args_t * cleanup_args = (ptw32_cond_wait_cleanup_args_t *) args; + ptw32_cond_wait_cleanup_args_t *cleanup_args = + (ptw32_cond_wait_cleanup_args_t *) args; pthread_cond_t cv = cleanup_args->cv; - int * resultPtr = cleanup_args->resultPtr; + int *resultPtr = cleanup_args->resultPtr; int nSignalsWasLeft; int result; @@ -287,72 +289,71 @@ ptw32_cond_wait_cleanup(void * args) * longer waiting. The waiter is responsible for adjusting waiters * (to)unblock(ed) counts (protected by unblock lock). */ - if ((result = pthread_mutex_lock(&(cv->mtxUnblockLock))) != 0) + if ((result = pthread_mutex_lock (&(cv->mtxUnblockLock))) != 0) { *resultPtr = result; return; } - if ( 0 != (nSignalsWasLeft = cv->nWaitersToUnblock) ) + if (0 != (nSignalsWasLeft = cv->nWaitersToUnblock)) { --(cv->nWaitersToUnblock); } - else if ( INT_MAX/2 == ++(cv->nWaitersGone) ) + else if (INT_MAX / 2 == ++(cv->nWaitersGone)) { - if (sem_wait( &(cv->semBlockLock) ) != 0) - { - *resultPtr = errno; - /* - * This is a fatal error for this CV, - * so we deliberately don't unlock - * cv->mtxUnblockLock before returning. - */ - return; - } + if (sem_wait (&(cv->semBlockLock)) != 0) + { + *resultPtr = errno; + /* + * This is a fatal error for this CV, + * so we deliberately don't unlock + * cv->mtxUnblockLock before returning. + */ + return; + } cv->nWaitersBlocked -= cv->nWaitersGone; - if (sem_post( &(cv->semBlockLock) ) != 0) - { - *resultPtr = errno; - /* - * This is a fatal error for this CV, - * so we deliberately don't unlock - * cv->mtxUnblockLock before returning. - */ - return; - } + if (sem_post (&(cv->semBlockLock)) != 0) + { + *resultPtr = errno; + /* + * This is a fatal error for this CV, + * so we deliberately don't unlock + * cv->mtxUnblockLock before returning. + */ + return; + } cv->nWaitersGone = 0; } - if ((result = pthread_mutex_unlock(&(cv->mtxUnblockLock))) != 0) + if ((result = pthread_mutex_unlock (&(cv->mtxUnblockLock))) != 0) { *resultPtr = result; return; } - if ( 1 == nSignalsWasLeft ) + if (1 == nSignalsWasLeft) { - if (sem_post(&(cv->semBlockLock)) != 0) - { - *resultPtr = errno; - return; - } + if (sem_post (&(cv->semBlockLock)) != 0) + { + *resultPtr = errno; + return; + } } /* * XSH: Upon successful return, the mutex has been locked and is owned * by the calling thread */ - if ((result = pthread_mutex_lock(cleanup_args->mutexPtr)) != 0) + if ((result = pthread_mutex_lock (cleanup_args->mutexPtr)) != 0) { *resultPtr = result; } -} /* ptw32_cond_wait_cleanup */ +} /* ptw32_cond_wait_cleanup */ static INLINE int -ptw32_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime) +ptw32_cond_timedwait (pthread_cond_t * cond, + pthread_mutex_t * mutex, const struct timespec *abstime) { int result = 0; pthread_cond_t cv; @@ -371,7 +372,7 @@ ptw32_cond_timedwait (pthread_cond_t * cond, */ if (*cond == PTHREAD_COND_INITIALIZER) { - result = ptw32_cond_check_need_init(cond); + result = ptw32_cond_check_need_init (cond); } if (result != 0 && result != EBUSY) @@ -381,14 +382,14 @@ ptw32_cond_timedwait (pthread_cond_t * cond, cv = *cond; - if (sem_wait(&(cv->semBlockLock)) != 0) + if (sem_wait (&(cv->semBlockLock)) != 0) { return errno; } ++(cv->nWaitersBlocked); - if (sem_post(&(cv->semBlockLock)) != 0) + if (sem_post (&(cv->semBlockLock)) != 0) { return errno; } @@ -409,12 +410,12 @@ ptw32_cond_timedwait (pthread_cond_t * cond, #ifdef _MSC_VER #pragma inline_depth(0) #endif - pthread_cleanup_push(ptw32_cond_wait_cleanup, (void *) &cleanup_args); + pthread_cleanup_push (ptw32_cond_wait_cleanup, (void *) &cleanup_args); /* * Now we can release 'mutex' and... */ - if ((result = pthread_mutex_unlock(mutex)) == 0) + if ((result = pthread_mutex_unlock (mutex)) == 0) { /* @@ -433,10 +434,10 @@ ptw32_cond_timedwait (pthread_cond_t * cond, * re-lock the mutex and adjust (to)unblock(ed) waiters * counts if we are cancelled, timed out or signalled. */ - if (sem_timedwait(&(cv->semBlockQueue), abstime) != 0) - { - result = errno; - } + if (sem_timedwait (&(cv->semBlockQueue), abstime) != 0) + { + result = errno; + } } /* @@ -447,7 +448,7 @@ ptw32_cond_timedwait (pthread_cond_t * cond, /* * Always cleanup */ - pthread_cleanup_pop(1); + pthread_cleanup_pop (1); #ifdef _MSC_VER #pragma inline_depth() #endif @@ -457,12 +458,11 @@ ptw32_cond_timedwait (pthread_cond_t * cond, */ return result; -} /* ptw32_cond_timedwait */ +} /* ptw32_cond_timedwait */ int -pthread_cond_wait (pthread_cond_t * cond, - pthread_mutex_t * mutex) +pthread_cond_wait (pthread_cond_t * cond, pthread_mutex_t * mutex) /* * ------------------------------------------------------ * DOCPUBLIC @@ -514,15 +514,15 @@ pthread_cond_wait (pthread_cond_t * cond, /* * The NULL abstime arg means INFINITE waiting. */ - return (ptw32_cond_timedwait(cond, mutex, NULL)); + return (ptw32_cond_timedwait (cond, mutex, NULL)); -} /* pthread_cond_wait */ +} /* pthread_cond_wait */ int -pthread_cond_timedwait (pthread_cond_t * cond, - pthread_mutex_t * mutex, - const struct timespec *abstime) +pthread_cond_timedwait (pthread_cond_t * cond, + pthread_mutex_t * mutex, + const struct timespec *abstime) /* * ------------------------------------------------------ * DOCPUBLIC @@ -573,6 +573,6 @@ pthread_cond_timedwait (pthread_cond_t * cond, return EINVAL; } - return (ptw32_cond_timedwait(cond, mutex, abstime)); + return (ptw32_cond_timedwait (cond, mutex, abstime)); -} /* pthread_cond_timedwait */ +} /* pthread_cond_timedwait */ |