summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2022-09-01 23:14:03 -0400
committerDavid Robillard <d@drobilla.net>2022-09-01 23:59:38 -0400
commit7cd6a5437c263a4e2b64bafdf780d60ce51f941f (patch)
treea87d20b772ddc0e864cc2768a999af2d8f92cf13 /src
parent16a8597f4d52de948291825698b7d2458998a510 (diff)
downloadzix-7cd6a5437c263a4e2b64bafdf780d60ce51f941f.tar.gz
zix-7cd6a5437c263a4e2b64bafdf780d60ce51f941f.tar.bz2
zix-7cd6a5437c263a4e2b64bafdf780d60ce51f941f.zip
Simplify thread and semaphore status codes
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;