Author: pjd
Date: Fri Aug 13 19:20:35 2010
New Revision: 211284
URL: http://svn.freebsd.org/changeset/base/211284

Log:
  Simplify taskqueue_drain() by using proved macros.

Modified:
  head/sys/kern/subr_taskqueue.c

Modified: head/sys/kern/subr_taskqueue.c
==============================================================================
--- head/sys/kern/subr_taskqueue.c      Fri Aug 13 18:17:32 2010        
(r211283)
+++ head/sys/kern/subr_taskqueue.c      Fri Aug 13 19:20:35 2010        
(r211284)
@@ -248,23 +248,16 @@ taskqueue_run(struct taskqueue *queue, s
 void
 taskqueue_drain(struct taskqueue *queue, struct task *task)
 {
-       if (queue->tq_spin) {           /* XXX */
-               mtx_lock_spin(&queue->tq_mutex);
-               while (task->ta_pending != 0 ||
-                   (task->ta_running != NULL && task == *task->ta_running)) {
-                       msleep_spin(task, &queue->tq_mutex, "-", 0);
-               }
-               mtx_unlock_spin(&queue->tq_mutex);
-       } else {
+
+       if (!queue->tq_spin)
                WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__);
 
-               mtx_lock(&queue->tq_mutex);
-               while (task->ta_pending != 0 ||
-                   (task->ta_running != NULL && task == *task->ta_running)) {
-                       msleep(task, &queue->tq_mutex, PWAIT, "-", 0);
-               }
-               mtx_unlock(&queue->tq_mutex);
+       TQ_LOCK(queue);
+       while (task->ta_pending != 0 ||
+           (task->ta_running != NULL && task == *task->ta_running)) {
+               TQ_SLEEP(queue, task, &queue->tq_mutex, PWAIT, "-", 0);
        }
+       TQ_UNLOCK(queue);
 }
 
 static void
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to