Print this page
XXXX introduce drv_sectohz
*** 563,573 ****
/* FALLTHRU */
case RDSV3_WQ_THREAD_FLUSHING:
/* already flushing, wait until the flushing is complete */
do {
mutex_exit(&wq->wq_lock);
! delay(drv_usectohz(1000000));
mutex_enter(&wq->wq_lock);
} while (wq->wq_state == RDSV3_WQ_THREAD_FLUSHING);
break;
case RDSV3_WQ_THREAD_EXITING:
mutex_exit(&wq->wq_lock);
--- 563,573 ----
/* FALLTHRU */
case RDSV3_WQ_THREAD_FLUSHING:
/* already flushing, wait until the flushing is complete */
do {
mutex_exit(&wq->wq_lock);
! delay(drv_sectohz(1));
mutex_enter(&wq->wq_lock);
} while (wq->wq_state == RDSV3_WQ_THREAD_FLUSHING);
break;
case RDSV3_WQ_THREAD_EXITING:
mutex_exit(&wq->wq_lock);
*** 600,610 ****
break;
case RDSV3_WQ_THREAD_FLUSHING:
do {
mutex_exit(&wq->wq_lock);
! delay(drv_usectohz(1000000));
mutex_enter(&wq->wq_lock);
} while (wq->wq_state == RDSV3_WQ_THREAD_FLUSHING);
if (wq->wq_state == RDSV3_WQ_THREAD_RUNNING) {
list_insert_tail(&wq->wq_queue, wp);
--- 600,610 ----
break;
case RDSV3_WQ_THREAD_FLUSHING:
do {
mutex_exit(&wq->wq_lock);
! delay(drv_sectohz(1));
mutex_enter(&wq->wq_lock);
} while (wq->wq_state == RDSV3_WQ_THREAD_FLUSHING);
if (wq->wq_state == RDSV3_WQ_THREAD_RUNNING) {
list_insert_tail(&wq->wq_queue, wp);
*** 734,744 ****
mutex_enter(&wq->wq_lock);
wq->wq_state = RDSV3_WQ_THREAD_EXITING;
while (wq->wq_pending > 0) {
mutex_exit(&wq->wq_lock);
! delay(drv_usectohz(1000000));
mutex_enter(&wq->wq_lock);
};
mutex_exit(&wq->wq_lock);
rdsv3_flush_workqueue(wq);
--- 734,744 ----
mutex_enter(&wq->wq_lock);
wq->wq_state = RDSV3_WQ_THREAD_EXITING;
while (wq->wq_pending > 0) {
mutex_exit(&wq->wq_lock);
! delay(drv_sectohz(1));
mutex_enter(&wq->wq_lock);
};
mutex_exit(&wq->wq_lock);
rdsv3_flush_workqueue(wq);
*** 790,800 ****
list_create(&wq->wq_queue, sizeof (struct rdsv3_work_s),
offsetof(struct rdsv3_work_s, work_item));
mutex_init(&wq->wq_lock, NULL, MUTEX_DRIVER, NULL);
wq->wq_state = RDSV3_WQ_THREAD_IDLE;
wq->wq_pending = 0;
! rdsv3_one_sec_in_hz = drv_usectohz(1000000);
RDSV3_DPRINTF2("create_singlethread_workqueue", "Return");
return (wq);
}
--- 790,800 ----
list_create(&wq->wq_queue, sizeof (struct rdsv3_work_s),
offsetof(struct rdsv3_work_s, work_item));
mutex_init(&wq->wq_lock, NULL, MUTEX_DRIVER, NULL);
wq->wq_state = RDSV3_WQ_THREAD_IDLE;
wq->wq_pending = 0;
! rdsv3_one_sec_in_hz = drv_sectohz(1);
RDSV3_DPRINTF2("create_singlethread_workqueue", "Return");
return (wq);
}