diff options
| author | Mike Makonnen <mtm@FreeBSD.org> | 2004-01-29 09:44:36 +0000 |
|---|---|---|
| committer | Mike Makonnen <mtm@FreeBSD.org> | 2004-01-29 09:44:36 +0000 |
| commit | 98a11db62d676eed7710f4a06635d49092e00164 (patch) | |
| tree | ad5b9b25ae6d1419d325b325932ee757d75c1cd6 /lib | |
| parent | e6e9fb749a5821ecd443d2350b2c510465af2ed4 (diff) | |
Notes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/libthr/thread/thr_kern.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/libthr/thread/thr_kern.c b/lib/libthr/thread/thr_kern.c index 3584246fddd9..1073ffdde289 100644 --- a/lib/libthr/thread/thr_kern.c +++ b/lib/libthr/thread/thr_kern.c @@ -137,6 +137,17 @@ _thread_suspend(pthread_t pthread, const struct timespec *abstime) remaining = *abstime; timespecsub(&remaining, &now); ts = &remaining; + + /* + * If the absolute timeout has already passed set the + * relative timeout to 0 sec. so that sigtimedwait() + * returns immediately. + * NOTE: timespecsub() makes sure the tv_nsec member >= 0. + */ + if (ts->tv_sec < 0) { + ts->tv_sec = 0; + ts->tv_nsec = 0; + } } else ts = NULL; |
