summaryrefslogtreecommitdiff
path: root/condvar.c
diff options
context:
space:
mode:
authorrpj <rpj>1999-04-03 22:05:39 +0000
committerrpj <rpj>1999-04-03 22:05:39 +0000
commit451bb0670ddd5f5c0606410f2b5f51733119645d (patch)
tree09e56af6c763e0c7874cce25ac700daf9f1e93a0 /condvar.c
parentad0b866780adf56e19114fb67ab2d532b4501425 (diff)
./ChangeLog
Sun Apr 4 11:05:57 1999 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * sched.c (sched.h): Include. * sched.h: New file for POSIX 1b scheduling. * pthread.h: Move opaque structures to implement.h; move sched_* prototypes out and into sched.h. * implement.h: Add opaque structures from pthread.h. * sched.c (sched_yield): New function. * condvar.c (_pthread_sem_*): Rename to sem_*; except for _pthread_sem_timedwait which is an private function. Sat Apr 3 23:28:00 1999 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * Makefile.in (OBJS): Add errno.o. Fri Apr 2 11:08:50 1999 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * implement.h (_pthread_sem_*): Remove prototypes now defined in semaphore.h. * pthread.h (sempahore.h): Include. * semaphore.h: New file for POSIX 1b semaphores. * pthread.h (_pthread_sem_t): Change to sem_t. * semaphore.c (_pthread_sem_*): Change to sem_*; these functions will be exported from the library; set errno on error. - John Bossom <jebossom@cognos.com> (_pthread_sem_timedwait): Moved to private.c. * private.c (_pthread_sem_timedwait): Moved from semaphore.c; set errno on error. * errno.c (_errno): New file. New function. - John Bossom * pthread.h (pthread_t_): Add per-thread errno element. tests/ChangeLog Sun Apr 4 12:04:28 1999 Ross Johnson <rpj@ixobrychus.canberra.edu.au> * tsd1.c (mythread): Change Sleep(0) to sched_yield(). (sched.h): Include. * condvar3.c (mythread): Remove redundant Sleep(). * runtest.bat: Re-organised to make more informative.
Diffstat (limited to 'condvar.c')
-rw-r--r--condvar.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/condvar.c b/condvar.c
index 2643413..714d642 100644
--- a/condvar.c
+++ b/condvar.c
@@ -375,7 +375,7 @@ pthread_cond_init (pthread_cond_t * cond, const pthread_condattr_t * attr)
cv->waiters = 0;
cv->wasBroadcast = FALSE;
- if (_pthread_sem_init (&(cv->sema), 0, 0) != 0)
+ if (sem_init (&(cv->sema), 0, 0) != 0)
{
goto FAIL0;
}
@@ -408,7 +408,7 @@ FAIL2:
(void) pthread_mutex_destroy (&(cv->waitersLock));
FAIL1:
- (void) _pthread_sem_destroy (&(cv->sema));
+ (void) sem_destroy (&(cv->sema));
FAIL0:
DONE:
@@ -468,7 +468,7 @@ pthread_cond_destroy (pthread_cond_t * cond)
return EBUSY;
}
- (void) _pthread_sem_destroy (&(cv->sema));
+ (void) sem_destroy (&(cv->sema));
(void) pthread_mutex_destroy (&(cv->waitersLock));
(void) CloseHandle (cv->waitersDone);
@@ -522,7 +522,7 @@ cond_timedwait (pthread_cond_t * cond,
* We keep the lock held just long enough to increment the count of
* waiters by one (above).
* Note that we can't keep it held across the
- * call to _pthread_sem_wait since that will deadlock other calls
+ * call to sem_wait since that will deadlock other calls
* to pthread_cond_signal
*/
if ((result = pthread_mutex_unlock (mutex)) == 0)
@@ -541,7 +541,10 @@ cond_timedwait (pthread_cond_t * cond,
*/
pthread_cleanup_push (pthread_mutex_lock, mutex);
- result = _pthread_sem_timedwait (&(cv->sema), abstime);
+ if (_pthread_sem_timedwait (&(cv->sema), abstime) == -1)
+ {
+ result = errno;
+ }
pthread_cleanup_pop (0);
}
@@ -772,7 +775,7 @@ pthread_cond_signal (pthread_cond_t * cond)
*/
if (cv->waiters > 0)
{
- result = _pthread_sem_post (&(cv->sema));
+ result = sem_post (&(cv->sema));
}
return (result);
@@ -843,7 +846,7 @@ pthread_cond_broadcast (pthread_cond_t * cond)
*/
for (i = cv->waiters; i > 0 && result == 0; i--)
{
- result = _pthread_sem_post (&(cv->sema));
+ result = sem_post (&(cv->sema));
}
if (cv->waiters > 0 && result == 0)