The branch main has been updated by kib:

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

commit 38bfddf597b18615ad07accd923ce29a951eaab9
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2024-01-19 19:55:42 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2024-01-24 05:11:27 +0000

    regen
---
 sys/compat/freebsd32/freebsd32_syscall.h       |  3 +-
 sys/compat/freebsd32/freebsd32_syscalls.c      |  1 +
 sys/compat/freebsd32/freebsd32_sysent.c        |  1 +
 sys/compat/freebsd32/freebsd32_systrace_args.c | 38 ++++++++++++++++++++++++++
 sys/kern/init_sysent.c                         |  1 +
 sys/kern/syscalls.c                            |  1 +
 sys/kern/systrace_args.c                       | 38 ++++++++++++++++++++++++++
 sys/sys/syscall.h                              |  3 +-
 sys/sys/syscall.mk                             |  3 +-
 sys/sys/sysproto.h                             |  9 ++++++
 10 files changed, 95 insertions(+), 3 deletions(-)

diff --git a/sys/compat/freebsd32/freebsd32_syscall.h 
b/sys/compat/freebsd32/freebsd32_syscall.h
index bc824b8e04be..662947c330d4 100644
--- a/sys/compat/freebsd32/freebsd32_syscall.h
+++ b/sys/compat/freebsd32/freebsd32_syscall.h
@@ -506,4 +506,5 @@
 #define        FREEBSD32_SYS_timerfd_create    585
 #define        FREEBSD32_SYS_freebsd32_timerfd_gettime 586
 #define        FREEBSD32_SYS_freebsd32_timerfd_settime 587
-#define        FREEBSD32_SYS_MAXSYSCALL        588
+#define        FREEBSD32_SYS_kcmp      588
+#define        FREEBSD32_SYS_MAXSYSCALL        589
diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c 
b/sys/compat/freebsd32/freebsd32_syscalls.c
index 3e7656cace72..b4c41fdbbc12 100644
--- a/sys/compat/freebsd32/freebsd32_syscalls.c
+++ b/sys/compat/freebsd32/freebsd32_syscalls.c
@@ -593,4 +593,5 @@ const char *freebsd32_syscallnames[] = {
        "timerfd_create",                       /* 585 = timerfd_create */
        "freebsd32_timerfd_gettime",                    /* 586 = 
freebsd32_timerfd_gettime */
        "freebsd32_timerfd_settime",                    /* 587 = 
freebsd32_timerfd_settime */
+       "kcmp",                 /* 588 = kcmp */
 };
diff --git a/sys/compat/freebsd32/freebsd32_sysent.c 
b/sys/compat/freebsd32/freebsd32_sysent.c
index 179d83186b41..13d80c695169 100644
--- a/sys/compat/freebsd32/freebsd32_sysent.c
+++ b/sys/compat/freebsd32/freebsd32_sysent.c
@@ -649,4 +649,5 @@ struct sysent freebsd32_sysent[] = {
        { .sy_narg = AS(timerfd_create_args), .sy_call = (sy_call_t 
*)sys_timerfd_create, .sy_auevent = AUE_TIMERFD, .sy_flags = SYF_CAPENABLED, 
.sy_thrcnt = SY_THR_STATIC },  /* 585 = timerfd_create */
        { .sy_narg = AS(freebsd32_timerfd_gettime_args), .sy_call = (sy_call_t 
*)freebsd32_timerfd_gettime, .sy_auevent = AUE_TIMERFD, .sy_flags = 
SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC },        /* 586 = 
freebsd32_timerfd_gettime */
        { .sy_narg = AS(freebsd32_timerfd_settime_args), .sy_call = (sy_call_t 
*)freebsd32_timerfd_settime, .sy_auevent = AUE_TIMERFD, .sy_flags = 
SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC },        /* 587 = 
freebsd32_timerfd_settime */
+       { .sy_narg = AS(kcmp_args), .sy_call = (sy_call_t *)sys_kcmp, 
.sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },      /* 
588 = kcmp */
 };
diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c 
b/sys/compat/freebsd32/freebsd32_systrace_args.c
index 0d263b57bf0f..f2617872a952 100644
--- a/sys/compat/freebsd32/freebsd32_systrace_args.c
+++ b/sys/compat/freebsd32/freebsd32_systrace_args.c
@@ -3357,6 +3357,17 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, 
int *n_args)
                *n_args = 4;
                break;
        }
+       /* kcmp */
+       case 588: {
+               struct kcmp_args *p = params;
+               iarg[a++] = p->pid1; /* pid_t */
+               iarg[a++] = p->pid2; /* pid_t */
+               iarg[a++] = p->type; /* int */
+               uarg[a++] = (intptr_t)p->idx1; /* uintptr_t */
+               uarg[a++] = (intptr_t)p->idx2; /* uintptr_t */
+               *n_args = 5;
+               break;
+       }
        default:
                *n_args = 0;
                break;
@@ -9067,6 +9078,28 @@ systrace_entry_setargdesc(int sysnum, int ndx, char 
*desc, size_t descsz)
                        break;
                };
                break;
+       /* kcmp */
+       case 588:
+               switch (ndx) {
+               case 0:
+                       p = "pid_t";
+                       break;
+               case 1:
+                       p = "pid_t";
+                       break;
+               case 2:
+                       p = "int";
+                       break;
+               case 3:
+                       p = "uintptr_t";
+                       break;
+               case 4:
+                       p = "uintptr_t";
+                       break;
+               default:
+                       break;
+               };
+               break;
        default:
                break;
        };
@@ -10945,6 +10978,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char 
*desc, size_t descsz)
                if (ndx == 0 || ndx == 1)
                        p = "int";
                break;
+       /* kcmp */
+       case 588:
+               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 74b96a27b3fa..467ea391ef23 100644
--- a/sys/kern/init_sysent.c
+++ b/sys/kern/init_sysent.c
@@ -648,4 +648,5 @@ struct sysent sysent[] = {
        { .sy_narg = AS(timerfd_create_args), .sy_call = (sy_call_t 
*)sys_timerfd_create, .sy_auevent = AUE_TIMERFD, .sy_flags = SYF_CAPENABLED, 
.sy_thrcnt = SY_THR_STATIC },  /* 585 = timerfd_create */
        { .sy_narg = AS(timerfd_gettime_args), .sy_call = (sy_call_t 
*)sys_timerfd_gettime, .sy_auevent = AUE_TIMERFD, .sy_flags = SYF_CAPENABLED, 
.sy_thrcnt = SY_THR_STATIC },        /* 586 = timerfd_gettime */
        { .sy_narg = AS(timerfd_settime_args), .sy_call = (sy_call_t 
*)sys_timerfd_settime, .sy_auevent = AUE_TIMERFD, .sy_flags = SYF_CAPENABLED, 
.sy_thrcnt = SY_THR_STATIC },        /* 587 = timerfd_settime */
+       { .sy_narg = AS(kcmp_args), .sy_call = (sy_call_t *)sys_kcmp, 
.sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC },      /* 
588 = kcmp */
 };
diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c
index 323669158ac4..0e6e3a3dd1f1 100644
--- a/sys/kern/syscalls.c
+++ b/sys/kern/syscalls.c
@@ -593,4 +593,5 @@ const char *syscallnames[] = {
        "timerfd_create",                       /* 585 = timerfd_create */
        "timerfd_gettime",                      /* 586 = timerfd_gettime */
        "timerfd_settime",                      /* 587 = timerfd_settime */
+       "kcmp",                 /* 588 = kcmp */
 };
diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c
index 5166223fe8c6..a7320cbe9377 100644
--- a/sys/kern/systrace_args.c
+++ b/sys/kern/systrace_args.c
@@ -3444,6 +3444,17 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, 
int *n_args)
                *n_args = 4;
                break;
        }
+       /* kcmp */
+       case 588: {
+               struct kcmp_args *p = params;
+               iarg[a++] = p->pid1; /* pid_t */
+               iarg[a++] = p->pid2; /* pid_t */
+               iarg[a++] = p->type; /* int */
+               uarg[a++] = (intptr_t)p->idx1; /* uintptr_t */
+               uarg[a++] = (intptr_t)p->idx2; /* uintptr_t */
+               *n_args = 5;
+               break;
+       }
        default:
                *n_args = 0;
                break;
@@ -9212,6 +9223,28 @@ systrace_entry_setargdesc(int sysnum, int ndx, char 
*desc, size_t descsz)
                        break;
                };
                break;
+       /* kcmp */
+       case 588:
+               switch (ndx) {
+               case 0:
+                       p = "pid_t";
+                       break;
+               case 1:
+                       p = "pid_t";
+                       break;
+               case 2:
+                       p = "int";
+                       break;
+               case 3:
+                       p = "uintptr_t";
+                       break;
+               case 4:
+                       p = "uintptr_t";
+                       break;
+               default:
+                       break;
+               };
+               break;
        default:
                break;
        };
@@ -11180,6 +11213,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char 
*desc, size_t descsz)
                if (ndx == 0 || ndx == 1)
                        p = "int";
                break;
+       /* kcmp */
+       case 588:
+               if (ndx == 0 || ndx == 1)
+                       p = "int";
+               break;
        default:
                break;
        };
diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h
index cdc09a0edc29..1fa5878c6ff6 100644
--- a/sys/sys/syscall.h
+++ b/sys/sys/syscall.h
@@ -524,4 +524,5 @@
 #define        SYS_timerfd_create      585
 #define        SYS_timerfd_gettime     586
 #define        SYS_timerfd_settime     587
-#define        SYS_MAXSYSCALL  588
+#define        SYS_kcmp        588
+#define        SYS_MAXSYSCALL  589
diff --git a/sys/sys/syscall.mk b/sys/sys/syscall.mk
index 8c85dc4c349c..31e698ea2beb 100644
--- a/sys/sys/syscall.mk
+++ b/sys/sys/syscall.mk
@@ -427,4 +427,5 @@ MIASM =  \
        membarrier.o \
        timerfd_create.o \
        timerfd_gettime.o \
-       timerfd_settime.o
+       timerfd_settime.o \
+       kcmp.o
diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h
index 803144745a76..afec9d186a7a 100644
--- a/sys/sys/sysproto.h
+++ b/sys/sys/sysproto.h
@@ -1870,6 +1870,13 @@ struct timerfd_settime_args {
        char new_value_l_[PADL_(const struct itimerspec *)]; const struct 
itimerspec * new_value; char new_value_r_[PADR_(const struct itimerspec *)];
        char old_value_l_[PADL_(struct itimerspec *)]; struct itimerspec * 
old_value; char old_value_r_[PADR_(struct itimerspec *)];
 };
+struct kcmp_args {
+       char pid1_l_[PADL_(pid_t)]; pid_t pid1; char pid1_r_[PADR_(pid_t)];
+       char pid2_l_[PADL_(pid_t)]; pid_t pid2; char pid2_r_[PADR_(pid_t)];
+       char type_l_[PADL_(int)]; int type; char type_r_[PADR_(int)];
+       char idx1_l_[PADL_(uintptr_t)]; uintptr_t idx1; char 
idx1_r_[PADR_(uintptr_t)];
+       char idx2_l_[PADL_(uintptr_t)]; uintptr_t idx2; char 
idx2_r_[PADR_(uintptr_t)];
+};
 int    sys_exit(struct thread *, struct exit_args *);
 int    sys_fork(struct thread *, struct fork_args *);
 int    sys_read(struct thread *, struct read_args *);
@@ -2268,6 +2275,7 @@ int       sys_membarrier(struct thread *, struct 
membarrier_args *);
 int    sys_timerfd_create(struct thread *, struct timerfd_create_args *);
 int    sys_timerfd_gettime(struct thread *, struct timerfd_gettime_args *);
 int    sys_timerfd_settime(struct thread *, struct timerfd_settime_args *);
+int    sys_kcmp(struct thread *, struct kcmp_args *);
 
 #ifdef COMPAT_43
 
@@ -3246,6 +3254,7 @@ int       freebsd13_swapoff(struct thread *, struct 
freebsd13_swapoff_args *);
 #define        SYS_AUE_timerfd_create  AUE_TIMERFD
 #define        SYS_AUE_timerfd_gettime AUE_TIMERFD
 #define        SYS_AUE_timerfd_settime AUE_TIMERFD
+#define        SYS_AUE_kcmp    AUE_NULL
 
 #undef PAD_
 #undef PADL_

Reply via email to