Print this page
9017 Introduce taskq_empty()
Reviewed by: Bryan Cantrill <bryan@joyent.com>
Reviewed by: Dan McDonald <danmcd@joyent.com>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: Yuri Pankov <yuripv@yuripv.net>
        
*** 24,33 ****
--- 24,34 ----
   */
  /*
   * Copyright 2012 Garrett D'Amore <garrett@damore.org>.  All rights reserved.
   * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
   * Copyright 2017 RackTop Systems.
+  * Copyright 2018, Joyent, Inc.
   */
  
  #include <sys/taskq_impl.h>
  
  #include <sys/class.h>
*** 210,219 ****
--- 211,232 ----
          t->tqent_arg = arg;
          cv_signal(&tq->tq_dispatch_cv);
          mutex_exit(&tq->tq_lock);
  }
  
+ boolean_t
+ taskq_empty(taskq_t *tq)
+ {
+         boolean_t rv;
+ 
+         mutex_enter(&tq->tq_lock);
+         rv = (tq->tq_task.tqent_next == &tq->tq_task) && (tq->tq_active == 0);
+         mutex_exit(&tq->tq_lock);
+ 
+         return (rv);
+ }
+ 
  void
  taskq_wait(taskq_t *tq)
  {
          mutex_enter(&tq->tq_lock);
          while (tq->tq_task.tqent_next != &tq->tq_task || tq->tq_active != 0)