Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: [nathanw_sa] syssrc/sys
Module Name: syssrc
Committed By: thorpej
Date: Tue Nov 27 04:35:33 UTC 2001
Modified Files:
syssrc/sys/kern [nathanw_sa]: kern_sa.c
syssrc/sys/sys [nathanw_sa]: savar.h
Log Message:
Fix a scheduler locking protocol error:
- sa_switch() is called with sched_lock held, and sched_lock must
remain held right up to the mi_switch() call. When mi_switch()
returns, sched_lock will be unlocked.
- Because sched_lock is held (and can't be released), we CANNOT
sleep waiting for memory (this makes sense, since we're in the
guts of ltsleep(), here). Deal with this by pre-allocating the
sadata_upcall structure (with waitok == 0) and passing it to the
new sa_upcall0() function. XXX This is not pretty, folks. We
need to look for a better solution to this problem.
Problem reported by Allen Briggs.
To generate a diff of this commit:
cvs rdiff -r1.1.2.8 -r1.1.2.9 syssrc/sys/kern/kern_sa.c
cvs rdiff -r1.1.2.7 -r1.1.2.8 syssrc/sys/sys/savar.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index