summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/sem.c7
-rw-r--r--src/status.c6
2 files changed, 9 insertions, 4 deletions
diff --git a/src/sem.c b/src/sem.c
index a577b08..325eaa4 100644
--- a/src/sem.c
+++ b/src/sem.c
@@ -61,7 +61,7 @@ zix_sem_try_wait(ZixSem* sem)
const kern_return_t r = semaphore_timedwait(sem->sem, zero);
return (r == KERN_SUCCESS) ? ZIX_STATUS_SUCCESS
- : (r == KERN_OPERATION_TIMED_OUT) ? ZIX_STATUS_TIMEOUT
+ : (r == KERN_OPERATION_TIMED_OUT) ? ZIX_STATUS_UNAVAILABLE
: ZIX_STATUS_ERROR;
}
@@ -114,7 +114,7 @@ zix_sem_try_wait(ZixSem* sem)
const DWORD r = WaitForSingleObject(sem->sem, 0);
return (r == WAIT_OBJECT_0) ? ZIX_STATUS_SUCCESS
- : (r == WAIT_TIMEOUT) ? ZIX_STATUS_TIMEOUT
+ : (r == WAIT_TIMEOUT) ? ZIX_STATUS_UNAVAILABLE
: ZIX_STATUS_ERROR;
}
@@ -171,8 +171,7 @@ zix_sem_try_wait(ZixSem* sem)
// Interrupted, try again
}
- return r ? (errno == EAGAIN ? ZIX_STATUS_TIMEOUT : zix_errno_status(errno))
- : ZIX_STATUS_SUCCESS;
+ return r ? zix_errno_status(errno) : ZIX_STATUS_SUCCESS;
}
ZixStatus
diff --git a/src/status.c b/src/status.c
index ed48952..380d370 100644
--- a/src/status.c
+++ b/src/status.c
@@ -31,6 +31,8 @@ zix_strerror(const ZixStatus status)
return "Overflow";
case ZIX_STATUS_NOT_SUPPORTED:
return "Not supported";
+ case ZIX_STATUS_UNAVAILABLE:
+ return "Resource unavailable";
}
return "Unknown error";
}
@@ -41,6 +43,10 @@ zix_errno_status(const int e)
switch (e) {
case 0:
return ZIX_STATUS_SUCCESS;
+#ifdef EAGAIN
+ case EAGAIN:
+ return ZIX_STATUS_UNAVAILABLE;
+#endif
#ifdef EEXIST
case EEXIST:
return ZIX_STATUS_EXISTS;