Konstantin Belousov 435da98564 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
2016-12-04 20:44:58 +00:00
..
2016-10-04 15:23:03 +00:00
2016-10-04 17:57:30 +00:00
2016-11-08 23:59:41 +00:00
2016-11-08 23:59:41 +00:00
2015-04-22 14:38:58 +00:00
2016-09-18 07:37:00 +00:00
2016-07-27 11:40:06 +00:00
2016-11-08 23:59:41 +00:00
2016-10-11 17:00:29 +00:00
2016-10-24 16:40:27 +00:00
2016-07-26 17:23:49 +00:00
2016-04-29 22:15:33 +00:00
2016-11-08 23:59:41 +00:00
2016-04-14 17:07:26 +00:00
2016-10-21 18:27:30 +00:00
2016-08-17 10:14:22 +00:00