Module Name: src Committed By: ad Date: Sat Sep 23 18:48:05 UTC 2023
Modified Files: src/sys/kern: kern_condvar.c kern_lwp.c kern_mutex.c kern_rwlock.c kern_sleepq.c kern_synch.c kern_timeout.c kern_turnstile.c sys_lwp.c sys_select.c src/sys/rump/librump/rumpkern: sleepq.c src/sys/sys: lwp.h sleepq.h syncobj.h userret.h Log Message: - Simplify how priority boost for blocking in kernel is handled. Rather than setting it up at each site where we block, make it a property of syncobj_t. Then, do not hang onto the priority boost until userret(), drop it as soon as the LWP is out of the run queue and onto a CPU. Holding onto it longer is of questionable benefit. - This allows two members of lwp_t to be deleted, and mi_userret() to be simplified a lot (next step: trim it down to a single conditional). - While here, constify syncobj_t and de-inline a bunch of small functions like lwp_lock() which turn out not to be small after all (I don't know why, but atomic_*_relaxed() seem to provoke a compiler shitfit above and beyond what volatile does). To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/kern/kern_condvar.c cvs rdiff -u -r1.255 -r1.256 src/sys/kern/kern_lwp.c cvs rdiff -u -r1.109 -r1.110 src/sys/kern/kern_mutex.c cvs rdiff -u -r1.72 -r1.73 src/sys/kern/kern_rwlock.c cvs rdiff -u -r1.74 -r1.75 src/sys/kern/kern_sleepq.c cvs rdiff -u -r1.358 -r1.359 src/sys/kern/kern_synch.c cvs rdiff -u -r1.76 -r1.77 src/sys/kern/kern_timeout.c cvs rdiff -u -r1.49 -r1.50 src/sys/kern/kern_turnstile.c cvs rdiff -u -r1.84 -r1.85 src/sys/kern/sys_lwp.c cvs rdiff -u -r1.61 -r1.62 src/sys/kern/sys_select.c cvs rdiff -u -r1.23 -r1.24 src/sys/rump/librump/rumpkern/sleepq.c cvs rdiff -u -r1.220 -r1.221 src/sys/sys/lwp.h cvs rdiff -u -r1.36 -r1.37 src/sys/sys/sleepq.h cvs rdiff -u -r1.15 -r1.16 src/sys/sys/syncobj.h cvs rdiff -u -r1.33 -r1.34 src/sys/sys/userret.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.