summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/io/rsm/rsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/io/rsm/rsm.c')
-rw-r--r--usr/src/uts/common/io/rsm/rsm.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/usr/src/uts/common/io/rsm/rsm.c b/usr/src/uts/common/io/rsm/rsm.c
index 70840c0c60..a9512f8da3 100644
--- a/usr/src/uts/common/io/rsm/rsm.c
+++ b/usr/src/uts/common/io/rsm/rsm.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -3263,7 +3263,6 @@ rsm_unpublish(rsmseg_t *seg, int mode)
rsm_access_entry_t *rsmpi_acl;
int acl_len;
int e;
- clock_t ticks;
adapter_t *adapter;
DBG_DEFINE(category, RSM_KERNEL_AGENT | RSM_EXPORT);
@@ -3377,10 +3376,9 @@ rsm_unpublish(rsmseg_t *seg, int mode)
/* can be fine tuned when we have better numbers */
/* A long term fix would be to send cv_signal */
/* from the intr callback routine */
- (void) drv_getparm(LBOLT, &ticks);
- ticks += drv_usectohz(1000);
- /* currently nobody signals this wait */
- (void) cv_timedwait(&seg->s_cv, &seg->s_lock, ticks);
+ /* currently nobody signals this wait */
+ (void) cv_reltimedwait(&seg->s_cv, &seg->s_lock,
+ drv_usectohz(1000), TR_CLOCK_TICK);
DBG_PRINTF((category, RSM_ERR,
"rsm_unpublish: SEG_IN_USE\n"));
@@ -5294,7 +5292,6 @@ rsmipc_send(rsm_node_id_t dest, rsmipc_request_t *req, rsmipc_reply_t *reply)
int credit_check = 0;
int retry_cnt = 0;
int min_retry_cnt = 10;
- clock_t ticks;
rsm_send_t is;
rsmipc_slot_t *rslot;
adapter_t *adapter;
@@ -5646,10 +5643,8 @@ again:
}
/* wait for a reply signal, a SIGINT, or 5 sec. timeout */
- (void) drv_getparm(LBOLT, &ticks);
- ticks += drv_usectohz(5000000);
- e = cv_timedwait_sig(&rslot->rsmipc_cv, &rslot->rsmipc_lock,
- ticks);
+ e = cv_reltimedwait_sig(&rslot->rsmipc_cv, &rslot->rsmipc_lock,
+ drv_usectohz(5000000), TR_CLOCK_TICK);
if (e < 0) {
/* timed out - retry */
e = RSMERR_TIMEOUT;
@@ -5878,7 +5873,6 @@ rsmipc_send_controlmsg(path_t *path, int msgtype)
int e;
int retry_cnt = 0;
int min_retry_cnt = 10;
- clock_t timeout;
adapter_t *adapter;
rsm_send_t is;
rsm_send_q_handle_t ipc_handle;
@@ -5946,9 +5940,8 @@ rsmipc_send_controlmsg(path_t *path, int msgtype)
"rsmipc_send_controlmsg:rsm_send error=%d", e));
if (++retry_cnt == min_retry_cnt) { /* backoff before retry */
- timeout = ddi_get_lbolt() + drv_usectohz(10000);
- (void) cv_timedwait(&path->sendq_token.sendq_cv,
- &path->mutex, timeout);
+ (void) cv_reltimedwait(&path->sendq_token.sendq_cv,
+ &path->mutex, drv_usectohz(10000), TR_CLOCK_TICK);
retry_cnt = 0;
}
} while (path->state == RSMKA_PATH_ACTIVE);