aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Xu <davidxu@FreeBSD.org>2005-01-06 02:08:34 +0000
committerDavid Xu <davidxu@FreeBSD.org>2005-01-06 02:08:34 +0000
commit476e1d077eca25a5396e7b615fda3a1267fadbac (patch)
treea4b3e47e2ca530a06f5dbab74f9506c217769c76
parent098ca2bda93c701c5331d4e6aace072495b4caaa (diff)
Notes
-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 3c45ddc0af4e..c965a8c806a8 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);