summaryrefslogtreecommitdiff
path: root/rts/posix/OSThreads.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/posix/OSThreads.c')
-rw-r--r--rts/posix/OSThreads.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/rts/posix/OSThreads.c b/rts/posix/OSThreads.c
index 8ac23d4168..04375006d2 100644
--- a/rts/posix/OSThreads.c
+++ b/rts/posix/OSThreads.c
@@ -104,33 +104,31 @@
void
initCondition( Condition* pCond )
{
- pthread_cond_init(pCond, NULL);
- return;
+ CHECK(pthread_cond_init(pCond, NULL) == 0);
}
void
closeCondition( Condition* pCond )
{
- pthread_cond_destroy(pCond);
- return;
+ CHECK(pthread_cond_destroy(pCond) == 0);
}
-bool
+void
broadcastCondition ( Condition* pCond )
{
- return (pthread_cond_broadcast(pCond) == 0);
+ CHECK(pthread_cond_broadcast(pCond) == 0);
}
-bool
+void
signalCondition ( Condition* pCond )
{
- return (pthread_cond_signal(pCond) == 0);
+ CHECK(pthread_cond_signal(pCond) == 0);
}
-bool
+void
waitCondition ( Condition* pCond, Mutex* pMut )
{
- return (pthread_cond_wait(pCond,pMut) == 0);
+ CHECK(pthread_cond_wait(pCond,pMut) == 0);
}
bool
@@ -143,7 +141,15 @@ timedWaitCondition ( Condition* pCond, Mutex* pMut, Time timeout) {
.tv_nsec = TimeToNS(timeout - SecondsToTime(secs))
};
- return pthread_cond_timedwait(pCond,pMut, &t) == 0;
+ int ret = pthread_cond_timedwait(pCond,pMut, &t);
+ switch (ret) {
+ case ETIMEDOUT:
+ return false;
+ case 0:
+ return true;
+ default:
+ barf("pthread_cond_timedwait failed");
+ }
}
void