On Tue, Nov 08, 2022 at 01:14:02PM +, Martin Pieuchot wrote:
> Now that mmap/munmap/mprotect(2) are no longer creating contention it is
> possible to see that sched_yield(2) is one of the syscalls waiting for
> the KERNEL_LOCK() to be released. However this is no longer necessary.
>
> Traversing `ps_threads' require either the KERNEL_LOCK() or the
> SCHED_LOCK() and we are holding both in this case. So let's drop the
> requirement for the KERNEL_LOCK().
>
> ok?
>
> Index: kern/syscalls.master
> ===
> RCS file: /cvs/src/sys/kern/syscalls.master,v
> retrieving revision 1.235
> diff -u -p -r1.235 syscalls.master
> --- kern/syscalls.master 8 Nov 2022 11:05:57 - 1.235
> +++ kern/syscalls.master 8 Nov 2022 13:09:10 -
> @@ -531,7 +531,7 @@
> #else
> 297 UNIMPL
> #endif
> -298 STD { int sys_sched_yield(void); }
> +298 STD NOLOCK { int sys_sched_yield(void); }
> 299 STD NOLOCK { pid_t sys_getthrid(void); }
> 300 OBSOL t32___thrsleep
> 301 STD NOLOCK { int sys___thrwakeup(const volatile void *ident, \
>
Works here. This doesn't move the needle as much as the mmap unlock diff did
though :)