freebsd-nq/sys/compat
Jeff Roberson 686bcb5c14 schedlock 4/4
Don't hold the scheduler lock while doing context switches.  Instead we
unlock after selecting the new thread and switch within a spinlock
section leaving interrupts and preemption disabled to prevent local
concurrency.  This means that mi_switch() is entered with the thread
locked but returns without.  This dramatically simplifies scheduler
locking because we will not hold the schedlock while spinning on
blocked lock in switch.

This change has not been made to 4BSD but in principle it would be
more straightforward.

Discussed with:	markj
Reviewed by:	kib
Tested by:	pho
Differential Revision: https://reviews.freebsd.org/D22778
2019-12-15 21:26:50 +00:00
..
cloudabi Fix the last few cases that grab without busy or valid. The grab functions must 2019-12-02 22:38:25 +00:00
cloudabi32 sysent: Reduce duplication and improve readability. 2019-12-06 23:59:23 +00:00
cloudabi64 sysent: Reduce duplication and improve readability. 2019-12-06 23:59:23 +00:00
freebsd32 Copy out aux args after the argument and environment vectors. 2019-12-09 19:17:28 +00:00
ia32 Use uintptr_t instead of register_t * for the stack base. 2019-12-03 23:17:54 +00:00
lindebugfs LinuxKPI: Finalize move of lindebugfs from ports to base. 2019-05-19 15:44:21 +00:00
linprocfs linprocfs: Make sure to report -1 as tty when we have no controlling tty. 2019-11-11 00:21:05 +00:00
linsysfs Create a "drm" subdirectory for drm devices in linsysfs. Recent versions of 2019-09-23 12:27:55 +00:00
linux schedlock 1/4 2019-12-15 21:11:15 +00:00
linuxkpi/common schedlock 4/4 2019-12-15 21:26:50 +00:00
ndis Fix compilation with 'option NDISAPI + device ndis' and 2019-01-30 11:40:12 +00:00
netbsd sys/compat: further adoption of SPDX licensing ID tags. 2017-11-27 15:13:23 +00:00
x86bios x86bios: use M_NOWAIT with mallocs 2018-09-13 07:04:00 +00:00