WEXITED
if (!likely(wo->wo_flags & WEXITED))
if (likely(!ptrace) || (wo->wo_flags & (WCONTINUED | WEXITED)))
if (options & ~(WNOHANG|WNOWAIT|WEXITED|WSTOPPED|WCONTINUED|
if (!(options & (WEXITED|WSTOPPED|WCONTINUED)))
wo.wo_flags = options | WEXITED;
.wo_flags = WEXITED,
options |= WEXITED;
if (options & WEXITED) {
(void)clone_reap(pid, WEXITED);
(void)clone_reap(pid, WEXITED);
(void)clone_reap(pid, WEXITED);
(void)clone_reap(object_pid, WEXITED);
(void)clone_reap(object_pid, WEXITED);
ASSERT_GE(sys_waitid(P_PID, pid, NULL, WEXITED), 0);
ASSERT_GE(sys_waitid(P_PID, pid, NULL, WEXITED), 0);
ASSERT_GE(sys_waitid(P_PID, pid, NULL, WEXITED), 0);
ASSERT_EQ(sys_waitid(P_PID, pid, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid1, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid2, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid3, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid3, NULL, WEXITED | WNOWAIT), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid3, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid3, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid4, NULL, WEXITED), 0);
sys_waitid(P_PID, self->child_pid1, NULL, WEXITED);
sys_waitid(P_PID, self->child_pid2, NULL, WEXITED);
sys_waitid(P_PID, self->child_pid3, NULL, WEXITED);
sys_waitid(P_PID, self->child_pid4, NULL, WEXITED);
EXPECT_EQ(sys_waitid(P_PIDFD, pidfd_leader, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PIDFD, pidfd_leader, NULL, WEXITED), 0);
EXPECT_EQ(sys_waitid(P_PIDFD, pidfd_leader, NULL, WEXITED), 0);
sys_waitid(P_PIDFD, pidfd, NULL, WEXITED);
sys_waitid(P_PIDFD, pidfd, NULL, WEXITED);
EXPECT_EQ(sys_waitid(P_PID, self->child_pid2, NULL, WEXITED), 0);
sys_waitid(P_PID, self->child_pid, NULL, WEXITED);
ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, NULL, WEXITED | WNOWAIT), 0);
ASSERT_EQ(sys_waitid(P_PID, self->child_pid_exited, NULL, WEXITED), 0);
ASSERT_EQ(sys_waitid(P_PID, self->child_pid1, NULL, WEXITED), 0);
ASSERT_EQ(sys_waitid(P_PID, self->child_pid2, NULL, WEXITED), 0);
ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WEXITED), 0);
ret = sys_waitid(P_PIDFD, pidfd, &info, WEXITED);
ret = sys_waitid(P_PIDFD, pidfd, &info, WEXITED);
ret = sys_waitid(P_PIDFD, pidfd, &info, WEXITED | WNOHANG);
ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WEXITED), 0);
pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED);
pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED);
pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED);
sys_waitid(P_PID, self->child_pid, NULL, WEXITED);
if (waitid(P_PID, chld, &si, WEXITED|WSTOPPED) != 0)
if (waitid(P_PID, chld, &si, WEXITED|WSTOPPED) != 0)