Allow taskq_dispatch() to insert work items at the head of the
queue instead of just the tail by passing the TQ_FRONT flag.
#define TASKQ_CPR_SAFE 0x00000002
#define TASKQ_DYNAMIC 0x00000004
#define TASKQ_THREADS_CPU_PCT 0x00000008
+#define TASKQ_DC_BATCH 0x00000010
typedef unsigned long taskqid_t;
typedef void (task_func_t)(void *);
#define TQ_NOQUEUE 0x01000000
#define TQ_NOALLOC 0x02000000
#define TQ_NEW 0x04000000
+#define TQ_FRONT 0x08000000
#define TQ_ACTIVE 0x80000000
typedef struct taskq {
GOTO(out, rc = 0);
spin_lock(&t->t_lock);
- list_add_tail(&t->t_list, &tq->tq_pend_list);
+
+ /* Queue to the head instead of the tail */
+ if (flags & TQ_FRONT)
+ list_add(&t->t_list, &tq->tq_pend_list);
+ else
+ list_add_tail(&t->t_list, &tq->tq_pend_list);
+
t->t_id = rc = tq->tq_next_id;
tq->tq_next_id++;
t->t_func = func;