From adf9024529bff9fe3633e54b30490d571dafbe4b Mon Sep 17 00:00:00 2001 From: Hugo Santos Date: Tue, 8 May 2007 16:53:13 +0000 Subject: [PATCH] freebsd compat. layer: only init taskqueue_fast if FBSD_FAST_TASKQUEUE requirement is set (since it starts a thread and consumes a couple semaphores). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21073 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../freebsd_network/compat/sys/haiku-module.h | 1 + src/libs/compat/freebsd_network/taskqueue.c | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/libs/compat/freebsd_network/compat/sys/haiku-module.h b/src/libs/compat/freebsd_network/compat/sys/haiku-module.h index 6abf482737..a12376d9dc 100644 --- a/src/libs/compat/freebsd_network/compat/sys/haiku-module.h +++ b/src/libs/compat/freebsd_network/compat/sys/haiku-module.h @@ -89,6 +89,7 @@ extern int __haiku_driver_requirements; enum { FBSD_TASKQUEUES = 1 << 0, + FBSD_FAST_TASKQUEUE = 1 << 1, }; #define HAIKU_DRIVER_REQUIREMENTS(flags) \ diff --git a/src/libs/compat/freebsd_network/taskqueue.c b/src/libs/compat/freebsd_network/taskqueue.c index bd9ee59bb4..d7799e421b 100644 --- a/src/libs/compat/freebsd_network/taskqueue.c +++ b/src/libs/compat/freebsd_network/taskqueue.c @@ -12,6 +12,7 @@ #include #include +#include struct task { int ta_priority; @@ -267,14 +268,16 @@ task_init(struct task *t, int prio, task_handler_t handler, void *context) status_t init_taskqueues() { - taskqueue_fast = taskqueue_create_fast("fast taskq", 0, - taskqueue_thread_enqueue, NULL); - if (taskqueue_fast == NULL) - return B_NO_MEMORY; + if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE)) { + taskqueue_fast = taskqueue_create_fast("fast taskq", 0, + taskqueue_thread_enqueue, NULL); + if (taskqueue_fast == NULL) + return B_NO_MEMORY; - if (taskqueue_start_threads(&taskqueue_fast, 1, 0, "fast taskq") < 0) { - taskqueue_free(taskqueue_fast); - return B_ERROR; + if (taskqueue_start_threads(&taskqueue_fast, 1, 0, "fast taskq") < 0) { + taskqueue_free(taskqueue_fast); + return B_ERROR; + } } return B_OK; @@ -284,5 +287,6 @@ init_taskqueues() void uninit_taskqueues() { - taskqueue_free(taskqueue_fast); + if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE)) + taskqueue_free(taskqueue_fast); }