git: 396d70935ecb - stable/15 - pdrfork(2) tests: enable on x86

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Sat, 21 Feb 2026 09:49:56 UTC
The branch stable/15 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=396d70935ecb309261d2bc7adf001102d4b91c22

commit 396d70935ecb309261d2bc7adf001102d4b91c22
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-02-15 15:23:03 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-02-21 09:48:58 +0000

    pdrfork(2) tests: enable on x86
    
    (cherry picked from commit 793e891f4ad1ef450f562a241fb0bd3b21d72251)
---
 tests/sys/kern/pdrfork.c | 29 ++++++++++++++++++++---------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/tests/sys/kern/pdrfork.c b/tests/sys/kern/pdrfork.c
index 8244a34b6577..30045e0a05a5 100644
--- a/tests/sys/kern/pdrfork.c
+++ b/tests/sys/kern/pdrfork.c
@@ -145,18 +145,31 @@ ATF_TC_BODY(rfprocdesc, tc)
 	basic_usage(RFPROC | RFPROCDESC);
 }
 
+static int
+rfspawn_fn(void *arg)
+{
+	_exit(0);
+	return (0);
+}
+
 /* basic usage with RFSPAWN */
-/*
- * Skip on i386 and x86_64 because RFSPAWN cannot be used from C code on those
- * architectures.  See lib/libc/gen/posix_spawn.c for details.
- */
-#if !(defined(__i386__)) && !(defined(__amd64__))
 ATF_TC_WITHOUT_HEAD(rfspawn);
 ATF_TC_BODY(rfspawn, tc)
 {
-	basic_usage(RFSPAWN);
-}
+	char *stack = NULL;
+	int pd = -1;
+	pid_t pid;
+
+#if defined(__i386__) || defined(__amd64__)
+#define STACK_SZ	(PAGE_SIZE * 10)
+	stack = mmap(NULL, STACK_SZ, PROT_READ | PROT_WRITE, MAP_ANON,
+	    -1, 0);
+	ATF_REQUIRE(stack != MAP_FAILED);
+	stack += STACK_SZ;
 #endif
+	pid = pdrfork_thread(&pd, 0, RFSPAWN, stack, rfspawn_fn, NULL);
+	basic_usage_tail(pd, pid);
+}
 
 ATF_TP_ADD_TCS(tp)
 {
@@ -164,9 +177,7 @@ ATF_TP_ADD_TCS(tp)
 	ATF_TP_ADD_TC(tp, efault);
 	ATF_TP_ADD_TC(tp, einval);
 	ATF_TP_ADD_TC(tp, rfprocdesc);
-#if !(defined(__i386__)) && !(defined(__amd64__))
 	ATF_TP_ADD_TC(tp, rfspawn);
-#endif
 
 	return (atf_no_error());
 }