This commit is contained in:
Konstantin Belousov 2020-12-27 12:55:50 +02:00
parent 67af9aba6b
commit 9dd48b87e6
10 changed files with 77 additions and 3 deletions

View File

@ -503,4 +503,5 @@
#define FREEBSD32_SYS___realpathat 574
#define FREEBSD32_SYS_close_range 575
#define FREEBSD32_SYS_rpctls_syscall 576
#define FREEBSD32_SYS_MAXSYSCALL 577
#define FREEBSD32_SYS___specialfd 577
#define FREEBSD32_SYS_MAXSYSCALL 578

View File

@ -613,4 +613,5 @@ const char *freebsd32_syscallnames[] = {
"__realpathat", /* 574 = __realpathat */
"close_range", /* 575 = close_range */
"rpctls_syscall", /* 576 = rpctls_syscall */
"__specialfd", /* 577 = __specialfd */
};

View File

@ -666,4 +666,5 @@ struct sysent freebsd32_sysent[] = {
{ .sy_narg = AS(__realpathat_args), .sy_call = (sy_call_t *)sys___realpathat, .sy_auevent = AUE_REALPATHAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 574 = __realpathat */
{ .sy_narg = AS(close_range_args), .sy_call = (sy_call_t *)sys_close_range, .sy_auevent = AUE_CLOSERANGE, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 575 = close_range */
{ .sy_narg = AS(rpctls_syscall_args), .sy_call = (sy_call_t *)lkmressys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT }, /* 576 = rpctls_syscall */
{ .sy_narg = AS(__specialfd_args), .sy_call = (sy_call_t *)sys___specialfd, .sy_auevent = AUE_SPECIALFD, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 577 = __specialfd */
};

View File

@ -3384,6 +3384,15 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 2;
break;
}
/* __specialfd */
case 577: {
struct __specialfd_args *p = params;
iarg[0] = p->type; /* int */
uarg[1] = (intptr_t) p->req; /* const void * */
uarg[2] = p->len; /* size_t */
*n_args = 3;
break;
}
default:
*n_args = 0;
break;
@ -9124,6 +9133,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
};
break;
/* __specialfd */
case 577:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "userland const void *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
default:
break;
};
@ -11028,6 +11053,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1)
p = "int";
break;
/* __specialfd */
case 577:
if (ndx == 0 || ndx == 1)
p = "int";
break;
default:
break;
};

View File

@ -632,4 +632,5 @@ struct sysent sysent[] = {
{ .sy_narg = AS(__realpathat_args), .sy_call = (sy_call_t *)sys___realpathat, .sy_auevent = AUE_REALPATHAT, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 574 = __realpathat */
{ .sy_narg = AS(close_range_args), .sy_call = (sy_call_t *)sys_close_range, .sy_auevent = AUE_CLOSERANGE, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 575 = close_range */
{ .sy_narg = AS(rpctls_syscall_args), .sy_call = (sy_call_t *)lkmressys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT }, /* 576 = rpctls_syscall */
{ .sy_narg = AS(__specialfd_args), .sy_call = (sy_call_t *)sys___specialfd, .sy_auevent = AUE_SPECIALFD, .sy_flags = SYF_CAPENABLED, .sy_thrcnt = SY_THR_STATIC }, /* 577 = __specialfd */
};

View File

@ -583,4 +583,5 @@ const char *syscallnames[] = {
"__realpathat", /* 574 = __realpathat */
"close_range", /* 575 = close_range */
"rpctls_syscall", /* 576 = rpctls_syscall */
"__specialfd", /* 577 = __specialfd */
};

View File

@ -3376,6 +3376,15 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
*n_args = 2;
break;
}
/* __specialfd */
case 577: {
struct __specialfd_args *p = params;
iarg[0] = p->type; /* int */
uarg[1] = (intptr_t) p->req; /* const void * */
uarg[2] = p->len; /* size_t */
*n_args = 3;
break;
}
default:
*n_args = 0;
break;
@ -9029,6 +9038,22 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
};
break;
/* __specialfd */
case 577:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "userland const void *";
break;
case 2:
p = "size_t";
break;
default:
break;
};
break;
default:
break;
};
@ -10960,6 +10985,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1)
p = "int";
break;
/* __specialfd */
case 577:
if (ndx == 0 || ndx == 1)
p = "int";
break;
default:
break;
};

View File

@ -512,4 +512,5 @@
#define SYS___realpathat 574
#define SYS_close_range 575
#define SYS_rpctls_syscall 576
#define SYS_MAXSYSCALL 577
#define SYS___specialfd 577
#define SYS_MAXSYSCALL 578

View File

@ -417,4 +417,5 @@ MIASM = \
sigfastblock.o \
__realpathat.o \
close_range.o \
rpctls_syscall.o
rpctls_syscall.o \
__specialfd.o

View File

@ -1836,6 +1836,11 @@ struct rpctls_syscall_args {
char op_l_[PADL_(int)]; int op; char op_r_[PADR_(int)];
char path_l_[PADL_(const char *)]; const char * path; char path_r_[PADR_(const char *)];
};
struct __specialfd_args {
char type_l_[PADL_(int)]; int type; char type_r_[PADR_(int)];
char req_l_[PADL_(const void *)]; const void * req; char req_r_[PADR_(const void *)];
char len_l_[PADL_(size_t)]; size_t len; char len_r_[PADR_(size_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 *);
@ -2227,6 +2232,7 @@ int sys_sigfastblock(struct thread *, struct sigfastblock_args *);
int sys___realpathat(struct thread *, struct __realpathat_args *);
int sys_close_range(struct thread *, struct close_range_args *);
int sys_rpctls_syscall(struct thread *, struct rpctls_syscall_args *);
int sys___specialfd(struct thread *, struct __specialfd_args *);
#ifdef COMPAT_43
@ -3158,6 +3164,7 @@ int freebsd12_closefrom(struct thread *, struct freebsd12_closefrom_args *);
#define SYS_AUE___realpathat AUE_REALPATHAT
#define SYS_AUE_close_range AUE_CLOSERANGE
#define SYS_AUE_rpctls_syscall AUE_NULL
#define SYS_AUE___specialfd AUE_SPECIALFD
#undef PAD_
#undef PADL_