diff --git a/sys/compat/freebsd32/freebsd32_syscall.h b/sys/compat/freebsd32/freebsd32_syscall.h index bcdb1579cb57..6f91a1190a1c 100644 --- a/sys/compat/freebsd32/freebsd32_syscall.h +++ b/sys/compat/freebsd32/freebsd32_syscall.h @@ -499,4 +499,5 @@ #define FREEBSD32_SYS_freebsd32___sysctlbyname 570 #define FREEBSD32_SYS_shm_open2 571 #define FREEBSD32_SYS_shm_rename 572 -#define FREEBSD32_SYS_MAXSYSCALL 573 +#define FREEBSD32_SYS_sigfastblock 573 +#define FREEBSD32_SYS_MAXSYSCALL 574 diff --git a/sys/compat/freebsd32/freebsd32_syscalls.c b/sys/compat/freebsd32/freebsd32_syscalls.c index 223c6772829b..deefa2d22630 100644 --- a/sys/compat/freebsd32/freebsd32_syscalls.c +++ b/sys/compat/freebsd32/freebsd32_syscalls.c @@ -609,4 +609,5 @@ const char *freebsd32_syscallnames[] = { "freebsd32___sysctlbyname", /* 570 = freebsd32___sysctlbyname */ "shm_open2", /* 571 = shm_open2 */ "shm_rename", /* 572 = shm_rename */ + "sigfastblock", /* 573 = sigfastblock */ }; diff --git a/sys/compat/freebsd32/freebsd32_sysent.c b/sys/compat/freebsd32/freebsd32_sysent.c index 52baae6c02b7..b703c0fa1e3b 100644 --- a/sys/compat/freebsd32/freebsd32_sysent.c +++ b/sys/compat/freebsd32/freebsd32_sysent.c @@ -662,4 +662,5 @@ struct sysent freebsd32_sysent[] = { { AS(freebsd32___sysctlbyname_args), (sy_call_t *)freebsd32___sysctlbyname, AUE_SYSCTL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 570 = freebsd32___sysctlbyname */ { AS(shm_open2_args), (sy_call_t *)sys_shm_open2, AUE_SHMOPEN, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 571 = shm_open2 */ { AS(shm_rename_args), (sy_call_t *)sys_shm_rename, AUE_SHMRENAME, NULL, 0, 0, 0, SY_THR_STATIC }, /* 572 = shm_rename */ + { AS(sigfastblock_args), (sy_call_t *)sys_sigfastblock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 573 = sigfastblock */ }; diff --git a/sys/compat/freebsd32/freebsd32_systrace_args.c b/sys/compat/freebsd32/freebsd32_systrace_args.c index 178bbf0a8427..2abc302f3079 100644 --- a/sys/compat/freebsd32/freebsd32_systrace_args.c +++ b/sys/compat/freebsd32/freebsd32_systrace_args.c @@ -3355,6 +3355,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 3; break; } + /* sigfastblock */ + case 573: { + struct sigfastblock_args *p = params; + iarg[0] = p->cmd; /* int */ + uarg[1] = (intptr_t) p->ptr; /* uint32_t * */ + *n_args = 2; + break; + } default: *n_args = 0; break; @@ -9041,6 +9049,19 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) break; }; break; + /* sigfastblock */ + case 573: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "userland uint32_t *"; + break; + default: + break; + }; + break; default: break; }; @@ -10930,6 +10951,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) if (ndx == 0 || ndx == 1) p = "int"; break; + /* sigfastblock */ + case 573: + 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 b64105fdea34..edb76ee279ae 100644 --- a/sys/kern/init_sysent.c +++ b/sys/kern/init_sysent.c @@ -628,4 +628,5 @@ struct sysent sysent[] = { { AS(__sysctlbyname_args), (sy_call_t *)sys___sysctlbyname, AUE_SYSCTL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 570 = __sysctlbyname */ { AS(shm_open2_args), (sy_call_t *)sys_shm_open2, AUE_SHMOPEN, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 571 = shm_open2 */ { AS(shm_rename_args), (sy_call_t *)sys_shm_rename, AUE_SHMRENAME, NULL, 0, 0, 0, SY_THR_STATIC }, /* 572 = shm_rename */ + { AS(sigfastblock_args), (sy_call_t *)sys_sigfastblock, AUE_NULL, NULL, 0, 0, SYF_CAPENABLED, SY_THR_STATIC }, /* 573 = sigfastblock */ }; diff --git a/sys/kern/syscalls.c b/sys/kern/syscalls.c index 3daa26a41f09..0df4e03756eb 100644 --- a/sys/kern/syscalls.c +++ b/sys/kern/syscalls.c @@ -579,4 +579,5 @@ const char *syscallnames[] = { "__sysctlbyname", /* 570 = __sysctlbyname */ "shm_open2", /* 571 = shm_open2 */ "shm_rename", /* 572 = shm_rename */ + "sigfastblock", /* 573 = sigfastblock */ }; diff --git a/sys/kern/systrace_args.c b/sys/kern/systrace_args.c index 01a9a4e63cbb..346415a69787 100644 --- a/sys/kern/systrace_args.c +++ b/sys/kern/systrace_args.c @@ -3347,6 +3347,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args) *n_args = 3; break; } + /* sigfastblock */ + case 573: { + struct sigfastblock_args *p = params; + iarg[0] = p->cmd; /* int */ + uarg[1] = (intptr_t) p->ptr; /* uint32_t * */ + *n_args = 2; + break; + } default: *n_args = 0; break; @@ -8946,6 +8954,19 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) break; }; break; + /* sigfastblock */ + case 573: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "userland uint32_t *"; + break; + default: + break; + }; + break; default: break; }; @@ -10862,6 +10883,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz) if (ndx == 0 || ndx == 1) p = "int"; break; + /* sigfastblock */ + case 573: + if (ndx == 0 || ndx == 1) + p = "int"; + break; default: break; }; diff --git a/sys/sys/syscall.h b/sys/sys/syscall.h index bfe648fa0808..5b183036661f 100644 --- a/sys/sys/syscall.h +++ b/sys/sys/syscall.h @@ -508,4 +508,5 @@ #define SYS___sysctlbyname 570 #define SYS_shm_open2 571 #define SYS_shm_rename 572 -#define SYS_MAXSYSCALL 573 +#define SYS_sigfastblock 573 +#define SYS_MAXSYSCALL 574 diff --git a/sys/sys/syscall.mk b/sys/sys/syscall.mk index 269010e25e71..c095831023a4 100644 --- a/sys/sys/syscall.mk +++ b/sys/sys/syscall.mk @@ -413,4 +413,5 @@ MIASM = \ copy_file_range.o \ __sysctlbyname.o \ shm_open2.o \ - shm_rename.o + shm_rename.o \ + sigfastblock.o diff --git a/sys/sys/sysproto.h b/sys/sys/sysproto.h index 05acc23c5a07..6817ecf6f4ee 100644 --- a/sys/sys/sysproto.h +++ b/sys/sys/sysproto.h @@ -1819,6 +1819,10 @@ struct shm_rename_args { char path_to_l_[PADL_(const char *)]; const char * path_to; char path_to_r_[PADR_(const char *)]; char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)]; }; +struct sigfastblock_args { + char cmd_l_[PADL_(int)]; int cmd; char cmd_r_[PADR_(int)]; + char ptr_l_[PADL_(uint32_t *)]; uint32_t * ptr; char ptr_r_[PADR_(uint32_t *)]; +}; int nosys(struct thread *, struct nosys_args *); void sys_sys_exit(struct thread *, struct sys_exit_args *); int sys_fork(struct thread *, struct fork_args *); @@ -2207,6 +2211,7 @@ int sys_copy_file_range(struct thread *, struct copy_file_range_args *); int sys___sysctlbyname(struct thread *, struct __sysctlbyname_args *); int sys_shm_open2(struct thread *, struct shm_open2_args *); int sys_shm_rename(struct thread *, struct shm_rename_args *); +int sys_sigfastblock(struct thread *, struct sigfastblock_args *); #ifdef COMPAT_43 @@ -3130,6 +3135,7 @@ int freebsd12_shm_open(struct thread *, struct freebsd12_shm_open_args *); #define SYS_AUE___sysctlbyname AUE_SYSCTL #define SYS_AUE_shm_open2 AUE_SHMOPEN #define SYS_AUE_shm_rename AUE_SHMRENAME +#define SYS_AUE_sigfastblock AUE_NULL #undef PAD_ #undef PADL_