diff options
| author | Konstantin Belousov <kib@FreeBSD.org> | 2026-02-15 15:22:19 +0000 |
|---|---|---|
| committer | Konstantin Belousov <kib@FreeBSD.org> | 2026-02-16 17:57:53 +0000 |
| commit | 94e4de77dec809fa5a6975e3495a41d1924c25ad (patch) | |
| tree | b672588ae58abdef9b0aab734a58dd267845b242 | |
| parent | 44843695bc4e36abd15835d627da7d38c06f2219 (diff) | |
pdrfork(2) tests: split basic_usage
into pdrfork(2) call itself, and basic_usage_tail() that checks the
pdrfork(2) results.
Tested by: pho
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D55306
| -rw-r--r-- | tests/sys/kern/pdrfork.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/tests/sys/kern/pdrfork.c b/tests/sys/kern/pdrfork.c index 943e7fde835a..658ffe117bbb 100644 --- a/tests/sys/kern/pdrfork.c +++ b/tests/sys/kern/pdrfork.c @@ -36,17 +36,12 @@ #include <string.h> #include <unistd.h> -static void basic_usage(int rfflags) { - int pd = -1; - pid_t pid, pd_pid, waited_pid; +static void +basic_usage_tail(int pd, pid_t pid) +{ + pid_t pd_pid, waited_pid; int r, status; - pid = pdrfork(&pd, 0, rfflags); - ATF_REQUIRE_MSG(pid >= 0, "rfork failed with %s", strerror(errno)); - if (pid == 0) { - /* In child */ - _exit(0); - } ATF_REQUIRE_MSG(pd >= 0, "rfork did not return a process descriptor"); r = pdgetpid(pd, &pd_pid); ATF_CHECK_EQ_MSG(r, 0, "pdgetpid failed: %s", strerror(errno)); @@ -62,6 +57,21 @@ static void basic_usage(int rfflags) { ATF_CHECK_EQ(ECHILD, errno); } +static void +basic_usage(int rfflags) +{ + int pd = -1; + pid_t pid; + + pid = pdrfork(&pd, 0, rfflags); + ATF_REQUIRE_MSG(pid >= 0, "rfork failed with %s", strerror(errno)); + if (pid == 0) { + /* In child */ + _exit(0); + } + basic_usage_tail(pd, pid); +} + /* pdrfork does not return a process descriptor to the child */ ATF_TC_WITHOUT_HEAD(child_gets_no_pidfd); ATF_TC_BODY(child_gets_no_pidfd, tc) |
