aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/subr_taskqueue.c
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2007-06-05 00:00:57 +0000
committerJeff Roberson <jeff@FreeBSD.org>2007-06-05 00:00:57 +0000
commit982d11f836278f1e95ae1ae398aa4d1d07a19006 (patch)
tree6727b982fa0d93b8aafab313bdc797aee9e314d2 /sys/kern/subr_taskqueue.c
parenta8cdbf449a61645a36419c3ae4f1134fc39d8f8e (diff)
downloadsrc-982d11f836278f1e95ae1ae398aa4d1d07a19006.tar.gz
src-982d11f836278f1e95ae1ae398aa4d1d07a19006.zip
Commit 14/14 of sched_lock decomposition.
- Use thread_lock() rather than sched_lock for per-thread scheduling sychronization. - Use the per-process spinlock rather than the sched_lock for per-process scheduling synchronization. Tested by: kris, current@ Tested on: i386, amd64, ULE, 4BSD, libthr, libkse, PREEMPTION, etc. Discussed with: kris, attilio, kmacy, jhb, julian, bde (small parts each)
Notes
Notes: svn path=/head/; revision=170307
Diffstat (limited to 'sys/kern/subr_taskqueue.c')
-rw-r--r--sys/kern/subr_taskqueue.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/subr_taskqueue.c b/sys/kern/subr_taskqueue.c
index 3ae846d707a5..3e210ccbf23f 100644
--- a/sys/kern/subr_taskqueue.c
+++ b/sys/kern/subr_taskqueue.c
@@ -349,15 +349,15 @@ taskqueue_start_threads(struct taskqueue **tqp, int count, int pri,
} else
tq->tq_pcount++;
}
- mtx_lock_spin(&sched_lock);
for (i = 0; i < count; i++) {
if (tq->tq_pproc[i] == NULL)
continue;
td = FIRST_THREAD_IN_PROC(tq->tq_pproc[i]);
+ thread_lock(td);
sched_prio(td, pri);
sched_add(td, SRQ_BORING);
+ thread_unlock(td);
}
- mtx_unlock_spin(&sched_lock);
return (0);
}