From 37f2076a7d39bc522e280ae61e2a124a2113f055 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 27 Dec 2020 09:42:55 +0100 Subject: [PATCH] lwp: Simplify lwpSigWait() interface lwpSigWait() was designed to resemble sigwait(). It doesn't anymore. Drop the awkward argument, and use the return value instead. Signed-off-by: Markus Armbruster --- include/lwp.h | 2 +- src/lib/empthread/lwp.c | 6 +++--- src/lib/lwp/sig.c | 11 +++++------ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/include/lwp.h b/include/lwp.h index e115ad70..23033f3b 100644 --- a/include/lwp.h +++ b/include/lwp.h @@ -64,7 +64,7 @@ void lwpYield(void); int lwpSleepFd(int fd, int flags, struct timeval *timeout); int lwpSleepUntil(time_t until); void lwpWakeup(struct lwpProc *); -int lwpSigWait(int *sig); +int lwpSigWait(void); void *lwpGetUD(struct lwpProc *); void lwpSetUD(struct lwpProc *, char *ud); int lwpSetPriority(int prio); diff --git a/src/lib/empthread/lwp.c b/src/lib/empthread/lwp.c index d26eae7c..3737ac0d 100644 --- a/src/lib/empthread/lwp.c +++ b/src/lib/empthread/lwp.c @@ -117,13 +117,13 @@ empth_sleep(time_t until) int empth_wait_for_signal(void) { - int sig, err; + int sig; time_t now; ef_make_stale(); for (;;) { - err = lwpSigWait(&sig); - if (CANT_HAPPEN(err)) { + sig = lwpSigWait(); + if (CANT_HAPPEN(sig < 0)) { time(&now); lwpSleepUntil(now + 60); continue; diff --git a/src/lib/lwp/sig.c b/src/lib/lwp/sig.c index 40991ce0..50f7f5ab 100644 --- a/src/lib/lwp/sig.c +++ b/src/lib/lwp/sig.c @@ -138,17 +138,17 @@ lwpGetSig(void) /* * Wait until one of the signals passed to lwpInitSigWait() arrives. - * Assign its number to *@sig and return 0. - * If another thread is already waiting for signals, return EBUSY + * Return its signal number. + * If another thread is already waiting for signals, return -1 * without waiting. */ int -lwpSigWait(int *sig) +lwpSigWait(void) { int res; if (LwpSigWaiter) - return EBUSY; + return -1; for (;;) { res = lwpGetSig(); if (res > 0) @@ -157,8 +157,7 @@ lwpSigWait(int *sig) LwpSigWaiter = LwpCurrent; lwpReschedule(); } - *sig = res; - return 0; + return res; } /*