Lines Matching refs:pidfd
19 #include "pidfd.h"
42 int pidfd = -1;
46 .pidfd = ptr_to_u64(&pidfd),
55 pidfd = open("/proc/self", O_DIRECTORY | O_RDONLY | O_CLOEXEC);
56 ASSERT_GE(pidfd, 0);
58 pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL);
60 EXPECT_EQ(close(pidfd), 0);
61 pidfd = -1;
63 pidfd = open("/dev/null", O_RDONLY | O_CLOEXEC);
64 ASSERT_GE(pidfd, 0);
66 pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL);
68 EXPECT_EQ(close(pidfd), 0);
69 pidfd = -1;
77 pid = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL);
81 EXPECT_EQ(close(pidfd), 0);
90 int pidfd = -1;
94 .pidfd = ptr_to_u64(&pidfd),
113 ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WSTOPPED, NULL), 0);
118 ASSERT_EQ(sys_pidfd_send_signal(pidfd, SIGCONT, NULL, 0), 0);
120 ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WCONTINUED, NULL), 0);
125 ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WUNTRACED, NULL), 0);
130 ASSERT_EQ(sys_pidfd_send_signal(pidfd, SIGKILL, NULL, 0), 0);
132 ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL), 0);
137 EXPECT_EQ(close(pidfd), 0);
142 int pidfd, status = 0;
160 pidfd = sys_pidfd_open(getpid(), PIDFD_NONBLOCK);
161 EXPECT_GE(pidfd, 0) {
167 ret = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL);
170 EXPECT_EQ(close(pidfd), 0);
180 pidfd = sys_pidfd_open(pid, PIDFD_NONBLOCK);
181 EXPECT_GE(pidfd, 0) {
187 flags = fcntl(pidfd, F_GETFL, 0);
192 * Callers need to see EAGAIN/EWOULDBLOCK with non-blocking pidfd when
195 ret = sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL);
200 * Callers need to continue seeing 0 with non-blocking pidfd and
204 ret = sys_waitid(P_PIDFD, pidfd, &info, WEXITED | WNOHANG, NULL);
207 ASSERT_EQ(fcntl(pidfd, F_SETFL, (flags & ~O_NONBLOCK)), 0);
209 ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WSTOPPED, NULL), 0);
214 ASSERT_EQ(sys_pidfd_send_signal(pidfd, SIGCONT, NULL, 0), 0);
216 ASSERT_EQ(sys_waitid(P_PIDFD, pidfd, &info, WEXITED, NULL), 0);
221 EXPECT_EQ(close(pidfd), 0);