Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 28 Apr 2019 14:19:31 +0000 (UTC)
From:      Dmitry Chagin <dchagin@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r346839 - in stable/11/sys: amd64/linux amd64/linux32 compat/linux i386/linux
Message-ID:  <201904281419.x3SEJVac045112@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dchagin
Date: Sun Apr 28 14:19:31 2019
New Revision: 346839
URL: https://svnweb.freebsd.org/changeset/base/346839

Log:
  MFC r345471, r345472, r346603:
  
  Update syscall.master to 5.0.
  
  For 32-bit Linuxulator, ipc() syscall was historically
  the entry point for the IPC API. Starting in Linux 4.18, direct
  syscalls are provided for the IPC. Enable it.

Modified:
  stable/11/sys/amd64/linux/linux_dummy.c
  stable/11/sys/amd64/linux/linux_proto.h
  stable/11/sys/amd64/linux/linux_syscall.h
  stable/11/sys/amd64/linux/linux_syscalls.c
  stable/11/sys/amd64/linux/linux_sysent.c
  stable/11/sys/amd64/linux/linux_systrace_args.c
  stable/11/sys/amd64/linux/syscalls.master
  stable/11/sys/amd64/linux32/linux32_dummy.c
  stable/11/sys/amd64/linux32/linux32_proto.h
  stable/11/sys/amd64/linux32/linux32_syscall.h
  stable/11/sys/amd64/linux32/linux32_syscalls.c
  stable/11/sys/amd64/linux32/linux32_sysent.c
  stable/11/sys/amd64/linux32/linux32_systrace_args.c
  stable/11/sys/amd64/linux32/syscalls.master
  stable/11/sys/compat/linux/linux_ipc.h
  stable/11/sys/i386/linux/linux.h
  stable/11/sys/i386/linux/linux_dummy.c
  stable/11/sys/i386/linux/linux_proto.h
  stable/11/sys/i386/linux/linux_syscall.h
  stable/11/sys/i386/linux/linux_syscalls.c
  stable/11/sys/i386/linux/linux_sysent.c
  stable/11/sys/i386/linux/linux_systrace_args.c
  stable/11/sys/i386/linux/syscalls.master
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/amd64/linux/linux_dummy.c
==============================================================================
--- stable/11/sys/amd64/linux/linux_dummy.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/linux_dummy.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -157,6 +157,16 @@ DUMMY(pwritev2);
 DUMMY(pkey_mprotect);
 DUMMY(pkey_alloc);
 DUMMY(pkey_free);
+/* Linux 4.11: */
+DUMMY(statx);
+/* Linux 4.18: */
+DUMMY(io_pgetevents);
+DUMMY(rseq);
+/* Linux 5.0: */
+DUMMY(pidfd_send_signal);
+DUMMY(io_uring_setup);
+DUMMY(io_uring_enter);
+DUMMY(io_uring_register);
 
 #define DUMMY_XATTR(s)						\
 int								\

Modified: stable/11/sys/amd64/linux/linux_proto.h
==============================================================================
--- stable/11/sys/amd64/linux/linux_proto.h	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/linux_proto.h	Sun Apr 28 14:19:31 2019	(r346839)
@@ -1212,6 +1212,34 @@ struct linux_pkey_alloc_args {
 struct linux_pkey_free_args {
 	char pkey_l_[PADL_(l_int)]; l_int pkey; char pkey_r_[PADR_(l_int)];
 };
+struct linux_statx_args {
+	char dirfd_l_[PADL_(l_int)]; l_int dirfd; char dirfd_r_[PADR_(l_int)];
+	char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)];
+	char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
+	char mask_l_[PADL_(l_uint)]; l_uint mask; char mask_r_[PADR_(l_uint)];
+	char statxbuf_l_[PADL_(void *)]; void * statxbuf; char statxbuf_r_[PADR_(void *)];
+};
+struct linux_io_pgetevents_args {
+	register_t dummy;
+};
+struct linux_rseq_args {
+	register_t dummy;
+};
+struct linux_pidfd_send_signal_args {
+	char pidfd_l_[PADL_(l_int)]; l_int pidfd; char pidfd_r_[PADR_(l_int)];
+	char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)];
+	char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)];
+	char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
+};
+struct linux_io_uring_setup_args {
+	register_t dummy;
+};
+struct linux_io_uring_enter_args {
+	register_t dummy;
+};
+struct linux_io_uring_register_args {
+	register_t dummy;
+};
 #define	nosys	linux_nosys
 int	linux_open(struct thread *, struct linux_open_args *);
 int	linux_newstat(struct thread *, struct linux_newstat_args *);
@@ -1478,6 +1506,13 @@ int	linux_pwritev2(struct thread *, struct linux_pwrit
 int	linux_pkey_mprotect(struct thread *, struct linux_pkey_mprotect_args *);
 int	linux_pkey_alloc(struct thread *, struct linux_pkey_alloc_args *);
 int	linux_pkey_free(struct thread *, struct linux_pkey_free_args *);
+int	linux_statx(struct thread *, struct linux_statx_args *);
+int	linux_io_pgetevents(struct thread *, struct linux_io_pgetevents_args *);
+int	linux_rseq(struct thread *, struct linux_rseq_args *);
+int	linux_pidfd_send_signal(struct thread *, struct linux_pidfd_send_signal_args *);
+int	linux_io_uring_setup(struct thread *, struct linux_io_uring_setup_args *);
+int	linux_io_uring_enter(struct thread *, struct linux_io_uring_enter_args *);
+int	linux_io_uring_register(struct thread *, struct linux_io_uring_register_args *);
 
 #ifdef COMPAT_43
 
@@ -1778,6 +1813,13 @@ int	linux_pkey_free(struct thread *, struct linux_pkey
 #define	LINUX_SYS_AUE_linux_pkey_mprotect	AUE_NULL
 #define	LINUX_SYS_AUE_linux_pkey_alloc	AUE_NULL
 #define	LINUX_SYS_AUE_linux_pkey_free	AUE_NULL
+#define	LINUX_SYS_AUE_linux_statx	AUE_NULL
+#define	LINUX_SYS_AUE_linux_io_pgetevents	AUE_NULL
+#define	LINUX_SYS_AUE_linux_rseq	AUE_NULL
+#define	LINUX_SYS_AUE_linux_pidfd_send_signal	AUE_NULL
+#define	LINUX_SYS_AUE_linux_io_uring_setup	AUE_NULL
+#define	LINUX_SYS_AUE_linux_io_uring_enter	AUE_NULL
+#define	LINUX_SYS_AUE_linux_io_uring_register	AUE_NULL
 
 #undef PAD_
 #undef PADL_

Modified: stable/11/sys/amd64/linux/linux_syscall.h
==============================================================================
--- stable/11/sys/amd64/linux/linux_syscall.h	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/linux_syscall.h	Sun Apr 28 14:19:31 2019	(r346839)
@@ -313,4 +313,11 @@
 #define	LINUX_SYS_linux_pkey_mprotect	329
 #define	LINUX_SYS_linux_pkey_alloc	330
 #define	LINUX_SYS_linux_pkey_free	331
-#define	LINUX_SYS_MAXSYSCALL	333
+#define	LINUX_SYS_linux_statx	332
+#define	LINUX_SYS_linux_io_pgetevents	333
+#define	LINUX_SYS_linux_rseq	334
+#define	LINUX_SYS_linux_pidfd_send_signal	424
+#define	LINUX_SYS_linux_io_uring_setup	425
+#define	LINUX_SYS_linux_io_uring_enter	426
+#define	LINUX_SYS_linux_io_uring_register	427
+#define	LINUX_SYS_MAXSYSCALL	429

Modified: stable/11/sys/amd64/linux/linux_syscalls.c
==============================================================================
--- stable/11/sys/amd64/linux/linux_syscalls.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/linux_syscalls.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -339,5 +339,101 @@ const char *linux_syscallnames[] = {
 	"linux_pkey_mprotect",			/* 329 = linux_pkey_mprotect */
 	"linux_pkey_alloc",			/* 330 = linux_pkey_alloc */
 	"linux_pkey_free",			/* 331 = linux_pkey_free */
-	"#332",			/* 332 = nosys */
+	"linux_statx",			/* 332 = linux_statx */
+	"linux_io_pgetevents",			/* 333 = linux_io_pgetevents */
+	"linux_rseq",			/* 334 = linux_rseq */
+	"#335",			/* 335 = nosys */
+	"#336",			/* 336 = nosys */
+	"#337",			/* 337 = nosys */
+	"#338",			/* 338 = nosys */
+	"#339",			/* 339 = nosys */
+	"#340",			/* 340 = nosys */
+	"#341",			/* 341 = nosys */
+	"#342",			/* 342 = nosys */
+	"#343",			/* 343 = nosys */
+	"#344",			/* 344 = nosys */
+	"#345",			/* 345 = nosys */
+	"#346",			/* 346 = nosys */
+	"#347",			/* 347 = nosys */
+	"#348",			/* 348 = nosys */
+	"#349",			/* 349 = nosys */
+	"#350",			/* 350 = nosys */
+	"#351",			/* 351 = nosys */
+	"#352",			/* 352 = nosys */
+	"#353",			/* 353 = nosys */
+	"#354",			/* 354 = nosys */
+	"#355",			/* 355 = nosys */
+	"#356",			/* 356 = nosys */
+	"#357",			/* 357 = nosys */
+	"#358",			/* 358 = nosys */
+	"#359",			/* 359 = nosys */
+	"#360",			/* 360 = nosys */
+	"#361",			/* 361 = nosys */
+	"#362",			/* 362 = nosys */
+	"#363",			/* 363 = nosys */
+	"#364",			/* 364 = nosys */
+	"#365",			/* 365 = nosys */
+	"#366",			/* 366 = nosys */
+	"#367",			/* 367 = nosys */
+	"#368",			/* 368 = nosys */
+	"#369",			/* 369 = nosys */
+	"#370",			/* 370 = nosys */
+	"#371",			/* 371 = nosys */
+	"#372",			/* 372 = nosys */
+	"#373",			/* 373 = nosys */
+	"#374",			/* 374 = nosys */
+	"#375",			/* 375 = nosys */
+	"#376",			/* 376 = nosys */
+	"#377",			/* 377 = nosys */
+	"#378",			/* 378 = nosys */
+	"#379",			/* 379 = nosys */
+	"#380",			/* 380 = nosys */
+	"#381",			/* 381 = nosys */
+	"#382",			/* 382 = nosys */
+	"#383",			/* 383 = nosys */
+	"#384",			/* 384 = nosys */
+	"#385",			/* 385 = nosys */
+	"#386",			/* 386 = nosys */
+	"#387",			/* 387 = nosys */
+	"#388",			/* 388 = nosys */
+	"#389",			/* 389 = nosys */
+	"#390",			/* 390 = nosys */
+	"#391",			/* 391 = nosys */
+	"#392",			/* 392 = nosys */
+	"#393",			/* 393 = nosys */
+	"#394",			/* 394 = nosys */
+	"#395",			/* 395 = nosys */
+	"#396",			/* 396 = nosys */
+	"#397",			/* 397 = nosys */
+	"#398",			/* 398 = nosys */
+	"#399",			/* 399 = nosys */
+	"#400",			/* 400 = nosys */
+	"#401",			/* 401 = nosys */
+	"#402",			/* 402 = nosys */
+	"#403",			/* 403 = nosys */
+	"#404",			/* 404 = nosys */
+	"#405",			/* 405 = nosys */
+	"#406",			/* 406 = nosys */
+	"#407",			/* 407 = nosys */
+	"#408",			/* 408 = nosys */
+	"#409",			/* 409 = nosys */
+	"#410",			/* 410 = nosys */
+	"#411",			/* 411 = nosys */
+	"#412",			/* 412 = nosys */
+	"#413",			/* 413 = nosys */
+	"#414",			/* 414 = nosys */
+	"#415",			/* 415 = nosys */
+	"#416",			/* 416 = nosys */
+	"#417",			/* 417 = nosys */
+	"#418",			/* 418 = nosys */
+	"#419",			/* 419 = nosys */
+	"#420",			/* 420 = nosys */
+	"#421",			/* 421 = nosys */
+	"#422",			/* 422 = nosys */
+	"#423",			/* 423 = nosys */
+	"linux_pidfd_send_signal",			/* 424 = linux_pidfd_send_signal */
+	"linux_io_uring_setup",			/* 425 = linux_io_uring_setup */
+	"linux_io_uring_enter",			/* 426 = linux_io_uring_enter */
+	"linux_io_uring_register",			/* 427 = linux_io_uring_register */
+	"#428",			/* 428 = nosys */
 };

Modified: stable/11/sys/amd64/linux/linux_sysent.c
==============================================================================
--- stable/11/sys/amd64/linux/linux_sysent.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/linux_sysent.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -349,5 +349,101 @@ struct sysent linux_sysent[] = {
 	{ AS(linux_pkey_mprotect_args), (sy_call_t *)linux_pkey_mprotect, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 329 = linux_pkey_mprotect */
 	{ AS(linux_pkey_alloc_args), (sy_call_t *)linux_pkey_alloc, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 330 = linux_pkey_alloc */
 	{ AS(linux_pkey_free_args), (sy_call_t *)linux_pkey_free, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 331 = linux_pkey_free */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 332 = nosys */
+	{ AS(linux_statx_args), (sy_call_t *)linux_statx, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 332 = linux_statx */
+	{ 0, (sy_call_t *)linux_io_pgetevents, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 333 = linux_io_pgetevents */
+	{ 0, (sy_call_t *)linux_rseq, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 334 = linux_rseq */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 335 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 336 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 337 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 338 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 339 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 340 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 341 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 342 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 343 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 344 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 345 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 346 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 347 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 348 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 349 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 350 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 351 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 352 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 353 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 354 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 355 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 356 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 357 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 358 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 359 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 360 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 361 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 362 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 363 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 364 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 365 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 366 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 367 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 368 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 369 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 370 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 371 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 372 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 373 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 374 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 375 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 376 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 377 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 378 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 379 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 380 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 381 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 382 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 383 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 384 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 385 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 386 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 387 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 388 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 389 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 390 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 391 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 392 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 393 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 394 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 395 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 396 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 397 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 398 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 399 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 400 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 401 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 402 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 403 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 404 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 405 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 406 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 407 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 408 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 409 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 410 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 411 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 412 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 413 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 414 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 415 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 416 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 417 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 418 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 419 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 420 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 421 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 422 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 423 = nosys */
+	{ AS(linux_pidfd_send_signal_args), (sy_call_t *)linux_pidfd_send_signal, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 424 = linux_pidfd_send_signal */
+	{ 0, (sy_call_t *)linux_io_uring_setup, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 425 = linux_io_uring_setup */
+	{ 0, (sy_call_t *)linux_io_uring_enter, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 426 = linux_io_uring_enter */
+	{ 0, (sy_call_t *)linux_io_uring_register, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 427 = linux_io_uring_register */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 428 = nosys */
 };

Modified: stable/11/sys/amd64/linux/linux_systrace_args.c
==============================================================================
--- stable/11/sys/amd64/linux/linux_systrace_args.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/linux_systrace_args.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -2447,6 +2447,52 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 		*n_args = 1;
 		break;
 	}
+	/* linux_statx */
+	case 332: {
+		struct linux_statx_args *p = params;
+		iarg[0] = p->dirfd; /* l_int */
+		uarg[1] = (intptr_t) p->pathname; /* const char * */
+		iarg[2] = p->flags; /* l_uint */
+		iarg[3] = p->mask; /* l_uint */
+		uarg[4] = (intptr_t) p->statxbuf; /* void * */
+		*n_args = 5;
+		break;
+	}
+	/* linux_io_pgetevents */
+	case 333: {
+		*n_args = 0;
+		break;
+	}
+	/* linux_rseq */
+	case 334: {
+		*n_args = 0;
+		break;
+	}
+	/* linux_pidfd_send_signal */
+	case 424: {
+		struct linux_pidfd_send_signal_args *p = params;
+		iarg[0] = p->pidfd; /* l_int */
+		iarg[1] = p->sig; /* l_int */
+		uarg[2] = (intptr_t) p->info; /* l_siginfo_t * */
+		iarg[3] = p->flags; /* l_uint */
+		*n_args = 4;
+		break;
+	}
+	/* linux_io_uring_setup */
+	case 425: {
+		*n_args = 0;
+		break;
+	}
+	/* linux_io_uring_enter */
+	case 426: {
+		*n_args = 0;
+		break;
+	}
+	/* linux_io_uring_register */
+	case 427: {
+		*n_args = 0;
+		break;
+	}
 	default:
 		*n_args = 0;
 		break;
@@ -6305,6 +6351,62 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *d
 			break;
 		};
 		break;
+	/* linux_statx */
+	case 332:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "const char *";
+			break;
+		case 2:
+			p = "l_uint";
+			break;
+		case 3:
+			p = "l_uint";
+			break;
+		case 4:
+			p = "void *";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* linux_io_pgetevents */
+	case 333:
+		break;
+	/* linux_rseq */
+	case 334:
+		break;
+	/* linux_pidfd_send_signal */
+	case 424:
+		switch(ndx) {
+		case 0:
+			p = "l_int";
+			break;
+		case 1:
+			p = "l_int";
+			break;
+		case 2:
+			p = "l_siginfo_t *";
+			break;
+		case 3:
+			p = "l_uint";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* linux_io_uring_setup */
+	case 425:
+		break;
+	/* linux_io_uring_enter */
+	case 426:
+		break;
+	/* linux_io_uring_register */
+	case 427:
+		break;
 	default:
 		break;
 	};
@@ -7647,6 +7749,26 @@ systrace_return_setargdesc(int sysnum, int ndx, char *
 		if (ndx == 0 || ndx == 1)
 			p = "int";
 		break;
+	/* linux_statx */
+	case 332:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* linux_io_pgetevents */
+	case 333:
+	/* linux_rseq */
+	case 334:
+	/* linux_pidfd_send_signal */
+	case 424:
+		if (ndx == 0 || ndx == 1)
+			p = "int";
+		break;
+	/* linux_io_uring_setup */
+	case 425:
+	/* linux_io_uring_enter */
+	case 426:
+	/* linux_io_uring_register */
+	case 427:
 	default:
 		break;
 	};

Modified: stable/11/sys/amd64/linux/syscalls.master
==============================================================================
--- stable/11/sys/amd64/linux/syscalls.master	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux/syscalls.master	Sun Apr 28 14:19:31 2019	(r346839)
@@ -595,7 +595,21 @@
 330	AUE_NULL	STD	{ int linux_pkey_alloc(l_ulong flags,		\
 				    l_ulong init_val); }
 331	AUE_NULL	STD	{ int linux_pkey_free(l_int pkey); }
+; Linux 4.11:
+332	AUE_NULL	STD	{ int linux_statx(l_int dirfd,			\
+				    const char *pathname, l_uint flags,		\
+				    l_uint mask, void *statxbuf); }
+; Linux 4.18:
+333	AUE_NULL	STD	{ int linux_io_pgetevents(void); }
+334	AUE_NULL	STD	{ int linux_rseq(void); }
+; Linux 5.0:
+335-423	AUE_NULL	UNIMPL	nosys
+424	AUE_NULL	STD	{ int linux_pidfd_send_signal(l_int pidfd,	\
+				    l_int sig, l_siginfo_t *info, l_uint flags); }
+425	AUE_NULL	STD	{ int linux_io_uring_setup(void); }
+426	AUE_NULL	STD	{ int linux_io_uring_enter(void); }
+427	AUE_NULL	STD	{ int linux_io_uring_register(void); }
 
 ; please, keep this line at the end.
-332	AUE_NULL	UNIMPL	nosys
+428	AUE_NULL	UNIMPL	nosys
 ; vim: syntax=off

Modified: stable/11/sys/amd64/linux32/linux32_dummy.c
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_dummy.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux32/linux32_dummy.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -163,6 +163,37 @@ DUMMY(pwritev2);
 DUMMY(pkey_mprotect);
 DUMMY(pkey_alloc);
 DUMMY(pkey_free);
+/* Linux 4.11: */
+DUMMY(statx);
+DUMMY(arch_prctl);
+/* Linux 4.18: */
+DUMMY(io_pgetevents);
+DUMMY(rseq);
+/* Linux 5.0: */
+DUMMY(clock_gettime64);
+DUMMY(clock_settime64);
+DUMMY(clock_adjtime64);
+DUMMY(clock_getres_time64);
+DUMMY(clock_nanosleep_time64);
+DUMMY(timer_gettime64);
+DUMMY(timer_settime64);
+DUMMY(timerfd_gettime64);
+DUMMY(timerfd_settime64);
+DUMMY(utimensat_time64);
+DUMMY(pselect6_time64);
+DUMMY(ppoll_time64);
+DUMMY(io_pgetevents_time64);
+DUMMY(recvmmsg_time64);
+DUMMY(mq_timedsend_time64);
+DUMMY(mq_timedreceive_time64);
+DUMMY(semtimedop_time64);
+DUMMY(rt_sigtimedwait_time64);
+DUMMY(futex_time64);
+DUMMY(sched_rr_get_interval_time64);
+DUMMY(pidfd_send_signal);
+DUMMY(io_uring_setup);
+DUMMY(io_uring_enter);
+DUMMY(io_uring_register);
 
 #define DUMMY_XATTR(s)						\
 int								\

Modified: stable/11/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_proto.h	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux32/linux32_proto.h	Sun Apr 28 14:19:31 2019	(r346839)
@@ -1364,6 +1364,149 @@ struct linux_pkey_alloc_args {
 struct linux_pkey_free_args {
 	char pkey_l_[PADL_(l_int)]; l_int pkey; char pkey_r_[PADR_(l_int)];
 };
+struct linux_statx_args {
+	char dirfd_l_[PADL_(l_int)]; l_int dirfd; char dirfd_r_[PADR_(l_int)];
+	char pathname_l_[PADL_(const char *)]; const char * pathname; char pathname_r_[PADR_(const char *)];
+	char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
+	char mask_l_[PADL_(l_uint)]; l_uint mask; char mask_r_[PADR_(l_uint)];
+	char statxbuf_l_[PADL_(void *)]; void * statxbuf; char statxbuf_r_[PADR_(void *)];
+};
+struct linux_arch_prctl_args {
+	char option_l_[PADL_(l_int)]; l_int option; char option_r_[PADR_(l_int)];
+	char arg2_l_[PADL_(l_ulong)]; l_ulong arg2; char arg2_r_[PADR_(l_ulong)];
+};
+struct linux_io_pgetevents_args {
+	register_t dummy;
+};
+struct linux_rseq_args {
+	register_t dummy;
+};
+struct linux_semget_args {
+	char key_l_[PADL_(l_key_t)]; l_key_t key; char key_r_[PADR_(l_key_t)];
+	char nsems_l_[PADL_(l_int)]; l_int nsems; char nsems_r_[PADR_(l_int)];
+	char semflg_l_[PADL_(l_int)]; l_int semflg; char semflg_r_[PADR_(l_int)];
+};
+struct linux_semctl_args {
+	char semid_l_[PADL_(l_int)]; l_int semid; char semid_r_[PADR_(l_int)];
+	char semnum_l_[PADL_(l_int)]; l_int semnum; char semnum_r_[PADR_(l_int)];
+	char cmd_l_[PADL_(l_int)]; l_int cmd; char cmd_r_[PADR_(l_int)];
+	char arg_l_[PADL_(union l_semun)]; union l_semun arg; char arg_r_[PADR_(union l_semun)];
+};
+struct linux_shmget_args {
+	char key_l_[PADL_(l_key_t)]; l_key_t key; char key_r_[PADR_(l_key_t)];
+	char size_l_[PADL_(l_size_t)]; l_size_t size; char size_r_[PADR_(l_size_t)];
+	char shmflg_l_[PADL_(l_int)]; l_int shmflg; char shmflg_r_[PADR_(l_int)];
+};
+struct linux_shmctl_args {
+	char shmid_l_[PADL_(l_int)]; l_int shmid; char shmid_r_[PADR_(l_int)];
+	char cmd_l_[PADL_(l_int)]; l_int cmd; char cmd_r_[PADR_(l_int)];
+	char buf_l_[PADL_(struct l_shmid_ds *)]; struct l_shmid_ds * buf; char buf_r_[PADR_(struct l_shmid_ds *)];
+};
+struct linux_shmat_args {
+	char shmid_l_[PADL_(l_int)]; l_int shmid; char shmid_r_[PADR_(l_int)];
+	char shmaddr_l_[PADL_(char *)]; char * shmaddr; char shmaddr_r_[PADR_(char *)];
+	char shmflg_l_[PADL_(l_int)]; l_int shmflg; char shmflg_r_[PADR_(l_int)];
+};
+struct linux_shmdt_args {
+	char shmaddr_l_[PADL_(char *)]; char * shmaddr; char shmaddr_r_[PADR_(char *)];
+};
+struct linux_msgget_args {
+	char key_l_[PADL_(l_key_t)]; l_key_t key; char key_r_[PADR_(l_key_t)];
+	char msgflg_l_[PADL_(l_int)]; l_int msgflg; char msgflg_r_[PADR_(l_int)];
+};
+struct linux_msgsnd_args {
+	char msqid_l_[PADL_(l_int)]; l_int msqid; char msqid_r_[PADR_(l_int)];
+	char msgp_l_[PADL_(struct l_msgbuf *)]; struct l_msgbuf * msgp; char msgp_r_[PADR_(struct l_msgbuf *)];
+	char msgsz_l_[PADL_(l_size_t)]; l_size_t msgsz; char msgsz_r_[PADR_(l_size_t)];
+	char msgflg_l_[PADL_(l_int)]; l_int msgflg; char msgflg_r_[PADR_(l_int)];
+};
+struct linux_msgrcv_args {
+	char msqid_l_[PADL_(l_int)]; l_int msqid; char msqid_r_[PADR_(l_int)];
+	char msgp_l_[PADL_(struct l_msgbuf *)]; struct l_msgbuf * msgp; char msgp_r_[PADR_(struct l_msgbuf *)];
+	char msgsz_l_[PADL_(l_size_t)]; l_size_t msgsz; char msgsz_r_[PADR_(l_size_t)];
+	char msgtyp_l_[PADL_(l_long)]; l_long msgtyp; char msgtyp_r_[PADR_(l_long)];
+	char msgflg_l_[PADL_(l_int)]; l_int msgflg; char msgflg_r_[PADR_(l_int)];
+};
+struct linux_msgctl_args {
+	char msqid_l_[PADL_(l_int)]; l_int msqid; char msqid_r_[PADR_(l_int)];
+	char cmd_l_[PADL_(l_int)]; l_int cmd; char cmd_r_[PADR_(l_int)];
+	char buf_l_[PADL_(struct l_msqid_ds *)]; struct l_msqid_ds * buf; char buf_r_[PADR_(struct l_msqid_ds *)];
+};
+struct linux_clock_gettime64_args {
+	register_t dummy;
+};
+struct linux_clock_settime64_args {
+	register_t dummy;
+};
+struct linux_clock_adjtime64_args {
+	register_t dummy;
+};
+struct linux_clock_getres_time64_args {
+	register_t dummy;
+};
+struct linux_clock_nanosleep_time64_args {
+	register_t dummy;
+};
+struct linux_timer_gettime64_args {
+	register_t dummy;
+};
+struct linux_timer_settime64_args {
+	register_t dummy;
+};
+struct linux_timerfd_gettime64_args {
+	register_t dummy;
+};
+struct linux_timerfd_settime64_args {
+	register_t dummy;
+};
+struct linux_utimensat_time64_args {
+	register_t dummy;
+};
+struct linux_pselect6_time64_args {
+	register_t dummy;
+};
+struct linux_ppoll_time64_args {
+	register_t dummy;
+};
+struct linux_io_pgetevents_time64_args {
+	register_t dummy;
+};
+struct linux_recvmmsg_time64_args {
+	register_t dummy;
+};
+struct linux_mq_timedsend_time64_args {
+	register_t dummy;
+};
+struct linux_mq_timedreceive_time64_args {
+	register_t dummy;
+};
+struct linux_semtimedop_time64_args {
+	register_t dummy;
+};
+struct linux_rt_sigtimedwait_time64_args {
+	register_t dummy;
+};
+struct linux_futex_time64_args {
+	register_t dummy;
+};
+struct linux_sched_rr_get_interval_time64_args {
+	register_t dummy;
+};
+struct linux_pidfd_send_signal_args {
+	char pidfd_l_[PADL_(l_int)]; l_int pidfd; char pidfd_r_[PADR_(l_int)];
+	char sig_l_[PADL_(l_int)]; l_int sig; char sig_r_[PADR_(l_int)];
+	char info_l_[PADL_(l_siginfo_t *)]; l_siginfo_t * info; char info_r_[PADR_(l_siginfo_t *)];
+	char flags_l_[PADL_(l_uint)]; l_uint flags; char flags_r_[PADR_(l_uint)];
+};
+struct linux_io_uring_setup_args {
+	register_t dummy;
+};
+struct linux_io_uring_enter_args {
+	register_t dummy;
+};
+struct linux_io_uring_register_args {
+	register_t dummy;
+};
 #define	nosys	linux_nosys
 int	linux_exit(struct thread *, struct linux_exit_args *);
 int	linux_fork(struct thread *, struct linux_fork_args *);
@@ -1672,6 +1815,44 @@ int	linux_pwritev2(struct thread *, struct linux_pwrit
 int	linux_pkey_mprotect(struct thread *, struct linux_pkey_mprotect_args *);
 int	linux_pkey_alloc(struct thread *, struct linux_pkey_alloc_args *);
 int	linux_pkey_free(struct thread *, struct linux_pkey_free_args *);
+int	linux_statx(struct thread *, struct linux_statx_args *);
+int	linux_arch_prctl(struct thread *, struct linux_arch_prctl_args *);
+int	linux_io_pgetevents(struct thread *, struct linux_io_pgetevents_args *);
+int	linux_rseq(struct thread *, struct linux_rseq_args *);
+int	linux_semget(struct thread *, struct linux_semget_args *);
+int	linux_semctl(struct thread *, struct linux_semctl_args *);
+int	linux_shmget(struct thread *, struct linux_shmget_args *);
+int	linux_shmctl(struct thread *, struct linux_shmctl_args *);
+int	linux_shmat(struct thread *, struct linux_shmat_args *);
+int	linux_shmdt(struct thread *, struct linux_shmdt_args *);
+int	linux_msgget(struct thread *, struct linux_msgget_args *);
+int	linux_msgsnd(struct thread *, struct linux_msgsnd_args *);
+int	linux_msgrcv(struct thread *, struct linux_msgrcv_args *);
+int	linux_msgctl(struct thread *, struct linux_msgctl_args *);
+int	linux_clock_gettime64(struct thread *, struct linux_clock_gettime64_args *);
+int	linux_clock_settime64(struct thread *, struct linux_clock_settime64_args *);
+int	linux_clock_adjtime64(struct thread *, struct linux_clock_adjtime64_args *);
+int	linux_clock_getres_time64(struct thread *, struct linux_clock_getres_time64_args *);
+int	linux_clock_nanosleep_time64(struct thread *, struct linux_clock_nanosleep_time64_args *);
+int	linux_timer_gettime64(struct thread *, struct linux_timer_gettime64_args *);
+int	linux_timer_settime64(struct thread *, struct linux_timer_settime64_args *);
+int	linux_timerfd_gettime64(struct thread *, struct linux_timerfd_gettime64_args *);
+int	linux_timerfd_settime64(struct thread *, struct linux_timerfd_settime64_args *);
+int	linux_utimensat_time64(struct thread *, struct linux_utimensat_time64_args *);
+int	linux_pselect6_time64(struct thread *, struct linux_pselect6_time64_args *);
+int	linux_ppoll_time64(struct thread *, struct linux_ppoll_time64_args *);
+int	linux_io_pgetevents_time64(struct thread *, struct linux_io_pgetevents_time64_args *);
+int	linux_recvmmsg_time64(struct thread *, struct linux_recvmmsg_time64_args *);
+int	linux_mq_timedsend_time64(struct thread *, struct linux_mq_timedsend_time64_args *);
+int	linux_mq_timedreceive_time64(struct thread *, struct linux_mq_timedreceive_time64_args *);
+int	linux_semtimedop_time64(struct thread *, struct linux_semtimedop_time64_args *);
+int	linux_rt_sigtimedwait_time64(struct thread *, struct linux_rt_sigtimedwait_time64_args *);
+int	linux_futex_time64(struct thread *, struct linux_futex_time64_args *);
+int	linux_sched_rr_get_interval_time64(struct thread *, struct linux_sched_rr_get_interval_time64_args *);
+int	linux_pidfd_send_signal(struct thread *, struct linux_pidfd_send_signal_args *);
+int	linux_io_uring_setup(struct thread *, struct linux_io_uring_setup_args *);
+int	linux_io_uring_enter(struct thread *, struct linux_io_uring_enter_args *);
+int	linux_io_uring_register(struct thread *, struct linux_io_uring_register_args *);
 
 #ifdef COMPAT_43
 
@@ -2014,6 +2195,44 @@ int	linux_pkey_free(struct thread *, struct linux_pkey
 #define	LINUX32_SYS_AUE_linux_pkey_mprotect	AUE_NULL
 #define	LINUX32_SYS_AUE_linux_pkey_alloc	AUE_NULL
 #define	LINUX32_SYS_AUE_linux_pkey_free	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_statx	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_arch_prctl	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_io_pgetevents	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_rseq	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_semget	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_semctl	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_shmget	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_shmctl	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_shmat	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_shmdt	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_msgget	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_msgsnd	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_msgrcv	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_msgctl	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_clock_gettime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_clock_settime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_clock_adjtime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_clock_getres_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_clock_nanosleep_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_timer_gettime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_timer_settime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_timerfd_gettime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_timerfd_settime64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_utimensat_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_pselect6_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_ppoll_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_io_pgetevents_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_recvmmsg_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_mq_timedsend_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_mq_timedreceive_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_semtimedop_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_rt_sigtimedwait_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_futex_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_sched_rr_get_interval_time64	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_pidfd_send_signal	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_io_uring_setup	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_io_uring_enter	AUE_NULL
+#define	LINUX32_SYS_AUE_linux_io_uring_register	AUE_NULL
 
 #undef PAD_
 #undef PADL_

Modified: stable/11/sys/amd64/linux32/linux32_syscall.h
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_syscall.h	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux32/linux32_syscall.h	Sun Apr 28 14:19:31 2019	(r346839)
@@ -350,4 +350,42 @@
 #define	LINUX32_SYS_linux_pkey_mprotect	380
 #define	LINUX32_SYS_linux_pkey_alloc	381
 #define	LINUX32_SYS_linux_pkey_free	382
-#define	LINUX32_SYS_MAXSYSCALL	384
+#define	LINUX32_SYS_linux_statx	383
+#define	LINUX32_SYS_linux_arch_prctl	384
+#define	LINUX32_SYS_linux_io_pgetevents	385
+#define	LINUX32_SYS_linux_rseq	386
+#define	LINUX32_SYS_linux_semget	393
+#define	LINUX32_SYS_linux_semctl	394
+#define	LINUX32_SYS_linux_shmget	395
+#define	LINUX32_SYS_linux_shmctl	396
+#define	LINUX32_SYS_linux_shmat	397
+#define	LINUX32_SYS_linux_shmdt	398
+#define	LINUX32_SYS_linux_msgget	399
+#define	LINUX32_SYS_linux_msgsnd	400
+#define	LINUX32_SYS_linux_msgrcv	401
+#define	LINUX32_SYS_linux_msgctl	402
+#define	LINUX32_SYS_linux_clock_gettime64	403
+#define	LINUX32_SYS_linux_clock_settime64	404
+#define	LINUX32_SYS_linux_clock_adjtime64	405
+#define	LINUX32_SYS_linux_clock_getres_time64	406
+#define	LINUX32_SYS_linux_clock_nanosleep_time64	407
+#define	LINUX32_SYS_linux_timer_gettime64	408
+#define	LINUX32_SYS_linux_timer_settime64	409
+#define	LINUX32_SYS_linux_timerfd_gettime64	410
+#define	LINUX32_SYS_linux_timerfd_settime64	411
+#define	LINUX32_SYS_linux_utimensat_time64	412
+#define	LINUX32_SYS_linux_pselect6_time64	413
+#define	LINUX32_SYS_linux_ppoll_time64	414
+#define	LINUX32_SYS_linux_io_pgetevents_time64	416
+#define	LINUX32_SYS_linux_recvmmsg_time64	417
+#define	LINUX32_SYS_linux_mq_timedsend_time64	418
+#define	LINUX32_SYS_linux_mq_timedreceive_time64	419
+#define	LINUX32_SYS_linux_semtimedop_time64	420
+#define	LINUX32_SYS_linux_rt_sigtimedwait_time64	421
+#define	LINUX32_SYS_linux_futex_time64	422
+#define	LINUX32_SYS_linux_sched_rr_get_interval_time64	423
+#define	LINUX32_SYS_linux_pidfd_send_signal	424
+#define	LINUX32_SYS_linux_io_uring_setup	425
+#define	LINUX32_SYS_linux_io_uring_enter	426
+#define	LINUX32_SYS_linux_io_uring_register	427
+#define	LINUX32_SYS_MAXSYSCALL	429

Modified: stable/11/sys/amd64/linux32/linux32_syscalls.c
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_syscalls.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux32/linux32_syscalls.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -390,5 +390,50 @@ const char *linux32_syscallnames[] = {
 	"linux_pkey_mprotect",			/* 380 = linux_pkey_mprotect */
 	"linux_pkey_alloc",			/* 381 = linux_pkey_alloc */
 	"linux_pkey_free",			/* 382 = linux_pkey_free */
-	"#383",			/* 383 = nosys */
+	"linux_statx",			/* 383 = linux_statx */
+	"linux_arch_prctl",			/* 384 = linux_arch_prctl */
+	"linux_io_pgetevents",			/* 385 = linux_io_pgetevents */
+	"linux_rseq",			/* 386 = linux_rseq */
+	"#387",			/* 387 = nosys */
+	"#388",			/* 388 = nosys */
+	"#389",			/* 389 = nosys */
+	"#390",			/* 390 = nosys */
+	"#391",			/* 391 = nosys */
+	"#392",			/* 392 = nosys */
+	"linux_semget",			/* 393 = linux_semget */
+	"linux_semctl",			/* 394 = linux_semctl */
+	"linux_shmget",			/* 395 = linux_shmget */
+	"linux_shmctl",			/* 396 = linux_shmctl */
+	"linux_shmat",			/* 397 = linux_shmat */
+	"linux_shmdt",			/* 398 = linux_shmdt */
+	"linux_msgget",			/* 399 = linux_msgget */
+	"linux_msgsnd",			/* 400 = linux_msgsnd */
+	"linux_msgrcv",			/* 401 = linux_msgrcv */
+	"linux_msgctl",			/* 402 = linux_msgctl */
+	"linux_clock_gettime64",			/* 403 = linux_clock_gettime64 */
+	"linux_clock_settime64",			/* 404 = linux_clock_settime64 */
+	"linux_clock_adjtime64",			/* 405 = linux_clock_adjtime64 */
+	"linux_clock_getres_time64",			/* 406 = linux_clock_getres_time64 */
+	"linux_clock_nanosleep_time64",			/* 407 = linux_clock_nanosleep_time64 */
+	"linux_timer_gettime64",			/* 408 = linux_timer_gettime64 */
+	"linux_timer_settime64",			/* 409 = linux_timer_settime64 */
+	"linux_timerfd_gettime64",			/* 410 = linux_timerfd_gettime64 */
+	"linux_timerfd_settime64",			/* 411 = linux_timerfd_settime64 */
+	"linux_utimensat_time64",			/* 412 = linux_utimensat_time64 */
+	"linux_pselect6_time64",			/* 413 = linux_pselect6_time64 */
+	"linux_ppoll_time64",			/* 414 = linux_ppoll_time64 */
+	"#415",			/* 415 = nosys */
+	"linux_io_pgetevents_time64",			/* 416 = linux_io_pgetevents_time64 */
+	"linux_recvmmsg_time64",			/* 417 = linux_recvmmsg_time64 */
+	"linux_mq_timedsend_time64",			/* 418 = linux_mq_timedsend_time64 */
+	"linux_mq_timedreceive_time64",			/* 419 = linux_mq_timedreceive_time64 */
+	"linux_semtimedop_time64",			/* 420 = linux_semtimedop_time64 */
+	"linux_rt_sigtimedwait_time64",			/* 421 = linux_rt_sigtimedwait_time64 */
+	"linux_futex_time64",			/* 422 = linux_futex_time64 */
+	"linux_sched_rr_get_interval_time64",			/* 423 = linux_sched_rr_get_interval_time64 */
+	"linux_pidfd_send_signal",			/* 424 = linux_pidfd_send_signal */
+	"linux_io_uring_setup",			/* 425 = linux_io_uring_setup */
+	"linux_io_uring_enter",			/* 426 = linux_io_uring_enter */
+	"linux_io_uring_register",			/* 427 = linux_io_uring_register */
+	"#428",			/* 428 = nosys */
 };

Modified: stable/11/sys/amd64/linux32/linux32_sysent.c
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_sysent.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux32/linux32_sysent.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -401,5 +401,50 @@ struct sysent linux32_sysent[] = {
 	{ AS(linux_pkey_mprotect_args), (sy_call_t *)linux_pkey_mprotect, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 380 = linux_pkey_mprotect */
 	{ AS(linux_pkey_alloc_args), (sy_call_t *)linux_pkey_alloc, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 381 = linux_pkey_alloc */
 	{ AS(linux_pkey_free_args), (sy_call_t *)linux_pkey_free, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 382 = linux_pkey_free */
-	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 383 = nosys */
+	{ AS(linux_statx_args), (sy_call_t *)linux_statx, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 383 = linux_statx */
+	{ AS(linux_arch_prctl_args), (sy_call_t *)linux_arch_prctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 384 = linux_arch_prctl */
+	{ 0, (sy_call_t *)linux_io_pgetevents, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 385 = linux_io_pgetevents */
+	{ 0, (sy_call_t *)linux_rseq, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 386 = linux_rseq */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 387 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 388 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 389 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 390 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 391 = nosys */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 392 = nosys */
+	{ AS(linux_semget_args), (sy_call_t *)linux_semget, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 393 = linux_semget */
+	{ AS(linux_semctl_args), (sy_call_t *)linux_semctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 394 = linux_semctl */
+	{ AS(linux_shmget_args), (sy_call_t *)linux_shmget, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 395 = linux_shmget */
+	{ AS(linux_shmctl_args), (sy_call_t *)linux_shmctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 396 = linux_shmctl */
+	{ AS(linux_shmat_args), (sy_call_t *)linux_shmat, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 397 = linux_shmat */
+	{ AS(linux_shmdt_args), (sy_call_t *)linux_shmdt, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 398 = linux_shmdt */
+	{ AS(linux_msgget_args), (sy_call_t *)linux_msgget, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 399 = linux_msgget */
+	{ AS(linux_msgsnd_args), (sy_call_t *)linux_msgsnd, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 400 = linux_msgsnd */
+	{ AS(linux_msgrcv_args), (sy_call_t *)linux_msgrcv, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 401 = linux_msgrcv */
+	{ AS(linux_msgctl_args), (sy_call_t *)linux_msgctl, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 402 = linux_msgctl */
+	{ 0, (sy_call_t *)linux_clock_gettime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 403 = linux_clock_gettime64 */
+	{ 0, (sy_call_t *)linux_clock_settime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 404 = linux_clock_settime64 */
+	{ 0, (sy_call_t *)linux_clock_adjtime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 405 = linux_clock_adjtime64 */
+	{ 0, (sy_call_t *)linux_clock_getres_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 406 = linux_clock_getres_time64 */
+	{ 0, (sy_call_t *)linux_clock_nanosleep_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 407 = linux_clock_nanosleep_time64 */
+	{ 0, (sy_call_t *)linux_timer_gettime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 408 = linux_timer_gettime64 */
+	{ 0, (sy_call_t *)linux_timer_settime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 409 = linux_timer_settime64 */
+	{ 0, (sy_call_t *)linux_timerfd_gettime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 410 = linux_timerfd_gettime64 */
+	{ 0, (sy_call_t *)linux_timerfd_settime64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 411 = linux_timerfd_settime64 */
+	{ 0, (sy_call_t *)linux_utimensat_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 412 = linux_utimensat_time64 */
+	{ 0, (sy_call_t *)linux_pselect6_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 413 = linux_pselect6_time64 */
+	{ 0, (sy_call_t *)linux_ppoll_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 414 = linux_ppoll_time64 */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 415 = nosys */
+	{ 0, (sy_call_t *)linux_io_pgetevents_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 416 = linux_io_pgetevents_time64 */
+	{ 0, (sy_call_t *)linux_recvmmsg_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 417 = linux_recvmmsg_time64 */
+	{ 0, (sy_call_t *)linux_mq_timedsend_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 418 = linux_mq_timedsend_time64 */
+	{ 0, (sy_call_t *)linux_mq_timedreceive_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 419 = linux_mq_timedreceive_time64 */
+	{ 0, (sy_call_t *)linux_semtimedop_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 420 = linux_semtimedop_time64 */
+	{ 0, (sy_call_t *)linux_rt_sigtimedwait_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 421 = linux_rt_sigtimedwait_time64 */
+	{ 0, (sy_call_t *)linux_futex_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 422 = linux_futex_time64 */
+	{ 0, (sy_call_t *)linux_sched_rr_get_interval_time64, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 423 = linux_sched_rr_get_interval_time64 */
+	{ AS(linux_pidfd_send_signal_args), (sy_call_t *)linux_pidfd_send_signal, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 424 = linux_pidfd_send_signal */
+	{ 0, (sy_call_t *)linux_io_uring_setup, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 425 = linux_io_uring_setup */
+	{ 0, (sy_call_t *)linux_io_uring_enter, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 426 = linux_io_uring_enter */
+	{ 0, (sy_call_t *)linux_io_uring_register, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 427 = linux_io_uring_register */
+	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 428 = nosys */
 };

Modified: stable/11/sys/amd64/linux32/linux32_systrace_args.c
==============================================================================
--- stable/11/sys/amd64/linux32/linux32_systrace_args.c	Sun Apr 28 14:16:00 2019	(r346838)
+++ stable/11/sys/amd64/linux32/linux32_systrace_args.c	Sun Apr 28 14:19:31 2019	(r346839)
@@ -2708,6 +2708,251 @@ systrace_args(int sysnum, void *params, uint64_t *uarg
 		*n_args = 1;
 		break;
 	}
+	/* linux_statx */
+	case 383: {
+		struct linux_statx_args *p = params;
+		iarg[0] = p->dirfd; /* l_int */
+		uarg[1] = (intptr_t) p->pathname; /* const char * */
+		iarg[2] = p->flags; /* l_uint */
+		iarg[3] = p->mask; /* l_uint */
+		uarg[4] = (intptr_t) p->statxbuf; /* void * */
+		*n_args = 5;
+		break;
+	}
+	/* linux_arch_prctl */
+	case 384: {
+		struct linux_arch_prctl_args *p = params;
+		iarg[0] = p->option; /* l_int */
+		iarg[1] = p->arg2; /* l_ulong */
+		*n_args = 2;
+		break;
+	}
+	/* linux_io_pgetevents */
+	case 385: {
+		*n_args = 0;
+		break;
+	}
+	/* linux_rseq */
+	case 386: {
+		*n_args = 0;
+		break;
+	}
+	/* linux_semget */
+	case 393: {
+		struct linux_semget_args *p = params;
+		iarg[0] = p->key; /* l_key_t */
+		iarg[1] = p->nsems; /* l_int */
+		iarg[2] = p->semflg; /* l_int */
+		*n_args = 3;
+		break;
+	}
+	/* linux_semctl */
+	case 394: {
+		struct linux_semctl_args *p = params;
+		iarg[0] = p->semid; /* l_int */
+		iarg[1] = p->semnum; /* l_int */
+		iarg[2] = p->cmd; /* l_int */
+		uarg[3] = p->arg.buf; /* union l_semun */
+		*n_args = 4;
+		break;
+	}
+	/* linux_shmget */
+	case 395: {
+		struct linux_shmget_args *p = params;
+		iarg[0] = p->key; /* l_key_t */
+		iarg[1] = p->size; /* l_size_t */
+		iarg[2] = p->shmflg; /* l_int */
+		*n_args = 3;
+		break;
+	}
+	/* linux_shmctl */
+	case 396: {
+		struct linux_shmctl_args *p = params;
+		iarg[0] = p->shmid; /* l_int */
+		iarg[1] = p->cmd; /* l_int */
+		uarg[2] = (intptr_t) p->buf; /* struct l_shmid_ds * */
+		*n_args = 3;
+		break;
+	}
+	/* linux_shmat */
+	case 397: {
+		struct linux_shmat_args *p = params;
+		iarg[0] = p->shmid; /* l_int */
+		uarg[1] = (intptr_t) p->shmaddr; /* char * */
+		iarg[2] = p->shmflg; /* l_int */
+		*n_args = 3;
+		break;
+	}
+	/* linux_shmdt */
+	case 398: {
+		struct linux_shmdt_args *p = params;
+		uarg[0] = (intptr_t) p->shmaddr; /* char * */

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201904281419.x3SEJVac045112>