diff options
author | Jeff Roberson <jeff@FreeBSD.org> | 2019-12-15 21:11:15 +0000 |
---|---|---|
committer | Jeff Roberson <jeff@FreeBSD.org> | 2019-12-15 21:11:15 +0000 |
commit | 61a74c5ccd65d1a00a96779f16eda8c41ff3a426 (patch) | |
tree | 0325e01f4affe5d9ef25e68fae1a7cbd5d2ebde9 /sys/kern/kern_fork.c | |
parent | 054802650063bea1cb817ef22a887c3116813ba9 (diff) | |
download | src-61a74c5ccd65d1a00a96779f16eda8c41ff3a426.tar.gz src-61a74c5ccd65d1a00a96779f16eda8c41ff3a426.zip |
schedlock 1/4
Eliminate recursion from most thread_lock consumers. Return from
sched_add() without the thread_lock held. This eliminates unnecessary
atomics and lock word loads as well as reducing the hold time for
scheduler locks. This will eventually allow for lockless remote adds.
Discussed with: kib
Reviewed by: jhb
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D22626
Notes
Notes:
svn path=/head/; revision=355779
Diffstat (limited to 'sys/kern/kern_fork.c')
-rw-r--r-- | sys/kern/kern_fork.c | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/sys/kern/kern_fork.c b/sys/kern/kern_fork.c index b397dee1aaa4..e8ac950a5d78 100644 --- a/sys/kern/kern_fork.c +++ b/sys/kern/kern_fork.c @@ -758,7 +758,6 @@ do_fork(struct thread *td, struct fork_req *fr, struct proc *p2, struct thread * thread_lock(td2); TD_SET_CAN_RUN(td2); sched_add(td2, SRQ_BORING); - thread_unlock(td2); } else { *fr->fr_procp = p2; } |