The branch main has been updated by kib:

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

commit e878df0d3b1ecb409c21c808f7c3d623277353af
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2026-01-08 03:50:26 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2026-01-25 15:54:29 +0000

    Regen syscall tables after pdfork(2) and pdwait(2) additions
---
 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      |  2 +
 sys/compat/freebsd32/freebsd32_sysent.c        |  2 +
 sys/compat/freebsd32/freebsd32_systrace_args.c | 68 ++++++++++++++++++++++++++
 sys/kern/init_sysent.c                         |  2 +
 sys/kern/syscalls.c                            |  2 +
 sys/kern/systrace_args.c                       | 68 ++++++++++++++++++++++++++
 sys/sys/syscall.h                              |  4 +-
 sys/sys/syscall.mk                             |  4 +-
 sys/sys/sysproto.h                             | 16 ++++++
 13 files changed, 186 insertions(+), 3 deletions(-)

diff --git a/lib/libsys/_libsys.h b/lib/libsys/_libsys.h
index 12417b572a60..2af6d2bb22b3 100644
--- a/lib/libsys/_libsys.h
+++ b/lib/libsys/_libsys.h
@@ -472,6 +472,8 @@ 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_kexec_load_t)(uint64_t, u_long, struct kexec_segment *, 
u_long);
+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);
@@ -879,6 +881,8 @@ 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_kexec_load(uint64_t entry, u_long nseg, struct kexec_segment * 
segments, u_long flags);
+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 d00c862eb462..bc8574681132 100644
--- a/lib/libsys/syscalls.map
+++ b/lib/libsys/syscalls.map
@@ -819,4 +819,8 @@ FBSDprivate_1.0 {
        __sys_jail_remove_jd;
        _kexec_load;
        __sys_kexec_load;
+       _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 f8ef7e4a20d3..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        600
+#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 645cdccbc02d..54b826098a9d 100644
--- a/sys/compat/freebsd32/freebsd32_syscalls.c
+++ b/sys/compat/freebsd32/freebsd32_syscalls.c
@@ -605,4 +605,6 @@ const char *freebsd32_syscallnames[] = {
        "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 240b54ae9011..2b5609e8a317 100644
--- a/sys/compat/freebsd32/freebsd32_sysent.c
+++ b/sys/compat/freebsd32/freebsd32_sysent.c
@@ -667,4 +667,6 @@ struct sysent freebsd32_sysent[] = {
        { .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 = freebsd32_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 cd305de1ed44..33586db22600 100644
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -666,4 +666,6 @@ struct sysent sysent[] = {
        { .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 = AS(kexec_load_args), .sy_call = (sy_call_t 
*)sys_kexec_load, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = 
SY_THR_STATIC },  /* 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 06a4adc3d8cb..e2467c39fe6d 100644
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -605,4 +605,6 @@ const char *syscallnames[] = {
        "jail_attach_jd",                       /* 597 = jail_attach_jd */
        "jail_remove_jd",                       /* 598 = jail_remove_jd */
        "kexec_load",                   /* 599 = kexec_load */
+       "pdrfork",                      /* 600 = pdrfork */
+       "pdwait",                       /* 601 = pdwait */
 };
diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c
index 5951cebbe74a..8f5a5cd5153d 100644
--- a/sys/kern/systrace_args.c
+++ b/sys/kern/systrace_args.c
@@ -3524,6 +3524,26 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, 
int *n_args)
                *n_args = 4;
                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;
@@ -9430,6 +9450,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;
        };
@@ -11443,6 +11501,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 43f46f063e3e..814437732df3 100644
--- a/sys/sys/syscall.h
+++ b/sys/sys/syscall.h
@@ -538,4 +538,6 @@
 #define        SYS_jail_attach_jd      597
 #define        SYS_jail_remove_jd      598
 #define        SYS_kexec_load  599
-#define        SYS_MAXSYSCALL  600
+#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 ce29c050885e..e9d54983b5c4 100644
--- a/sys/sys/syscall.mk
+++ b/sys/sys/syscall.mk
@@ -441,4 +441,6 @@ MIASM =  \
        setgroups.o \
        jail_attach_jd.o \
        jail_remove_jd.o \
-       kexec_load.o
+       kexec_load.o \
+       pdrfork.o \
+       pdwait.o
diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h
index 5f5524a4519b..0496077bb555 100644
--- a/sys/sys/sysproto.h
+++ b/sys/sys/sysproto.h
@@ -1913,6 +1913,18 @@ struct kexec_load_args {
        char segments_l_[PADL_(struct kexec_segment *)]; struct kexec_segment * 
segments; char segments_r_[PADR_(struct kexec_segment *)];
        char flags_l_[PADL_(u_long)]; u_long flags; char 
flags_r_[PADR_(u_long)];
 };
+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 *);
@@ -2320,6 +2332,8 @@ 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_kexec_load(struct thread *, struct kexec_load_args *);
+int    sys_pdrfork(struct thread *, struct pdrfork_args *);
+int    sys_pdwait(struct thread *, struct pdwait_args *);
 
 #ifdef COMPAT_43
 
@@ -3319,6 +3333,8 @@ int       freebsd14_setgroups(struct thread *, struct 
freebsd14_setgroups_args *);
 #define        SYS_AUE_jail_attach_jd  AUE_JAIL_ATTACH
 #define        SYS_AUE_jail_remove_jd  AUE_JAIL_REMOVE
 #define        SYS_AUE_kexec_load      AUE_NULL
+#define        SYS_AUE_pdrfork AUE_PDRFORK
+#define        SYS_AUE_pdwait  AUE_PDWAIT
 
 #undef PAD_
 #undef PADL_

Reply via email to