On Tue, Nov 08, 2022 at 01:14:02PM +0000, 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 -0000       1.235
> +++ kern/syscalls.master      8 Nov 2022 13:09:10 -0000
> @@ -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 :)

Reply via email to