summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornw1 <nw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-12-22 22:43:43 +0000
committernw1 <nw1@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1997-12-22 22:43:43 +0000
commitbc77899d361915864464c3cf400b31750c9492e7 (patch)
tree2239d78f6ba07c7e3a2cf9ee9b3c497b9fd92ead
parentc220c571fe44ee569a702b7b4c09f05ee5e8638d (diff)
downloadATCD-bc77899d361915864464c3cf400b31750c9492e7.tar.gz
Added more modifications to semaphore simulation codes for WinCE.
-rw-r--r--ace/OS.i12
1 files changed, 9 insertions, 3 deletions
diff --git a/ace/OS.i b/ace/OS.i
index 63f67ea5710..36ee0de49e4 100644
--- a/ace/OS.i
+++ b/ace/OS.i
@@ -2245,7 +2245,7 @@ ACE_OS::sema_trywait (ACE_sema_t *s)
s->count_--;
if (s->count_ <= 0)
ACE_OS::event_reset (&s->count_nonzero_);
- return 0;
+ result = 0;
}
ACE_OS::mutex_unlock (&s->lock_);
@@ -2337,6 +2337,7 @@ ACE_OS::sema_wait (ACE_sema_t *s)
}
/* NOTREACHED */
# else /* ACE_USES_WINCE_SEMA_SIMULATION */
+ int result = -1;
while (1)
switch (::WaitForSingleObject (s->count_nonzero_, INFINITE))
{
@@ -2349,10 +2350,12 @@ ACE_OS::sema_wait (ACE_sema_t *s)
s->count_--;
if (s->count_ <= 0)
ACE_OS::event_reset (&s->count_nonzero_);
- return 0;
+ result = 0;
}
ACE_OS::mutex_unlock (&s->lock_);
+ if (result == 0)
+ return 0;
break;
default:
errno = ::GetLastError ();
@@ -2443,6 +2446,7 @@ ACE_OS::sema_wait (ACE_sema_t *s, ACE_Time_Value &tv)
# else /* ACE_USES_WINCE_SEMA_SIMULATION */
ACE_Time_Value start_time = ACE_OS::gettimeofday ();
ACE_Time_Value relative_time = tv;
+ int result = -1;
while (relative_time > ACE_Time_Value::zero)
{
@@ -2457,10 +2461,12 @@ ACE_OS::sema_wait (ACE_sema_t *s, ACE_Time_Value &tv)
s->count_--;
if (s->count_ <= 0)
ACE_OS::event_reset (&s->count_nonzero_);
- return 0;
+ result = 0;
}
ACE_OS::mutex_unlock (&s->lock_);
+ if (result == 0)
+ return 0;
break;
case WAIT_TIMEOUT:
errno = ETIME;