summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/kern/kern_umtx.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/kern/kern_umtx.c b/sys/kern/kern_umtx.c
index 3c45ddc..c965a8c 100644
--- a/sys/kern/kern_umtx.c
+++ b/sys/kern/kern_umtx.c
@@ -282,8 +282,10 @@ umtxq_sleep(struct thread *td, struct umtx_key *key, int priority,
const char *wmesg, int timo)
{
int chain = umtxq_hash(key);
-
- return (msleep(td, umtxq_mtx(chain), priority, wmesg, timo));
+ int error = msleep(td, umtxq_mtx(chain), priority, wmesg, timo);
+ if (error == EWOULDBLOCK)
+ error = ETIMEDOUT;
+ return (error);
}
static int
@@ -538,12 +540,12 @@ do_lock(struct thread *td, struct umtx *umtx, long id,
timespecsub(&ts1, &ts2);
TIMESPEC_TO_TIMEVAL(&tv, &ts1);
if (tv.tv_sec < 0) {
- error = EWOULDBLOCK;
+ error = ETIMEDOUT;
break;
}
timo = tvtohz(&tv);
error = _do_lock(td, umtx, id, timo);
- if (error != EWOULDBLOCK)
+ if (error != ETIMEDOUT)
break;
}
}
@@ -641,7 +643,7 @@ do_wait(struct thread *td, struct umtx *umtx, long id, struct timespec *abstime)
TIMESPEC_TO_TIMEVAL(&tv, &ts1);
umtxq_lock(&uq.uq_key);
if (tv.tv_sec < 0) {
- error = EWOULDBLOCK;
+ error = ETIMEDOUT;
break;
}
timo = tvtohz(&tv);
OpenPOWER on IntegriCloud