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
This commit is contained in:
@@ -89,6 +89,7 @@ extern int __haiku_driver_requirements;
|
|||||||
|
|
||||||
enum {
|
enum {
|
||||||
FBSD_TASKQUEUES = 1 << 0,
|
FBSD_TASKQUEUES = 1 << 0,
|
||||||
|
FBSD_FAST_TASKQUEUE = 1 << 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define HAIKU_DRIVER_REQUIREMENTS(flags) \
|
#define HAIKU_DRIVER_REQUIREMENTS(flags) \
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include <util/list.h>
|
#include <util/list.h>
|
||||||
|
|
||||||
#include <compat/sys/taskqueue.h>
|
#include <compat/sys/taskqueue.h>
|
||||||
|
#include <compat/sys/haiku-module.h>
|
||||||
|
|
||||||
struct task {
|
struct task {
|
||||||
int ta_priority;
|
int ta_priority;
|
||||||
@@ -267,6 +268,7 @@ task_init(struct task *t, int prio, task_handler_t handler, void *context)
|
|||||||
status_t
|
status_t
|
||||||
init_taskqueues()
|
init_taskqueues()
|
||||||
{
|
{
|
||||||
|
if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE)) {
|
||||||
taskqueue_fast = taskqueue_create_fast("fast taskq", 0,
|
taskqueue_fast = taskqueue_create_fast("fast taskq", 0,
|
||||||
taskqueue_thread_enqueue, NULL);
|
taskqueue_thread_enqueue, NULL);
|
||||||
if (taskqueue_fast == NULL)
|
if (taskqueue_fast == NULL)
|
||||||
@@ -276,6 +278,7 @@ init_taskqueues()
|
|||||||
taskqueue_free(taskqueue_fast);
|
taskqueue_free(taskqueue_fast);
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
@@ -284,5 +287,6 @@ init_taskqueues()
|
|||||||
void
|
void
|
||||||
uninit_taskqueues()
|
uninit_taskqueues()
|
||||||
{
|
{
|
||||||
|
if (HAIKU_DRIVER_REQUIRES(FBSD_FAST_TASKQUEUE))
|
||||||
taskqueue_free(taskqueue_fast);
|
taskqueue_free(taskqueue_fast);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user