freebsd_network: Rearrange taskqueue_block functions and add NULL checks.
Should fix #17218.
This commit is contained in:
@@ -434,6 +434,34 @@ taskqueue_cancel_timeout(struct taskqueue *queue,
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
taskqueue_block(struct taskqueue *taskQueue)
|
||||
{
|
||||
if (taskQueue == NULL)
|
||||
return;
|
||||
|
||||
tq_lock(taskQueue);
|
||||
taskQueue->tq_flags |= TQ_FLAGS_BLOCKED;
|
||||
tq_unlock(taskQueue);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
taskqueue_unblock(struct taskqueue *taskQueue)
|
||||
{
|
||||
if (taskQueue == NULL)
|
||||
return;
|
||||
|
||||
tq_lock(taskQueue);
|
||||
taskQueue->tq_flags &= ~TQ_FLAGS_BLOCKED;
|
||||
if (taskQueue->tq_flags & TQ_FLAGS_PENDING) {
|
||||
taskQueue->tq_flags &= ~TQ_FLAGS_PENDING;
|
||||
taskQueue->tq_enqueue(taskQueue->tq_arg);
|
||||
}
|
||||
tq_unlock(taskQueue);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
taskqueue_thread_enqueue(void *context)
|
||||
{
|
||||
@@ -554,25 +582,3 @@ uninit_taskqueues()
|
||||
if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE))
|
||||
taskqueue_free(taskqueue_fast);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
taskqueue_block(struct taskqueue *taskQueue)
|
||||
{
|
||||
tq_lock(taskQueue);
|
||||
taskQueue->tq_flags |= TQ_FLAGS_BLOCKED;
|
||||
tq_unlock(taskQueue);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
taskqueue_unblock(struct taskqueue *taskQueue)
|
||||
{
|
||||
tq_lock(taskQueue);
|
||||
taskQueue->tq_flags &= ~TQ_FLAGS_BLOCKED;
|
||||
if (taskQueue->tq_flags & TQ_FLAGS_PENDING) {
|
||||
taskQueue->tq_flags &= ~TQ_FLAGS_PENDING;
|
||||
taskQueue->tq_enqueue(taskQueue->tq_arg);
|
||||
}
|
||||
tq_unlock(taskQueue);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user