freebsd_network: Implement taskqueue_drain_all.
Required by FreeBSD 12's iprowifi4965.
This commit is contained in:
@@ -32,6 +32,7 @@ void taskqueue_free(struct taskqueue *tq);
|
|||||||
void taskqueue_drain(struct taskqueue *tq, struct task *task);
|
void taskqueue_drain(struct taskqueue *tq, struct task *task);
|
||||||
void taskqueue_drain_timeout(struct taskqueue *queue,
|
void taskqueue_drain_timeout(struct taskqueue *queue,
|
||||||
struct timeout_task *timeout_task);
|
struct timeout_task *timeout_task);
|
||||||
|
void taskqueue_drain_all(struct taskqueue *tq);
|
||||||
void taskqueue_block(struct taskqueue *queue);
|
void taskqueue_block(struct taskqueue *queue);
|
||||||
void taskqueue_unblock(struct taskqueue *queue);
|
void taskqueue_unblock(struct taskqueue *queue);
|
||||||
int taskqueue_enqueue(struct taskqueue *tq, struct task *task);
|
int taskqueue_enqueue(struct taskqueue *tq, struct task *task);
|
||||||
|
|||||||
@@ -293,6 +293,28 @@ taskqueue_drain_timeout(struct taskqueue *queue,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
taskqueue_task_nop_fn(void* context, int pending)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
taskqueue_drain_all(struct taskqueue *taskQueue)
|
||||||
|
{
|
||||||
|
struct task t_barrier;
|
||||||
|
|
||||||
|
if (taskQueue == NULL) {
|
||||||
|
printf("taskqueue_drain_all called with NULL taskqueue\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
TASK_INIT(&t_barrier, USHRT_MAX, taskqueue_task_nop_fn, &t_barrier);
|
||||||
|
taskqueue_enqueue(taskQueue, &t_barrier);
|
||||||
|
taskqueue_drain(taskQueue, &t_barrier);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
taskqueue_enqueue_locked(struct taskqueue *taskQueue, struct task *task,
|
taskqueue_enqueue_locked(struct taskqueue *taskQueue, struct task *task,
|
||||||
cpu_status status)
|
cpu_status status)
|
||||||
|
|||||||
Reference in New Issue
Block a user