diff options
Diffstat (limited to 'usr/src/uts/common/rpc/clnt_cots.c')
-rw-r--r-- | usr/src/uts/common/rpc/clnt_cots.c | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/usr/src/uts/common/rpc/clnt_cots.c b/usr/src/uts/common/rpc/clnt_cots.c index 2cce0e918d..362abfe01b 100644 --- a/usr/src/uts/common/rpc/clnt_cots.c +++ b/usr/src/uts/common/rpc/clnt_cots.c @@ -792,7 +792,7 @@ clnt_cots_kcallit(CLIENT *h, rpcproc_t procnum, xdrproc_t xdr_args, enum clnt_stat status; struct timeval cwait; bool_t delay_first = FALSE; - clock_t ticks; + clock_t ticks, now; RPCLOG(2, "clnt_cots_kcallit, procnum %u\n", procnum); COTSRCSTAT_INCR(p->cku_stats, rccalls); @@ -1154,7 +1154,7 @@ dispatch_again: p->cku_recv_attempts = 1; #ifdef RPCDEBUG - time_sent = lbolt; + time_sent = ddi_get_lbolt(); #endif /* @@ -1182,7 +1182,7 @@ read_again: if (lwp != NULL) lwp->lwp_nostop++; - oldlbolt = lbolt; + oldlbolt = ddi_get_lbolt(); timout = wait.tv_sec * drv_usectohz(1000000) + drv_usectohz(wait.tv_usec) + oldlbolt; /* @@ -1267,19 +1267,20 @@ read_again: if (status != RPC_SUCCESS) { switch (status) { case RPC_TIMEDOUT: + now = ddi_get_lbolt(); if (interrupted) { COTSRCSTAT_INCR(p->cku_stats, rcintrs); p->cku_err.re_status = RPC_INTR; p->cku_err.re_errno = EINTR; RPCLOG(1, "clnt_cots_kcallit: xid 0x%x", p->cku_xid); - RPCLOG(1, "signal interrupted at %ld", lbolt); + RPCLOG(1, "signal interrupted at %ld", now); RPCLOG(1, ", was sent at %ld\n", time_sent); } else { COTSRCSTAT_INCR(p->cku_stats, rctimeouts); p->cku_err.re_errno = ETIMEDOUT; RPCLOG(1, "clnt_cots_kcallit: timed out at %ld", - lbolt); + now); RPCLOG(1, ", was sent at %ld\n", time_sent); } break; @@ -1715,7 +1716,7 @@ connmgr_cwait(struct cm_xprt *cm_entry, const struct timeval *waitp, */ timout = waitp->tv_sec * drv_usectohz(1000000) + - drv_usectohz(waitp->tv_usec) + lbolt; + drv_usectohz(waitp->tv_usec) + ddi_get_lbolt(); if (nosignal) { while ((cv_stat = cv_timedwait(&cm_entry->x_conn_cv, @@ -1933,7 +1934,7 @@ use_new_conn: bcopy(lru_entry->x_src.buf, srcaddr->buf, srcaddr->len); RPCLOG(2, "connmgr_get: call going out on %p\n", (void *)lru_entry); - lru_entry->x_time = lbolt; + lru_entry->x_time = ddi_get_lbolt(); CONN_HOLD(lru_entry); if ((i > 1) && (prev != &cm_hd)) { @@ -2052,7 +2053,7 @@ start_retry_loop: } else { CONN_HOLD(cm_entry); - cm_entry->x_time = lbolt; + cm_entry->x_time = ddi_get_lbolt(); mutex_exit(&connmgr_lock); RPCLOG(2, "connmgr_get: found old " "transport %p for retry\n", @@ -2250,7 +2251,7 @@ start_retry_loop: cm_entry->x_src.len = cm_entry->x_src.maxlen = srcaddr->len; cm_entry->x_tiptr = tiptr; - cm_entry->x_time = lbolt; + cm_entry->x_time = ddi_get_lbolt(); if (tiptr->tp_info.servtype == T_COTS_ORD) cm_entry->x_ordrel = TRUE; @@ -2281,7 +2282,7 @@ start_retry_loop: */ cm_entry->x_early_disc = FALSE; cm_entry->x_needdis = (cm_entry->x_connected == FALSE); - cm_entry->x_ctime = lbolt; + cm_entry->x_ctime = ddi_get_lbolt(); /* * Notify any threads waiting that the connection attempt is done. @@ -2407,7 +2408,7 @@ connmgr_wrapconnect( * actually timed out. So ensure that before the next * connection attempt we do a disconnect. */ - cm_entry->x_ctime = lbolt; + cm_entry->x_ctime = ddi_get_lbolt(); cm_entry->x_thread = FALSE; cv_broadcast(&cm_entry->x_conn_cv); @@ -2436,7 +2437,7 @@ connmgr_wrapconnect( } bcopy(cm_entry->x_src.buf, srcaddr->buf, srcaddr->len); } - cm_entry->x_time = lbolt; + cm_entry->x_time = ddi_get_lbolt(); mutex_exit(&connmgr_lock); return (cm_entry); } @@ -2462,16 +2463,13 @@ connmgr_dis_and_wait(struct cm_xprt *cm_entry) } if (cm_entry->x_waitdis == TRUE) { - clock_t curlbolt; clock_t timout; RPCLOG(8, "connmgr_dis_and_wait waiting for " "T_DISCON_REQ's ACK for connection %p\n", (void *)cm_entry); - curlbolt = ddi_get_lbolt(); - timout = clnt_cots_min_conntout * - drv_usectohz(1000000) + curlbolt; + timout = clnt_cots_min_conntout * drv_usectohz(1000000); /* * The TPI spec says that the T_DISCON_REQ @@ -2479,8 +2477,8 @@ connmgr_dis_and_wait(struct cm_xprt *cm_entry) * the ACK may never get sent. So don't * block forever. */ - (void) cv_timedwait(&cm_entry->x_dis_cv, - &connmgr_lock, timout); + (void) cv_reltimedwait(&cm_entry->x_dis_cv, + &connmgr_lock, timout, TR_CLOCK_TICK); } /* * If we got the ACK, break. If we didn't, @@ -3711,13 +3709,13 @@ waitforack(calllist_t *e, t_scalar_t ack_prim, const struct timeval *waitp, while (e->call_reply == NULL) { if (waitp != NULL) { timout = waitp->tv_sec * drv_usectohz(MICROSEC) + - drv_usectohz(waitp->tv_usec) + lbolt; + drv_usectohz(waitp->tv_usec); if (nosignal) - cv_stat = cv_timedwait(&e->call_cv, - &clnt_pending_lock, timout); + cv_stat = cv_reltimedwait(&e->call_cv, + &clnt_pending_lock, timout, TR_CLOCK_TICK); else - cv_stat = cv_timedwait_sig(&e->call_cv, - &clnt_pending_lock, timout); + cv_stat = cv_reltimedwait_sig(&e->call_cv, + &clnt_pending_lock, timout, TR_CLOCK_TICK); } else { if (nosignal) cv_wait(&e->call_cv, &clnt_pending_lock); |