HomeFreeBSD

Restructure the code to handle reporting of non-exited processes from

Description

Restructure the code to handle reporting of non-exited processes from
wait(2).

  • Do not acquire the process spinlock if neither WTRAPPED nor WUNTRACED options were passed [1].
  • Extract the code to report alive process into a new helper report_alive_proc() and use it for trapped, stopped and continued childrens.

Note that the process spinlock is required around the WTRAPPED and
WUNTRACED tests, because P_STOPPED_TRACE and P_STOPPED_SIG flags are
set before other threads are stopped at the suspension point, and that
threads increment p_suspcount while owning only the process spinlock,
the process lock is dropped by them. If the spinlock is not taken for
tests, the syscall thread might miss both p_suspcount increment and
wakeup in wakeup in thread_suspend_switch().

Based on the submission by: mjg [1]
Tested by: pho
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

Details

Provenance
kibAuthored on
Parents
rS309538: Fixes for NVIDIA Tegra124 clocks:
Branches
Unknown
Tags
Unknown