summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/inet/squeue.c
diff options
context:
space:
mode:
authorRafael Vanoni <rafael.vanoni@sun.com>2009-11-13 01:32:32 -0800
committerRafael Vanoni <rafael.vanoni@sun.com>2009-11-13 01:32:32 -0800
commitd3d50737e566cade9a08d73d2af95105ac7cd960 (patch)
tree399b76a3f6bf107e2ff506d8f9c3333654b29fc7 /usr/src/uts/common/inet/squeue.c
parent1eff5f7761619411b3c31280fcd96cefc32968b7 (diff)
downloadillumos-joyent-d3d50737e566cade9a08d73d2af95105ac7cd960.tar.gz
PSARC/2009/396 Tickless Kernel Architecture / lbolt decoupling
6860030 tickless clock requires a clock() decoupled lbolt / lbolt64 Portions contributed by Chad Mynhier <cmynhier@gmail.com>
Diffstat (limited to 'usr/src/uts/common/inet/squeue.c')
-rw-r--r--usr/src/uts/common/inet/squeue.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/usr/src/uts/common/inet/squeue.c b/usr/src/uts/common/inet/squeue.c
index db11ef79ae..a58b445158 100644
--- a/usr/src/uts/common/inet/squeue.c
+++ b/usr/src/uts/common/inet/squeue.c
@@ -311,7 +311,7 @@ squeue_worker_wakeup(squeue_t *sqp)
if (sqp->sq_wait == 0) {
ASSERT(tid == 0);
ASSERT(!(sqp->sq_state & SQS_TMO_PROG));
- sqp->sq_awaken = lbolt;
+ sqp->sq_awaken = ddi_get_lbolt();
cv_signal(&sqp->sq_worker_cv);
mutex_exit(&sqp->sq_lock);
return;
@@ -325,7 +325,8 @@ squeue_worker_wakeup(squeue_t *sqp)
/*
* Waiting for an enter() to process mblk(s).
*/
- clock_t waited = lbolt - sqp->sq_awaken;
+ clock_t now = ddi_get_lbolt();
+ clock_t waited = now - sqp->sq_awaken;
if (TICK_TO_MSEC(waited) >= sqp->sq_wait) {
/*
@@ -333,7 +334,7 @@ squeue_worker_wakeup(squeue_t *sqp)
* waiting for work, so schedule it.
*/
sqp->sq_tid = 0;
- sqp->sq_awaken = lbolt;
+ sqp->sq_awaken = now;
cv_signal(&sqp->sq_worker_cv);
mutex_exit(&sqp->sq_lock);
(void) untimeout(tid);
@@ -691,7 +692,7 @@ squeue_fire(void *arg)
sqp->sq_state &= ~SQS_TMO_PROG;
if (!(state & SQS_PROC)) {
- sqp->sq_awaken = lbolt;
+ sqp->sq_awaken = ddi_get_lbolt();
cv_signal(&sqp->sq_worker_cv);
}
mutex_exit(&sqp->sq_lock);
@@ -842,7 +843,7 @@ again:
goto again;
} else {
did_wakeup = B_TRUE;
- sqp->sq_awaken = lbolt;
+ sqp->sq_awaken = ddi_get_lbolt();
cv_signal(&sqp->sq_worker_cv);
}
}
@@ -1113,7 +1114,7 @@ poll_again:
*/
}
- sqp->sq_awaken = lbolt;
+ sqp->sq_awaken = ddi_get_lbolt();
/*
* Put the SQS_PROC_HELD on so the worker
* thread can distinguish where its called from. We
@@ -1464,7 +1465,7 @@ squeue_synch_exit(squeue_t *sqp, conn_t *connp)
* worker thread right away when there are outstanding
* requests.
*/
- sqp->sq_awaken = lbolt;
+ sqp->sq_awaken = ddi_get_lbolt();
cv_signal(&sqp->sq_worker_cv);
mutex_exit(&sqp->sq_lock);
}