From 8a04586048304a6bac0429cfcc05edf015d07be4 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 e115ad704..23033f3b6 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 d26eae7c8..3737ac0df 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 40991ce00..50f7f5ab0 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; } /* -- 2.43.0