git: 94e4de77dec8 - main - pdrfork(2) tests: split basic_usage

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Mon, 16 Feb 2026 17:58:16 UTC
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=94e4de77dec809fa5a6975e3495a41d1924c25ad

commit 94e4de77dec809fa5a6975e3495a41d1924c25ad
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-15 15:22:19 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-02-16 17:57:53 +0000

    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
---
 tests/sys/kern/pdrfork.c | 28 +++++++++++++++++++---------
 1 file 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)