kernel: Implement WEXITED for waitid.hrev51725
commit36ef138ce5bea8bd0f634f23df827f5fdd326830
authorMichael Lotz <mmlr@mlotz.ch>
Wed, 3 Jan 2018 00:34:30 +0000 (3 01:34 +0100)
committerMichael Lotz <mmlr@mlotz.ch>
Wed, 3 Jan 2018 00:52:52 +0000 (3 01:52 +0100)
tree63f1797e05d9069e2378cc16f1d0b4cb1068694d
parent63e2d201376d16568b49f7c776863e38c07d0789
kernel: Implement WEXITED for waitid.

Previously dead teams were always returned (as needed for wait/waitpid).
Using waitid it should however be possible to omit the WEXITED flag to
only get stopped (WUNTRACED | WSTOPPED) or continued (WCONTINUED) teams.

Adjust the other caller of the _kern_wait_for_child syscall, used by the
various less specific wait* functions, to always include WEXITED. This
avoids having to special case waitid in the syscall interface or with an
extra flag.

Add a check to ensure that any of these flags is set to avoid the now
possible case of nothing being specified. This fails with B_BAD_VALUE
(EINVAL) as on other systems.
src/system/kernel/team.cpp
src/system/libroot/posix/sys/wait.cpp