FreeBSD kernel kern code
subr_taskqueue.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/bus.h>
#include <sys/cpuset.h>
#include <sys/interrupt.h>
#include <sys/kernel.h>
#include <sys/kthread.h>
#include <sys/libkern.h>
#include <sys/limits.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mutex.h>
#include <sys/proc.h>
#include <sys/epoch.h>
#include <sys/sched.h>
#include <sys/smp.h>
#include <sys/taskqueue.h>
#include <sys/unistd.h>
#include <machine/stdarg.h>
Include dependency graph for subr_taskqueue.c:

Go to the source code of this file.

Data Structures

struct  taskqueue_busy
 
struct  taskqueue
 

Macros

#define TQ_FLAGS_ACTIVE   (1 << 0)
 
#define TQ_FLAGS_BLOCKED   (1 << 1)
 
#define TQ_FLAGS_UNLOCKED_ENQUEUE   (1 << 2)
 
#define DT_CALLOUT_ARMED   (1 << 0)
 
#define DT_DRAIN_IN_PROGRESS   (1 << 1)
 
#define TQ_LOCK(tq)
 
#define TQ_ASSERT_LOCKED(tq)   mtx_assert(&(tq)->tq_mutex, MA_OWNED)
 
#define TQ_UNLOCK(tq)
 
#define TQ_ASSERT_UNLOCKED(tq)   mtx_assert(&(tq)->tq_mutex, MA_NOTOWNED)
 

Functions

 __FBSDID ("$FreeBSD$")
 
static MALLOC_DEFINE (M_TASKQUEUE, "taskqueue", "Task Queues")
 
static void taskqueue_fast_enqueue (void *)
 
static void taskqueue_swi_enqueue (void *)
 
static void taskqueue_swi_giant_enqueue (void *)
 
void _timeout_task_init (struct taskqueue *queue, struct timeout_task *timeout_task, int priority, task_fn_t func, void *context)
 
static __inline int TQ_SLEEP (struct taskqueue *tq, void *p, const char *wm)
 
static struct taskqueue_taskqueue_create (const char *name, int mflags, taskqueue_enqueue_fn enqueue, void *context, int mtxflags, const char *mtxname __unused)
 
struct taskqueuetaskqueue_create (const char *name, int mflags, taskqueue_enqueue_fn enqueue, void *context)
 
void taskqueue_set_callback (struct taskqueue *queue, enum taskqueue_callback_type cb_type, taskqueue_callback_fn callback, void *context)
 
static void taskqueue_terminate (struct thread **pp, struct taskqueue *tq)
 
void taskqueue_free (struct taskqueue *queue)
 
static int taskqueue_enqueue_locked (struct taskqueue *queue, struct task *task)
 
int taskqueue_enqueue (struct taskqueue *queue, struct task *task)
 
static void taskqueue_timeout_func (void *arg)
 
int taskqueue_enqueue_timeout_sbt (struct taskqueue *queue, struct timeout_task *timeout_task, sbintime_t sbt, sbintime_t pr, int flags)
 
int taskqueue_enqueue_timeout (struct taskqueue *queue, struct timeout_task *ttask, int ticks)
 
static void taskqueue_task_nop_fn (void *context, int pending)
 
static int taskqueue_drain_tq_queue (struct taskqueue *queue)
 
static int taskqueue_drain_tq_active (struct taskqueue *queue)
 
void taskqueue_block (struct taskqueue *queue)
 
void taskqueue_unblock (struct taskqueue *queue)
 
static void taskqueue_run_locked (struct taskqueue *queue)
 
void taskqueue_run (struct taskqueue *queue)
 
static int task_is_running (struct taskqueue *queue, struct task *task)
 
int taskqueue_poll_is_busy (struct taskqueue *queue, struct task *task)
 
static int taskqueue_cancel_locked (struct taskqueue *queue, struct task *task, u_int *pendp)
 
int taskqueue_cancel (struct taskqueue *queue, struct task *task, u_int *pendp)
 
int taskqueue_cancel_timeout (struct taskqueue *queue, struct timeout_task *timeout_task, u_int *pendp)
 
void taskqueue_drain (struct taskqueue *queue, struct task *task)
 
void taskqueue_drain_all (struct taskqueue *queue)
 
void taskqueue_drain_timeout (struct taskqueue *queue, struct timeout_task *timeout_task)
 
void taskqueue_quiesce (struct taskqueue *queue)
 
static void taskqueue_swi_run (void *dummy)
 
static void taskqueue_swi_giant_run (void *dummy)
 
static int _taskqueue_start_threads (struct taskqueue **tqp, int count, int pri, cpuset_t *mask, struct proc *p, const char *name, va_list ap)
 
int taskqueue_start_threads (struct taskqueue **tqp, int count, int pri, const char *name,...)
 
int taskqueue_start_threads_in_proc (struct taskqueue **tqp, int count, int pri, struct proc *proc, const char *name,...)
 
int taskqueue_start_threads_cpuset (struct taskqueue **tqp, int count, int pri, cpuset_t *mask, const char *name,...)
 
static void taskqueue_run_callback (struct taskqueue *tq, enum taskqueue_callback_type cb_type)
 
void taskqueue_thread_loop (void *arg)
 
void taskqueue_thread_enqueue (void *context)
 
 TASKQUEUE_DEFINE (swi, taskqueue_swi_enqueue, NULL, swi_add(NULL, "task queue", taskqueue_swi_run, NULL, SWI_TQ, INTR_MPSAFE, &taskqueue_ih))
 
 TASKQUEUE_DEFINE (swi_giant, taskqueue_swi_giant_enqueue, NULL, swi_add(NULL, "Giant taskq", taskqueue_swi_giant_run, NULL, SWI_TQ_GIANT, 0, &taskqueue_giant_ih))
 
 TASKQUEUE_DEFINE_THREAD (thread)
 
struct taskqueuetaskqueue_create_fast (const char *name, int mflags, taskqueue_enqueue_fn enqueue, void *context)
 
static void taskqueue_fast_run (void *dummy)
 
 TASKQUEUE_FAST_DEFINE (fast, taskqueue_fast_enqueue, NULL, swi_add(NULL, "fast taskq", taskqueue_fast_run, NULL, SWI_TQ_FAST, INTR_MPSAFE, &taskqueue_fast_ih))
 
int taskqueue_member (struct taskqueue *queue, struct thread *td)
 

Variables

static void * taskqueue_giant_ih
 
static void * taskqueue_ih
 
static void * taskqueue_fast_ih
 

Macro Definition Documentation

◆ DT_CALLOUT_ARMED

#define DT_CALLOUT_ARMED   (1 << 0)

Definition at line 87 of file subr_taskqueue.c.

◆ DT_DRAIN_IN_PROGRESS

#define DT_DRAIN_IN_PROGRESS   (1 << 1)

Definition at line 88 of file subr_taskqueue.c.

◆ TQ_ASSERT_LOCKED

#define TQ_ASSERT_LOCKED (   tq)    mtx_assert(&(tq)->tq_mutex, MA_OWNED)

Definition at line 97 of file subr_taskqueue.c.

◆ TQ_ASSERT_UNLOCKED

#define TQ_ASSERT_UNLOCKED (   tq)    mtx_assert(&(tq)->tq_mutex, MA_NOTOWNED)

Definition at line 106 of file subr_taskqueue.c.

◆ TQ_FLAGS_ACTIVE

#define TQ_FLAGS_ACTIVE   (1 << 0)

Definition at line 83 of file subr_taskqueue.c.

◆ TQ_FLAGS_BLOCKED

#define TQ_FLAGS_BLOCKED   (1 << 1)

Definition at line 84 of file subr_taskqueue.c.

◆ TQ_FLAGS_UNLOCKED_ENQUEUE

#define TQ_FLAGS_UNLOCKED_ENQUEUE   (1 << 2)

Definition at line 85 of file subr_taskqueue.c.

◆ TQ_LOCK

#define TQ_LOCK (   tq)
Value:
do { \
if ((tq)->tq_spin) \
mtx_lock_spin(&(tq)->tq_mutex); \
else \
mtx_lock(&(tq)->tq_mutex); \
} while (0)

Definition at line 90 of file subr_taskqueue.c.

◆ TQ_UNLOCK

#define TQ_UNLOCK (   tq)
Value:
do { \
if ((tq)->tq_spin) \
mtx_unlock_spin(&(tq)->tq_mutex); \
else \
mtx_unlock(&(tq)->tq_mutex); \
} while (0)

Definition at line 99 of file subr_taskqueue.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ _taskqueue_create()

static struct taskqueue * _taskqueue_create ( const char *  name,
int  mflags,
taskqueue_enqueue_fn  enqueue,
void *  context,
int  mtxflags,
const char *mtxname  __unused 
)
static

Definition at line 129 of file subr_taskqueue.c.

References free(), malloc(), name, snprintf(), taskqueue_fast_enqueue(), taskqueue_swi_enqueue(), taskqueue_swi_giant_enqueue(), taskqueue_thread_enqueue(), TQ_FLAGS_ACTIVE, and TQ_FLAGS_UNLOCKED_ENQUEUE.

Referenced by taskqueue_create(), and taskqueue_create_fast().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _taskqueue_start_threads()

static int _taskqueue_start_threads ( struct taskqueue **  tqp,
int  count,
int  pri,
cpuset_t *  mask,
struct proc *  p,
const char *  name,
va_list  ap 
)
static

Definition at line 665 of file subr_taskqueue.c.

References count, cpuset_setthread(), free(), kthread_add(), malloc(), mask, name, printf(), sched_add(), sched_prio(), taskqueue_thread_loop(), and vsnprintf().

Referenced by taskqueue_start_threads(), taskqueue_start_threads_cpuset(), and taskqueue_start_threads_in_proc().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ _timeout_task_init()

void _timeout_task_init ( struct taskqueue queue,
struct timeout_task *  timeout_task,
int  priority,
task_fn_t  func,
void *  context 
)

Definition at line 109 of file subr_taskqueue.c.

References priority.

◆ MALLOC_DEFINE()

static MALLOC_DEFINE ( M_TASKQUEUE  ,
"taskqueue"  ,
"Task Queues"   
)
static

◆ task_is_running()

static int task_is_running ( struct taskqueue queue,
struct task *  task 
)
static

Definition at line 497 of file subr_taskqueue.c.

References taskqueue_busy::tb_running, and TQ_ASSERT_LOCKED.

Referenced by taskqueue_cancel_locked(), taskqueue_drain(), and taskqueue_poll_is_busy().

Here is the caller graph for this function:

◆ taskqueue_block()

void taskqueue_block ( struct taskqueue queue)

Definition at line 425 of file subr_taskqueue.c.

References TQ_FLAGS_BLOCKED, TQ_LOCK, and TQ_UNLOCK.

◆ taskqueue_cancel()

int taskqueue_cancel ( struct taskqueue queue,
struct task *  task,
u_int *  pendp 
)

Definition at line 543 of file subr_taskqueue.c.

References taskqueue_cancel_locked(), TQ_LOCK, and TQ_UNLOCK.

Here is the call graph for this function:

◆ taskqueue_cancel_locked()

static int taskqueue_cancel_locked ( struct taskqueue queue,
struct task *  task,
u_int *  pendp 
)
static

Definition at line 527 of file subr_taskqueue.c.

References task_is_running().

Referenced by taskqueue_cancel(), and taskqueue_cancel_timeout().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_cancel_timeout()

int taskqueue_cancel_timeout ( struct taskqueue queue,
struct timeout_task *  timeout_task,
u_int *  pendp 
)

Definition at line 555 of file subr_taskqueue.c.

References DT_CALLOUT_ARMED, taskqueue_cancel_locked(), TQ_LOCK, and TQ_UNLOCK.

Referenced by clock_unregister().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_create()

struct taskqueue * taskqueue_create ( const char *  name,
int  mflags,
taskqueue_enqueue_fn  enqueue,
void *  context 
)

Definition at line 166 of file subr_taskqueue.c.

References _taskqueue_create(), and name.

Referenced by firmware_modevent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_create_fast()

struct taskqueue * taskqueue_create_fast ( const char *  name,
int  mflags,
taskqueue_enqueue_fn  enqueue,
void *  context 
)

Definition at line 842 of file subr_taskqueue.c.

References _taskqueue_create(), and name.

Here is the call graph for this function:

◆ TASKQUEUE_DEFINE() [1/2]

TASKQUEUE_DEFINE ( swi  ,
taskqueue_swi_enqueue  ,
NULL  ,
swi_add(NULL, "task queue", taskqueue_swi_run, NULL, SWI_TQ, INTR_MPSAFE, &taskqueue_ih  
)

◆ TASKQUEUE_DEFINE() [2/2]

TASKQUEUE_DEFINE ( swi_giant  ,
taskqueue_swi_giant_enqueue  ,
NULL  ,
swi_add(NULL, "Giant taskq", taskqueue_swi_giant_run, NULL, SWI_TQ_GIANT, 0, &taskqueue_giant_ih  
)

◆ TASKQUEUE_DEFINE_THREAD()

TASKQUEUE_DEFINE_THREAD ( thread  )

◆ taskqueue_drain()

void taskqueue_drain ( struct taskqueue queue,
struct task *  task 
)

Definition at line 576 of file subr_taskqueue.c.

References task_is_running(), TQ_LOCK, TQ_SLEEP(), and TQ_UNLOCK.

Referenced by aio_proc_rundown(), firmware_modevent(), taskqueue_drain_timeout(), and thread_reap_barrier().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_drain_all()

void taskqueue_drain_all ( struct taskqueue queue)

Definition at line 589 of file subr_taskqueue.c.

References taskqueue_drain_tq_active(), taskqueue_drain_tq_queue(), TQ_LOCK, and TQ_UNLOCK.

Here is the call graph for this function:

◆ taskqueue_drain_timeout()

void taskqueue_drain_timeout ( struct taskqueue queue,
struct timeout_task *  timeout_task 
)

Definition at line 602 of file subr_taskqueue.c.

References DT_DRAIN_IN_PROGRESS, taskqueue_drain(), TQ_LOCK, and TQ_UNLOCK.

Referenced by clock_unregister().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_drain_tq_active()

static int taskqueue_drain_tq_active ( struct taskqueue queue)
static

Definition at line 396 of file subr_taskqueue.c.

References taskqueue_busy::tb_running, taskqueue_busy::tb_seq, TQ_FLAGS_ACTIVE, TQ_SLEEP(), and wakeup_one().

Referenced by taskqueue_drain_all(), and taskqueue_quiesce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_drain_tq_queue()

static int taskqueue_drain_tq_queue ( struct taskqueue queue)
static

Definition at line 361 of file subr_taskqueue.c.

References taskqueue_task_nop_fn(), and TQ_SLEEP().

Referenced by taskqueue_drain_all(), and taskqueue_quiesce().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_enqueue()

◆ taskqueue_enqueue_locked()

static int taskqueue_enqueue_locked ( struct taskqueue queue,
struct task *  task 
)
static

Definition at line 220 of file subr_taskqueue.c.

References TQ_FLAGS_BLOCKED, TQ_FLAGS_UNLOCKED_ENQUEUE, and TQ_UNLOCK.

Referenced by taskqueue_enqueue(), taskqueue_enqueue_timeout_sbt(), and taskqueue_timeout_func().

Here is the caller graph for this function:

◆ taskqueue_enqueue_timeout()

int taskqueue_enqueue_timeout ( struct taskqueue queue,
struct timeout_task *  ttask,
int  ticks 
)

Definition at line 342 of file subr_taskqueue.c.

References taskqueue_enqueue_timeout_sbt(), tick_sbt, and ticks.

Referenced by deferred_unmount_enqueue(), and uipc_detach().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_enqueue_timeout_sbt()

int taskqueue_enqueue_timeout_sbt ( struct taskqueue queue,
struct timeout_task *  timeout_task,
sbintime_t  sbt,
sbintime_t  pr,
int  flags 
)

Definition at line 304 of file subr_taskqueue.c.

References DT_CALLOUT_ARMED, DT_DRAIN_IN_PROGRESS, flags, pr, res, taskqueue_enqueue_locked(), taskqueue_timeout_func(), TQ_LOCK, and TQ_UNLOCK.

Referenced by resettodr(), and taskqueue_enqueue_timeout().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TASKQUEUE_FAST_DEFINE()

TASKQUEUE_FAST_DEFINE ( fast  ,
taskqueue_fast_enqueue  ,
NULL  ,
swi_add(NULL, "fast taskq", taskqueue_fast_run, NULL, SWI_TQ_FAST, INTR_MPSAFE, &taskqueue_fast_ih  
)

◆ taskqueue_fast_enqueue()

static void taskqueue_fast_enqueue ( void *  context)
static

Definition at line 852 of file subr_taskqueue.c.

References swi_sched(), and taskqueue_fast_ih.

Referenced by _taskqueue_create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_fast_run()

static void taskqueue_fast_run ( void *  dummy)
static

Definition at line 858 of file subr_taskqueue.c.

References taskqueue_run().

Here is the call graph for this function:

◆ taskqueue_free()

void taskqueue_free ( struct taskqueue queue)

Definition at line 205 of file subr_taskqueue.c.

References free(), taskqueue_terminate(), and TQ_LOCK.

Referenced by firmware_modevent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_member()

int taskqueue_member ( struct taskqueue queue,
struct thread *  td 
)

Definition at line 868 of file subr_taskqueue.c.

Referenced by dounmount(), unp_remove_dead_ref(), and unp_restore_undead_ref().

Here is the caller graph for this function:

◆ taskqueue_poll_is_busy()

int taskqueue_poll_is_busy ( struct taskqueue queue,
struct task *  task 
)

Definition at line 515 of file subr_taskqueue.c.

References task_is_running(), TQ_LOCK, and TQ_UNLOCK.

Here is the call graph for this function:

◆ taskqueue_quiesce()

void taskqueue_quiesce ( struct taskqueue queue)

Definition at line 627 of file subr_taskqueue.c.

References taskqueue_drain_tq_active(), taskqueue_drain_tq_queue(), TQ_LOCK, and TQ_UNLOCK.

Referenced by kqueue_drain_schedtask().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_run()

void taskqueue_run ( struct taskqueue queue)

Definition at line 488 of file subr_taskqueue.c.

References taskqueue_run_locked(), TQ_LOCK, and TQ_UNLOCK.

Referenced by taskqueue_fast_run(), taskqueue_swi_giant_run(), and taskqueue_swi_run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_run_callback()

static void taskqueue_run_callback ( struct taskqueue tq,
enum taskqueue_callback_type  cb_type 
)
inlinestatic

Definition at line 772 of file subr_taskqueue.c.

References TQ_ASSERT_UNLOCKED.

Referenced by taskqueue_thread_loop().

Here is the caller graph for this function:

◆ taskqueue_run_locked()

static void taskqueue_run_locked ( struct taskqueue queue)
static

Definition at line 445 of file subr_taskqueue.c.

References taskqueue_busy::tb_running, taskqueue_busy::tb_seq, TQ_ASSERT_LOCKED, TQ_LOCK, TQ_UNLOCK, and wakeup().

Referenced by taskqueue_run(), and taskqueue_thread_loop().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_set_callback()

void taskqueue_set_callback ( struct taskqueue queue,
enum taskqueue_callback_type  cb_type,
taskqueue_callback_fn  callback,
void *  context 
)

Definition at line 175 of file subr_taskqueue.c.

References callback.

◆ taskqueue_start_threads()

int taskqueue_start_threads ( struct taskqueue **  tqp,
int  count,
int  pri,
const char *  name,
  ... 
)

Definition at line 733 of file subr_taskqueue.c.

References _taskqueue_start_threads(), count, and name.

Referenced by firmware_modevent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_start_threads_cpuset()

int taskqueue_start_threads_cpuset ( struct taskqueue **  tqp,
int  count,
int  pri,
cpuset_t *  mask,
const char *  name,
  ... 
)

Definition at line 759 of file subr_taskqueue.c.

References _taskqueue_start_threads(), count, mask, and name.

Here is the call graph for this function:

◆ taskqueue_start_threads_in_proc()

int taskqueue_start_threads_in_proc ( struct taskqueue **  tqp,
int  count,
int  pri,
struct proc *  proc,
const char *  name,
  ... 
)

Definition at line 746 of file subr_taskqueue.c.

References _taskqueue_start_threads(), count, and name.

Here is the call graph for this function:

◆ taskqueue_swi_enqueue()

static void taskqueue_swi_enqueue ( void *  context)
static

Definition at line 641 of file subr_taskqueue.c.

References swi_sched(), and taskqueue_ih.

Referenced by _taskqueue_create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_swi_giant_enqueue()

static void taskqueue_swi_giant_enqueue ( void *  context)
static

Definition at line 653 of file subr_taskqueue.c.

References swi_sched(), and taskqueue_giant_ih.

Referenced by _taskqueue_create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_swi_giant_run()

static void taskqueue_swi_giant_run ( void *  dummy)
static

Definition at line 659 of file subr_taskqueue.c.

References taskqueue_run().

Here is the call graph for this function:

◆ taskqueue_swi_run()

static void taskqueue_swi_run ( void *  dummy)
static

Definition at line 647 of file subr_taskqueue.c.

References taskqueue_run().

Here is the call graph for this function:

◆ taskqueue_task_nop_fn()

static void taskqueue_task_nop_fn ( void *  context,
int  pending 
)
static

Definition at line 351 of file subr_taskqueue.c.

Referenced by taskqueue_drain_tq_queue().

Here is the caller graph for this function:

◆ taskqueue_terminate()

static void taskqueue_terminate ( struct thread **  pp,
struct taskqueue tq 
)
static

Definition at line 195 of file subr_taskqueue.c.

References TQ_SLEEP(), and wakeup().

Referenced by taskqueue_free().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_thread_enqueue()

void taskqueue_thread_enqueue ( void *  context)

Definition at line 822 of file subr_taskqueue.c.

References wakeup_any().

Referenced by _taskqueue_create(), firmware_modevent(), and taskqgroup_cpu_create().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_thread_loop()

void taskqueue_thread_loop ( void *  arg)

Definition at line 784 of file subr_taskqueue.c.

References kthread_exit(), taskqueue_run_callback(), taskqueue_run_locked(), TQ_FLAGS_ACTIVE, TQ_LOCK, TQ_SLEEP(), TQ_UNLOCK, and wakeup_one().

Referenced by _taskqueue_start_threads().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_timeout_func()

static void taskqueue_timeout_func ( void *  arg)
static

Definition at line 289 of file subr_taskqueue.c.

References DT_CALLOUT_ARMED, and taskqueue_enqueue_locked().

Referenced by taskqueue_enqueue_timeout_sbt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ taskqueue_unblock()

void taskqueue_unblock ( struct taskqueue queue)

Definition at line 434 of file subr_taskqueue.c.

References TQ_LOCK, and TQ_UNLOCK.

◆ TQ_SLEEP()

static __inline int TQ_SLEEP ( struct taskqueue tq,
void *  p,
const char *  wm 
)
static

Definition at line 121 of file subr_taskqueue.c.

References mtx.

Referenced by taskqueue_drain(), taskqueue_drain_tq_active(), taskqueue_drain_tq_queue(), taskqueue_terminate(), and taskqueue_thread_loop().

Here is the caller graph for this function:

Variable Documentation

◆ taskqueue_fast_ih

void* taskqueue_fast_ih
static

Definition at line 849 of file subr_taskqueue.c.

Referenced by taskqueue_fast_enqueue().

◆ taskqueue_giant_ih

void* taskqueue_giant_ih
static

Definition at line 53 of file subr_taskqueue.c.

Referenced by taskqueue_swi_giant_enqueue().

◆ taskqueue_ih

void* taskqueue_ih
static

Definition at line 54 of file subr_taskqueue.c.

Referenced by taskqueue_swi_enqueue().