PERFORCE change 44039 for review
John Baldwin
jhb at FreeBSD.org
Wed Dec 17 13:42:34 PST 2003
http://perforce.freebsd.org/chv.cgi?CH=44039
Change 44039 by jhb at jhb_laptop on 2003/12/17 13:41:47
Path I've had on my laptop for a while.
Affected files ...
.. //depot/projects/smpng/sys/kern/subr_taskqueue.c#15 edit
Differences ...
==== //depot/projects/smpng/sys/kern/subr_taskqueue.c#15 (text+ko) ====
@@ -121,12 +121,11 @@
mtx_lock(&taskqueue_queues_mutex);
STAILQ_FOREACH(queue, &taskqueue_queues, tq_link) {
- mtx_lock(&queue->tq_mutex);
if (strcmp(queue->tq_name, name) == 0) {
+ mtx_lock(&queue->tq_mutex);
mtx_unlock(&taskqueue_queues_mutex);
return queue;
}
- mtx_unlock(&queue->tq_mutex);
}
mtx_unlock(&taskqueue_queues_mutex);
return NULL;
@@ -235,28 +234,23 @@
}
static void
-taskqueue_kthread(void *arg)
+taskqueue_thread_loop(void *arg)
{
- struct mtx kthread_mutex;
-
- bzero(&kthread_mutex, sizeof(kthread_mutex));
-
- mtx_init(&kthread_mutex, "taskqueue kthread", NULL, MTX_DEF);
-
- mtx_lock(&kthread_mutex);
-
for (;;) {
- mtx_unlock(&kthread_mutex);
+ mtx_lock(&taskqueue_thread->tq_mutex);
+ while (STAILQ_EMPTY(&taskqueue_thread->tq_queue))
+ msleep(taskqueue_thread, &taskqueue_thread->tq_mutex,
+ PWAIT, "-", 0);
+ mtx_unlock(&taskqueue_thread->tq_mutex);
taskqueue_run(taskqueue_thread);
- mtx_lock(&kthread_mutex);
- msleep(&taskqueue_thread, &kthread_mutex, PWAIT, "tqthr", 0);
}
}
static void
taskqueue_thread_enqueue(void *context)
{
- wakeup(&taskqueue_thread);
+ mtx_assert(&taskqueue_thread->tq_mutex, MA_OWNED);
+ wakeup(taskqueue_thread);
}
TASKQUEUE_DEFINE(swi, taskqueue_swi_enqueue, 0,
@@ -268,7 +262,7 @@
NULL, SWI_TQ_GIANT, 0, &taskqueue_giant_ih));
TASKQUEUE_DEFINE(thread, taskqueue_thread_enqueue, 0,
- kthread_create(taskqueue_kthread, NULL,
+ kthread_create(taskqueue_thread_loop, NULL,
&taskqueue_thread_proc, 0, 0, "taskqueue"));
int
More information about the p4-projects
mailing list