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
|
void
|
||||||
taskqueue_thread_enqueue(void *context)
|
taskqueue_thread_enqueue(void *context)
|
||||||
{
|
{
|
||||||
@@ -554,25 +582,3 @@ uninit_taskqueues()
|
|||||||
if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE))
|
if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE))
|
||||||
taskqueue_free(taskqueue_fast);
|
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