aboutsummaryrefslogtreecommitdiff
path: root/sys/amd64
diff options
context:
space:
mode:
authorDmitry Chagin <dchagin@FreeBSD.org>2021-06-10 12:04:37 +0000
committerDmitry Chagin <dchagin@FreeBSD.org>2021-06-10 12:04:37 +0000
commit981a60f112e213e7b8de04bf66588cab5c480b34 (patch)
treee883bb29b3e81474caf15083be88cfa6f018db59 /sys/amd64
parentf6d075ecd76925cbe56ea528a59bd74e4dd9451e (diff)
downloadsrc-981a60f112e213e7b8de04bf66588cab5c480b34.tar.gz
src-981a60f112e213e7b8de04bf66588cab5c480b34.zip
linux(4): Regen for pselect6_time64 system call.
MFC after: 2 weeks
Diffstat (limited to 'sys/amd64')
-rw-r--r--sys/amd64/linux32/linux32_proto.h7
-rw-r--r--sys/amd64/linux32/linux32_sysent.c2
-rw-r--r--sys/amd64/linux32/linux32_systrace_args.c34
3 files changed, 40 insertions, 3 deletions
diff --git a/sys/amd64/linux32/linux32_proto.h b/sys/amd64/linux32/linux32_proto.h
index 6d23a13ca4c3..4897fa3615ea 100644
--- a/sys/amd64/linux32/linux32_proto.h
+++ b/sys/amd64/linux32/linux32_proto.h
@@ -1558,7 +1558,12 @@ struct linux_utimensat_time64_args {
char flags_l_[PADL_(l_int)]; l_int flags; char flags_r_[PADR_(l_int)];
};
struct linux_pselect6_time64_args {
- register_t dummy;
+ char nfds_l_[PADL_(l_int)]; l_int nfds; char nfds_r_[PADR_(l_int)];
+ char readfds_l_[PADL_(l_fd_set *)]; l_fd_set * readfds; char readfds_r_[PADR_(l_fd_set *)];
+ char writefds_l_[PADL_(l_fd_set *)]; l_fd_set * writefds; char writefds_r_[PADR_(l_fd_set *)];
+ char exceptfds_l_[PADL_(l_fd_set *)]; l_fd_set * exceptfds; char exceptfds_r_[PADR_(l_fd_set *)];
+ char tsp_l_[PADL_(struct l_timespec64 *)]; struct l_timespec64 * tsp; char tsp_r_[PADR_(struct l_timespec64 *)];
+ char sig_l_[PADL_(l_uintptr_t *)]; l_uintptr_t * sig; char sig_r_[PADR_(l_uintptr_t *)];
};
struct linux_ppoll_time64_args {
register_t dummy;
diff --git a/sys/amd64/linux32/linux32_sysent.c b/sys/amd64/linux32/linux32_sysent.c
index d131db0a570c..de14c75605b5 100644
--- a/sys/amd64/linux32/linux32_sysent.c
+++ b/sys/amd64/linux32/linux32_sysent.c
@@ -430,7 +430,7 @@ struct sysent linux32_sysent[] = {
{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_timerfd_gettime64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 410 = linux_timerfd_gettime64 */
{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_timerfd_settime64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 411 = linux_timerfd_settime64 */
{ .sy_narg = AS(linux_utimensat_time64_args), .sy_call = (sy_call_t *)linux_utimensat_time64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 412 = linux_utimensat_time64 */
- { .sy_narg = 0, .sy_call = (sy_call_t *)linux_pselect6_time64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 413 = linux_pselect6_time64 */
+ { .sy_narg = AS(linux_pselect6_time64_args), .sy_call = (sy_call_t *)linux_pselect6_time64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 413 = linux_pselect6_time64 */
{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_ppoll_time64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 414 = linux_ppoll_time64 */
{ .sy_narg = 0, .sy_call = (sy_call_t *)nosys, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_ABSENT }, /* 415 = nosys */
{ .sy_narg = 0, .sy_call = (sy_call_t *)linux_io_pgetevents_time64, .sy_auevent = AUE_NULL, .sy_flags = 0, .sy_thrcnt = SY_THR_STATIC }, /* 416 = linux_io_pgetevents_time64 */
diff --git a/sys/amd64/linux32/linux32_systrace_args.c b/sys/amd64/linux32/linux32_systrace_args.c
index e31c309800e5..2f0683a053ef 100644
--- a/sys/amd64/linux32/linux32_systrace_args.c
+++ b/sys/amd64/linux32/linux32_systrace_args.c
@@ -3031,7 +3031,14 @@ systrace_args(int sysnum, void *params, uint64_t *uarg, int *n_args)
}
/* linux_pselect6_time64 */
case 413: {
- *n_args = 0;
+ struct linux_pselect6_time64_args *p = params;
+ iarg[0] = p->nfds; /* l_int */
+ uarg[1] = (intptr_t)p->readfds; /* l_fd_set * */
+ uarg[2] = (intptr_t)p->writefds; /* l_fd_set * */
+ uarg[3] = (intptr_t)p->exceptfds; /* l_fd_set * */
+ uarg[4] = (intptr_t)p->tsp; /* struct l_timespec64 * */
+ uarg[5] = (intptr_t)p->sig; /* l_uintptr_t * */
+ *n_args = 6;
break;
}
/* linux_ppoll_time64 */
@@ -8109,6 +8116,28 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
/* linux_pselect6_time64 */
case 413:
+ switch (ndx) {
+ case 0:
+ p = "l_int";
+ break;
+ case 1:
+ p = "userland l_fd_set *";
+ break;
+ case 2:
+ p = "userland l_fd_set *";
+ break;
+ case 3:
+ p = "userland l_fd_set *";
+ break;
+ case 4:
+ p = "userland struct l_timespec64 *";
+ break;
+ case 5:
+ p = "userland l_uintptr_t *";
+ break;
+ default:
+ break;
+ };
break;
/* linux_ppoll_time64 */
case 414:
@@ -9922,6 +9951,9 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
/* linux_pselect6_time64 */
case 413:
+ if (ndx == 0 || ndx == 1)
+ p = "int";
+ break;
/* linux_ppoll_time64 */
case 414:
/* linux_io_pgetevents_time64 */