Date: Fri, 27 Feb 2004 10:33:09 -0800 (PST) From: John Baldwin <jhb@FreeBSD.org> To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/kern subr_sleepqueue.c subr_turnstile.c subr_witness.c src/sys/sys sleepqueue.h Message-ID: <200402271833.i1RIX9WU025964@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
jhb 2004/02/27 10:33:09 PST
FreeBSD src repository
Modified files:
sys/kern subr_turnstile.c subr_witness.c
Added files:
sys/kern subr_sleepqueue.c
sys/sys sleepqueue.h
Log:
Add an implementation of a generic sleep queue abstraction that is used
to queue threads sleeping on a wait channel similar to how turnstiles are
used to queue threads waiting for a lock. This subsystem will be used as
the backend for sleep/wakeup and condition variables initially. Eventually
it will also be used to replace the ithread-specific iwait thread
inhibitor.
Sleep queues are also not locked by sched_lock, so this splits sched_lock
up a bit further increasing concurrency within the scheduler. Sleep queues
also natively support timeouts on sleeps and interruptible sleeps allowing
for the reduction of a lot of duplicated code between the sleep/wakeup and
condition variable implementations. For more details on the sleep queue
implementation, check the comments in sys/sleepqueue.h and
kern/subr_sleepqueue.c.
Revision Changes Path
1.1 +776 -0 src/sys/kern/subr_sleepqueue.c (new)
1.140 +0 -5 src/sys/kern/subr_turnstile.c
1.170 +1 -0 src/sys/kern/subr_witness.c
1.1 +107 -0 src/sys/sys/sleepqueue.h (new)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200402271833.i1RIX9WU025964>
