diff options
author | jeff <jeff@FreeBSD.org> | 2007-06-04 23:50:56 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2007-06-04 23:50:56 +0000 |
commit | ea7c909871b08e0c77c4e21ea7490715d243d562 (patch) | |
tree | a5bf0e5812452f39f88440ebc8ff94193caf026c /sys/kern/kern_rwlock.c | |
parent | 186ae07cb61840670b6b7bc387b690bef2c2e262 (diff) | |
download | FreeBSD-src-ea7c909871b08e0c77c4e21ea7490715d243d562.zip FreeBSD-src-ea7c909871b08e0c77c4e21ea7490715d243d562.tar.gz |
Commit 2/14 of sched_lock decomposition.
- Adapt sleepqueues to the new thread_lock() mechanism.
- Delay assigning the sleep queue spinlock as the thread lock until after
we've checked for signals. It is illegal for a thread to return in
mi_switch() with any lock assigned to td_lock other than the scheduler
locks.
- Change sleepq_catch_signals() to do the switch if necessary to simplify
the callers.
- Simplify timeout handling now that locking a sleeping thread has the
side-effect of locking the sleepqueue. Some previous races are no
longer possible.
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)
Diffstat (limited to 'sys/kern/kern_rwlock.c')
0 files changed, 0 insertions, 0 deletions