diff options
author | julian <julian@FreeBSD.org> | 2002-09-29 23:04:34 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2002-09-29 23:04:34 +0000 |
commit | d91c37553eed3082a93a6edbef2fce6c7629aaf7 (patch) | |
tree | 511ef31f5693fdea87543a17c345986c726d9da3 /sys/kern/kern_synch.c | |
parent | 054b6a1aae2b1225e80402c333f0e68b8fafe944 (diff) | |
download | FreeBSD-src-d91c37553eed3082a93a6edbef2fce6c7629aaf7.zip FreeBSD-src-d91c37553eed3082a93a6edbef2fce6c7629aaf7.tar.gz |
Implement basic KSE loaning. This stops a hread that is blocked in BOUND mode
from stopping another thread from completing a syscall, and this allows it to
release its resources etc. Probably more related commits to follow (at least
one I know of)
Initial concept by: julian, dillon
Submitted by: davidxu
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r-- | sys/kern/kern_synch.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 74ef9ed..445936b 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -849,6 +849,11 @@ mi_switch(void) */ td->td_kse = NULL; kse_reassign(ke); + } else if (p->p_flag & P_KSES) { + KASSERT(((ke->ke_bound == NULL) || (ke->ke_bound == td)), + ("mi_switch: bad bound state")); + ke->ke_bound = td; + kse_reassign(ke); } cpu_switch(); /* SHAZAM!!*/ |