freebsd-dev/sys
Jeff Roberson 7b20fb19fb Commit 1/14 of sched_lock decomposition.
- Move all scheduler locking into the schedulers utilizing a technique
   similar to solaris's container locking.
 - A per-process spinlock is now used to protect the queue of threads,
   thread count, suspension count, p_sflags, and other process
   related scheduling fields.
 - The new thread lock is actually a pointer to a spinlock for the
   container that the thread is currently owned by.  The container may
   be a turnstile, sleepqueue, or run queue.
 - thread_lock() is now used to protect access to thread related scheduling
   fields.  thread_unlock() unlocks the lock and thread_set_lock()
   implements the transition from one lock to another.
 - A new "blocked_lock" is used in cases where it is not safe to hold the
   actual thread's lock yet we must prevent access to the thread.
 - sched_throw() and sched_fork_exit() are introduced to allow the
   schedulers to fix-up locking at these points.
 - Add some minor infrastructure for optionally exporting scheduler
   statistics that were invaluable in solving performance problems with
   this patch.  Generally these statistics allow you to differentiate
   between different causes of context switches.

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)
2007-06-04 23:50:30 +00:00
..
amd64 Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
arm Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
boot
bsm Change $P4$ ID strings to P4 ID strings so that they are not auto-expanded 2007-04-17 12:27:08 +00:00
cam Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
cddl Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
coda
compat Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
conf Remove definition of the GCC3 variable. It was introduced in rev. 2007-06-02 21:30:39 +00:00
contrib Reimplement traverse() helper function: 2007-06-04 11:31:46 +00:00
crypto Integrate the Camellia Block Cipher. For more information see RFC 4132 2007-05-09 19:37:02 +00:00
ddb
dev Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
fs Do proper "locking" for missing vmmeters part. 2007-06-04 21:45:18 +00:00
gdb
geom Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
gnu Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation 2007-06-01 14:33:11 +00:00
i4b Tell the user when the setup of the interrupt handler failed and return 2007-04-01 16:52:54 +00:00
i386 Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
ia64 Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
isa Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
kern Commit 1/14 of sched_lock decomposition. 2007-06-04 23:50:30 +00:00
libkern strchr() and strrchr() are already present in the kernel, but with less 2007-04-10 21:42:12 +00:00
modules Fix a breakage with "MODULES_WITH_WORLD=true make buildworld". 2007-06-01 00:23:34 +00:00
net Remove a KASSERT intended to help the developer, the condition is no longer 2007-05-30 19:39:55 +00:00
net80211 - Nuke unnecessary header. 2007-05-05 11:07:52 +00:00
netatalk Reduce network stack oddness: implement .pru_sockaddr and .pru_peeraddr 2007-05-11 10:20:51 +00:00
netatm
netgraph Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
netinet Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
netinet6 cleanup about the reassembly structures and routine: 2007-06-04 06:06:35 +00:00
netipsec In ipsec6_output_tunnel() make sure that the SA contents do not change. 2007-05-29 22:44:24 +00:00
netipx
netkey
netnatm s/destory/destroy/ (except for the code in contrib/). 2007-04-16 12:31:35 +00:00
netncp In ncp_conn_alloc(), a new credential pointer, 'owner', is set up to point 2007-05-27 17:14:33 +00:00
netsmb Replace custom file descriptor array sleep lock constructed using a mutex 2007-04-04 09:11:34 +00:00
nfs NFSv4 client: 2006-11-28 19:33:28 +00:00
nfs4client - Move rusage from being per-process in struct pstats to per-thread in 2007-06-01 01:12:45 +00:00
nfsclient Do proper "locking" for missing vmmeters part. 2007-06-04 21:45:18 +00:00
nfsserver Remove MAC Framework access control check entry points made redundant with 2007-04-22 15:31:22 +00:00
opencrypto
pc98 Despite several examples in the kernel, the third argument of 2007-06-04 18:25:08 +00:00
pccard
pci Where I previously removed calls to kdb_enter(), now remove include of 2007-05-29 11:28:28 +00:00
powerpc Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
rpc
security Clean up audit comments--formatting, spelling, etc. 2007-06-01 21:58:59 +00:00
sparc64 Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
sun4v Rework the PCPU_* (MD) interface: 2007-06-04 21:38:48 +00:00
sys Commit 1/14 of sched_lock decomposition. 2007-06-04 23:50:30 +00:00
tools
ufs Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation 2007-06-01 14:33:11 +00:00
vm Do proper "locking" for missing vmmeters part. 2007-06-04 21:45:18 +00:00
Makefile o Add bsm and security to a list of cscope dirs. 2007-04-14 16:29:15 +00:00