diff options
author | qiao <none@none> | 2007-02-13 14:18:11 -0800 |
---|---|---|
committer | qiao <none@none> | 2007-02-13 14:18:11 -0800 |
commit | a913396d8daab34d2fa497f49ae18d9f3d3a059f (patch) | |
tree | 6893eeca3cc8f450567f222c9b1db33dc6e6d61a /usr/src/uts/common/syscall/poll.c | |
parent | 3125ebfc35130d243e775dc38a6a59be4df0b137 (diff) | |
download | illumos-gate-a913396d8daab34d2fa497f49ae18d9f3d3a059f.tar.gz |
6265036 cv_waituntil_sig() often returns early
Diffstat (limited to 'usr/src/uts/common/syscall/poll.c')
-rw-r--r-- | usr/src/uts/common/syscall/poll.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/usr/src/uts/common/syscall/poll.c b/usr/src/uts/common/syscall/poll.c index 6d3e0eb7ad..7e21cc06cf 100644 --- a/usr/src/uts/common/syscall/poll.c +++ b/usr/src/uts/common/syscall/poll.c @@ -20,7 +20,7 @@ */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -290,7 +290,6 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp) int rval; int i; timespec_t *rqtp = NULL; - int timecheck = 0; int imm_timeout = 0; pollfd_t *pollfdp; pollstate_t *ps; @@ -307,7 +306,6 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp) imm_timeout = 1; else { timespec_t now; - timecheck = timechanged; gethrestime(&now); rqtp = tsp; timespecadd(rqtp, &now); @@ -348,7 +346,7 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp) if (!imm_timeout) { mutex_enter(&t->t_delay_lock); while ((rval = cv_waituntil_sig(&t->t_delay_cv, - &t->t_delay_lock, rqtp, timecheck)) > 0) + &t->t_delay_lock, rqtp)) > 0) continue; mutex_exit(&t->t_delay_lock); if (rval == 0) @@ -546,7 +544,7 @@ poll_common(pollfd_t *fds, nfds_t nfds, timespec_t *tsp, k_sigset_t *ksetp) rval = -1; else rval = cv_waituntil_sig(&pcp->pc_cv, &pcp->pc_lock, - rqtp, timecheck); + rqtp); mutex_exit(&pcp->pc_lock); /* * If we have received a signal or timed out |