diff --git a/src/libs/compat/freebsd_network/taskqueue.c b/src/libs/compat/freebsd_network/taskqueue.c index b7e5f8c206..b6cb0e11cd 100644 --- a/src/libs/compat/freebsd_network/taskqueue.c +++ b/src/libs/compat/freebsd_network/taskqueue.c @@ -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); -}