git: 892a09e12371 - stable/15 - Regen sysents for addition of pdrfork and pdwait

From: Konstantin Belousov <kib_at_FreeBSD.org>
Date: Sun, 01 Feb 2026 21:41:05 UTC
The branch stable/15 has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=892a09e123714a6449c7ffa7cea0f72af3de0894

commit 892a09e123714a6449c7ffa7cea0f72af3de0894
Author:     Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2026-01-25 16:09:12 +0000
Commit:     Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2026-02-01 21:38:49 +0000

    Regen sysents for addition of pdrfork and pdwait
---
 lib/libsys/_libsys.h                           |  4 ++
 lib/libsys/syscalls.map                        |  4 ++
 sys/compat/freebsd32/freebsd32_proto.h         |  9 ++++
 sys/compat/freebsd32/freebsd32_syscall.h       |  4 +-
 sys/compat/freebsd32/freebsd32_syscalls.c      |  3 ++
 sys/compat/freebsd32/freebsd32_sysent.c        |  3 ++
 sys/compat/freebsd32/freebsd32_systrace_args.c | 68 ++++++++++++++++++++++++++
 sys/kern/init_sysent.c                         |  3 ++
 sys/kern/syscalls.c                            |  3 ++
 sys/kern/systrace_args.c                       | 68 ++++++++++++++++++++++++++
 sys/sys/syscall.h                              |  4 +-
 sys/sys/syscall.mk                             |  4 +-
 sys/sys/sysproto.h                             | 16 ++++++
 13 files changed, 190 insertions(+), 3 deletions(-)

diff --git a/lib/libsys/_libsys.h b/lib/libsys/_libsys.h
index 6bd768708a78..46a2687216b0 100644
--- a/lib/libsys/_libsys.h
+++ b/lib/libsys/_libsys.h
@@ -470,6 +470,8 @@ typedef int (__sys_getgroups_t)(int, gid_t *);
 typedef int (__sys_setgroups_t)(int, const gid_t *);
 typedef int (__sys_jail_attach_jd_t)(int);
 typedef int (__sys_jail_remove_jd_t)(int);
+typedef int (__sys_pdrfork_t)(int *, int, int);
+typedef int (__sys_pdwait_t)(int, int *, int, struct __wrusage *, struct __siginfo *);
 
 _Noreturn void __sys__exit(int rval);
 int __sys_fork(void);
@@ -876,6 +878,8 @@ int __sys_getgroups(int gidsetsize, gid_t * gidset);
 int __sys_setgroups(int gidsetsize, const gid_t * gidset);
 int __sys_jail_attach_jd(int fd);
 int __sys_jail_remove_jd(int fd);
+int __sys_pdrfork(int * fdp, int pdflags, int rfflags);
+int __sys_pdwait(int fd, int * status, int options, struct __wrusage * wrusage, struct __siginfo * info);
 __END_DECLS
 
 #endif /* __LIBSYS_H_ */
diff --git a/lib/libsys/syscalls.map b/lib/libsys/syscalls.map
index b5400b9849b3..18d65b64ab8d 100644
--- a/lib/libsys/syscalls.map
+++ b/lib/libsys/syscalls.map
@@ -817,4 +817,8 @@ FBSDprivate_1.0 {
 	__sys_jail_attach_jd;
 	_jail_remove_jd;
 	__sys_jail_remove_jd;
+	_pdrfork;
+	__sys_pdrfork;
+	_pdwait;
+	__sys_pdwait;
 };
diff --git a/sys/compat/freebsd32/freebsd32_proto.h b/sys/compat/freebsd32/freebsd32_proto.h
index 5c0efc64f8a7..12458ed4cc4d 100644
--- a/sys/compat/freebsd32/freebsd32_proto.h
+++ b/sys/compat/freebsd32/freebsd32_proto.h
@@ -699,6 +699,13 @@ struct freebsd32_setcred_args {
 	char wcred_l_[PADL_(const struct setcred32 *)]; const struct setcred32 * wcred; char wcred_r_[PADR_(const struct setcred32 *)];
 	char size_l_[PADL_(size_t)]; size_t size; char size_r_[PADR_(size_t)];
 };
+struct freebsd32_pdwait_args {
+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+	char status_l_[PADL_(int *)]; int * status; char status_r_[PADR_(int *)];
+	char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)];
+	char wrusage_l_[PADL_(struct __wrusage32 *)]; struct __wrusage32 * wrusage; char wrusage_r_[PADR_(struct __wrusage32 *)];
+	char info_l_[PADL_(struct __siginfo32 *)]; struct __siginfo32 * info; char info_r_[PADR_(struct __siginfo32 *)];
+};
 int	freebsd32_wait4(struct thread *, struct freebsd32_wait4_args *);
 int	freebsd32_ptrace(struct thread *, struct freebsd32_ptrace_args *);
 int	freebsd32_recvmsg(struct thread *, struct freebsd32_recvmsg_args *);
@@ -817,6 +824,7 @@ int	freebsd32_aio_readv(struct thread *, struct freebsd32_aio_readv_args *);
 int	freebsd32_timerfd_gettime(struct thread *, struct freebsd32_timerfd_gettime_args *);
 int	freebsd32_timerfd_settime(struct thread *, struct freebsd32_timerfd_settime_args *);
 int	freebsd32_setcred(struct thread *, struct freebsd32_setcred_args *);
+int	freebsd32_pdwait(struct thread *, struct freebsd32_pdwait_args *);
 
 #ifdef COMPAT_43
 
@@ -1319,6 +1327,7 @@ int	freebsd11_freebsd32_fstatat(struct thread *, struct freebsd11_freebsd32_fsta
 #define	FREEBSD32_SYS_AUE_freebsd32_timerfd_gettime	AUE_TIMERFD
 #define	FREEBSD32_SYS_AUE_freebsd32_timerfd_settime	AUE_TIMERFD
 #define	FREEBSD32_SYS_AUE_freebsd32_setcred	AUE_SETCRED
+#define	FREEBSD32_SYS_AUE_freebsd32_pdwait	AUE_PDWAIT
 
 #undef PAD_
 #undef PADL_
diff --git a/sys/compat/freebsd32/freebsd32_syscall.h b/sys/compat/freebsd32/freebsd32_syscall.h
index 54063150eef9..67ff022922a8 100644
--- a/sys/compat/freebsd32/freebsd32_syscall.h
+++ b/sys/compat/freebsd32/freebsd32_syscall.h
@@ -517,4 +517,6 @@
 #define	FREEBSD32_SYS_setgroups	596
 #define	FREEBSD32_SYS_jail_attach_jd	597
 #define	FREEBSD32_SYS_jail_remove_jd	598
-#define	FREEBSD32_SYS_MAXSYSCALL	599
+#define	FREEBSD32_SYS_pdrfork	600
+#define	FREEBSD32_SYS_freebsd32_pdwait	601
+#define	FREEBSD32_SYS_MAXSYSCALL	602
diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c b/sys/compat/freebsd32/freebsd32_syscalls.c
index f7cc4c284e4d..54b826098a9d 100644
--- a/sys/compat/freebsd32/freebsd32_syscalls.c
+++ b/sys/compat/freebsd32/freebsd32_syscalls.c
@@ -604,4 +604,7 @@ const char *freebsd32_syscallnames[] = {
 	"setgroups",			/* 596 = setgroups */
 	"jail_attach_jd",			/* 597 = jail_attach_jd */
 	"jail_remove_jd",			/* 598 = jail_remove_jd */
+	"#599",			/* 599 = kexec_load */
+	"pdrfork",			/* 600 = pdrfork */
+	"freebsd32_pdwait",			/* 601 = freebsd32_pdwait */
 };
diff --git a/sys/compat/freebsd32/freebsd32_sysent.c b/sys/compat/freebsd32/freebsd32_sysent.c
index 18f809ef04e3..1b0e5a4a5b86 100644
--- a/sys/compat/freebsd32/freebsd32_sysent.c
+++ b/sys/compat/freebsd32/freebsd32_sysent.c
@@ -666,4 +666,7 @@ struct sysent freebsd32_sysent[] = {
 	{ .sy_narg = AS(setgroups_args), .sy_call = (sy_call_t *)sys_setgroups, .sy_auevent = AUE_SETGROUPS, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 596 = setgroups */
 	{ .sy_narg = AS(jail_attach_jd_args), .sy_call = (sy_call_t *)sys_jail_attach_jd, .sy_auevent = AUE_JAIL_ATTACH, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 597 = jail_attach_jd */
 	{ .sy_narg = AS(jail_remove_jd_args), .sy_call = (sy_call_t *)sys_jail_remove_jd, .sy_auevent = AUE_JAIL_REMOVE, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 598 = jail_remove_jd */
+	{ .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT },	/* 599 = kexec_load */
+	{ .sy_narg = AS(pdrfork_args), .sy_call = (sy_call_t *)sys_pdrfork, .sy_auevent = AUE_PDRFORK, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC },	/* 600 = pdrfork */
+	{ .sy_narg = AS(freebsd32_pdwait_args), .sy_call = (sy_call_t *)freebsd32_pdwait, .sy_auevent = AUE_PDWAIT, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC },	/* 601 = freebsd32_pdwait */
 };
diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c b/sys/compat/freebsd32/freebsd32_systrace_args.c
index 29a5497e9efa..59a74d365e1c 100644
--- a/sys/compat/freebsd32/freebsd32_systrace_args.c
+++ b/sys/compat/freebsd32/freebsd32_systrace_args.c
@@ -3427,6 +3427,26 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		*n_args = 1;
 		break;
 	}
+	/* pdrfork */
+	case 600: {
+		struct pdrfork_args *p = params;
+		uarg[a++] = (intptr_t)p->fdp; /* int * */
+		iarg[a++] = p->pdflags; /* int */
+		iarg[a++] = p->rfflags; /* int */
+		*n_args = 3;
+		break;
+	}
+	/* freebsd32_pdwait */
+	case 601: {
+		struct freebsd32_pdwait_args *p = params;
+		iarg[a++] = p->fd; /* int */
+		uarg[a++] = (intptr_t)p->status; /* int * */
+		iarg[a++] = p->options; /* int */
+		uarg[a++] = (intptr_t)p->wrusage; /* struct __wrusage32 * */
+		uarg[a++] = (intptr_t)p->info; /* struct __siginfo32 * */
+		*n_args = 5;
+		break;
+	}
 	default:
 		*n_args = 0;
 		break;
@@ -9256,6 +9276,44 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 			break;
 		};
 		break;
+	/* pdrfork */
+	case 600:
+		switch (ndx) {
+		case 0:
+			p = "userland int *";
+			break;
+		case 1:
+			p = "int";
+			break;
+		case 2:
+			p = "int";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* freebsd32_pdwait */
+	case 601:
+		switch (ndx) {
+		case 0:
+			p = "int";
+			break;
+		case 1:
+			p = "userland int *";
+			break;
+		case 2:
+			p = "int";
+			break;
+		case 3:
+			p = "userland struct __wrusage32 *";
+			break;
+		case 4:
+			p = "userland struct __siginfo32 *";
+			break;
+		default:
+			break;
+		};
+		break;
 	default:
 		break;
 	};
@@ -11174,6 +11232,16 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;
+	/* pdrfork */
+	case 600:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* freebsd32_pdwait */
+	case 601:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	default:
 		break;
 	};
diff --git a/sys/kern/init_sysent.c b/sys/kern/init_sysent.c
index e42e7dcf8b44..fcfee33c3fec 100644
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -665,4 +665,7 @@ struct sysent sysent[] = {
 	{ .sy_narg = AS(setgroups_args), .sy_call = (sy_call_t *)sys_setgroups, .sy_auevent = AUE_SETGROUPS, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 596 = setgroups */
 	{ .sy_narg = AS(jail_attach_jd_args), .sy_call = (sy_call_t *)sys_jail_attach_jd, .sy_auevent = AUE_JAIL_ATTACH, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 597 = jail_attach_jd */
 	{ .sy_narg = AS(jail_remove_jd_args), .sy_call = (sy_call_t *)sys_jail_remove_jd, .sy_auevent = AUE_JAIL_REMOVE, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },	/* 598 = jail_remove_jd */
+	{ .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT },	/* 599 = kexec_load */
+	{ .sy_narg = AS(pdrfork_args), .sy_call = (sy_call_t *)sys_pdrfork, .sy_auevent = AUE_PDRFORK, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC },	/* 600 = pdrfork */
+	{ .sy_narg = AS(pdwait_args), .sy_call = (sy_call_t *)sys_pdwait, .sy_auevent = AUE_PDWAIT, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC },	/* 601 = pdwait */
 };
diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c
index 4cef89cd5219..82adf3f79970 100644
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -604,4 +604,7 @@ const char *syscallnames[] = {
 	"setgroups",			/* 596 = setgroups */
 	"jail_attach_jd",			/* 597 = jail_attach_jd */
 	"jail_remove_jd",			/* 598 = jail_remove_jd */
+	"#599",			/* 599 = kexec_load */
+	"pdrfork",			/* 600 = pdrfork */
+	"pdwait",			/* 601 = pdwait */
 };
diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c
index e28fef931ea8..973c2ed8e97a 100644
--- a/sys/kern/systrace_args.c
+++ b/sys/kern/systrace_args.c
@@ -3514,6 +3514,26 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
 		*n_args = 1;
 		break;
 	}
+	/* pdrfork */
+	case 600: {
+		struct pdrfork_args *p = params;
+		uarg[a++] = (intptr_t)p->fdp; /* int * */
+		iarg[a++] = p->pdflags; /* int */
+		iarg[a++] = p->rfflags; /* int */
+		*n_args = 3;
+		break;
+	}
+	/* pdwait */
+	case 601: {
+		struct pdwait_args *p = params;
+		iarg[a++] = p->fd; /* int */
+		uarg[a++] = (intptr_t)p->status; /* int * */
+		iarg[a++] = p->options; /* int */
+		uarg[a++] = (intptr_t)p->wrusage; /* struct __wrusage * */
+		uarg[a++] = (intptr_t)p->info; /* struct __siginfo * */
+		*n_args = 5;
+		break;
+	}
 	default:
 		*n_args = 0;
 		break;
@@ -9401,6 +9421,44 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 			break;
 		};
 		break;
+	/* pdrfork */
+	case 600:
+		switch (ndx) {
+		case 0:
+			p = "userland int *";
+			break;
+		case 1:
+			p = "int";
+			break;
+		case 2:
+			p = "int";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* pdwait */
+	case 601:
+		switch (ndx) {
+		case 0:
+			p = "int";
+			break;
+		case 1:
+			p = "userland int *";
+			break;
+		case 2:
+			p = "int";
+			break;
+		case 3:
+			p = "userland struct __wrusage *";
+			break;
+		case 4:
+			p = "userland struct __siginfo *";
+			break;
+		default:
+			break;
+		};
+		break;
 	default:
 		break;
 	};
@@ -11409,6 +11467,16 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;
+	/* pdrfork */
+	case 600:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* pdwait */
+	case 601:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
 	default:
 		break;
 	};
diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h
index cff27b8be316..a754c1b5b534 100644
--- a/sys/sys/syscall.h
+++ b/sys/sys/syscall.h
@@ -537,4 +537,6 @@
 #define	SYS_setgroups	596
 #define	SYS_jail_attach_jd	597
 #define	SYS_jail_remove_jd	598
-#define	SYS_MAXSYSCALL	599
+#define	SYS_pdrfork	600
+#define	SYS_pdwait	601
+#define	SYS_MAXSYSCALL	602
diff --git a/sys/sys/syscall.mk b/sys/sys/syscall.mk
index 443dbadcfbff..71b59ec44fd8 100644
--- a/sys/sys/syscall.mk
+++ b/sys/sys/syscall.mk
@@ -440,4 +440,6 @@ MIASM =  \
 	getgroups.o \
 	setgroups.o \
 	jail_attach_jd.o \
-	jail_remove_jd.o
+	jail_remove_jd.o \
+	pdrfork.o \
+	pdwait.o
diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h
index 8dda4b4533ea..abd8145ff01a 100644
--- a/sys/sys/sysproto.h
+++ b/sys/sys/sysproto.h
@@ -1907,6 +1907,18 @@ struct jail_attach_jd_args {
 struct jail_remove_jd_args {
 	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
 };
+struct pdrfork_args {
+	char fdp_l_[PADL_(int *)]; int * fdp; char fdp_r_[PADR_(int *)];
+	char pdflags_l_[PADL_(int)]; int pdflags; char pdflags_r_[PADR_(int)];
+	char rfflags_l_[PADL_(int)]; int rfflags; char rfflags_r_[PADR_(int)];
+};
+struct pdwait_args {
+	char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)];
+	char status_l_[PADL_(int *)]; int * status; char status_r_[PADR_(int *)];
+	char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)];
+	char wrusage_l_[PADL_(struct __wrusage *)]; struct __wrusage * wrusage; char wrusage_r_[PADR_(struct __wrusage *)];
+	char info_l_[PADL_(struct __siginfo *)]; struct __siginfo * info; char info_r_[PADR_(struct __siginfo *)];
+};
 int	sys__exit(struct thread *, struct _exit_args *);
 int	sys_fork(struct thread *, struct fork_args *);
 int	sys_read(struct thread *, struct read_args *);
@@ -2313,6 +2325,8 @@ int	sys_getgroups(struct thread *, struct getgroups_args *);
 int	sys_setgroups(struct thread *, struct setgroups_args *);
 int	sys_jail_attach_jd(struct thread *, struct jail_attach_jd_args *);
 int	sys_jail_remove_jd(struct thread *, struct jail_remove_jd_args *);
+int	sys_pdrfork(struct thread *, struct pdrfork_args *);
+int	sys_pdwait(struct thread *, struct pdwait_args *);
 
 #ifdef COMPAT_43
 
@@ -3311,6 +3325,8 @@ int	freebsd14_setgroups(struct thread *, struct freebsd14_setgroups_args *);
 #define	SYS_AUE_setgroups	AUE_SETGROUPS
 #define	SYS_AUE_jail_attach_jd	AUE_JAIL_ATTACH
 #define	SYS_AUE_jail_remove_jd	AUE_JAIL_REMOVE
+#define	SYS_AUE_pdrfork	AUE_PDRFORK
+#define	SYS_AUE_pdwait	AUE_PDWAIT
 
 #undef PAD_
 #undef PADL_