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/io/devpoll.c | |
| parent | 3125ebfc35130d243e775dc38a6a59be4df0b137 (diff) | |
| download | illumos-gate-a913396d8daab34d2fa497f49ae18d9f3d3a059f.tar.gz | |
6265036 cv_waituntil_sig() often returns early
Diffstat (limited to 'usr/src/uts/common/io/devpoll.c')
| -rw-r--r-- | usr/src/uts/common/io/devpoll.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/usr/src/uts/common/io/devpoll.c b/usr/src/uts/common/io/devpoll.c index ec7abf195e..36f1e08e89 100644 --- a/usr/src/uts/common/io/devpoll.c +++ b/usr/src/uts/common/io/devpoll.c @@ -20,7 +20,7 @@ * CDDL HEADER END */ /* - * Copyright 2005 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -689,7 +689,6 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) timestruc_t now; timestruc_t rqtime; timestruc_t *rqtp = NULL; - int timecheck = 0; minor_t minor; dp_entry_t *dpep; pollcache_t *pcp; @@ -698,7 +697,6 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) if (cmd == DP_POLL) { /* do this now, before we sleep on DP_WRITER_PRESENT below */ - timecheck = timechanged; gethrestime(&now); } minor = getminor(dev); @@ -761,7 +759,7 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) return (0); mutex_enter(&curthread->t_delay_lock); while ((rval = cv_waituntil_sig(&curthread->t_delay_cv, - &curthread->t_delay_lock, rqtp, timecheck)) > 0) + &curthread->t_delay_lock, rqtp)) > 0) continue; mutex_exit(&curthread->t_delay_lock); return ((rval == 0)? EINTR : 0); @@ -816,7 +814,7 @@ dpioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *credp, int *rvalp) if (time_out == 0) /* immediate timeout */ break; rval = cv_waituntil_sig(&pcp->pc_cv, &pcp->pc_lock, - rqtp, timecheck); + rqtp); /* * If we were awakened by a signal or timeout * then break the loop, else poll again. |
