Module Name: src Committed By: christos Date: Sat Jul 29 15:05:46 UTC 2023
Modified Files: src/sys/compat/linux/arch/aarch64: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c linux_systrace_args.c src/sys/compat/linux/arch/alpha: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c src/sys/compat/linux/arch/amd64: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c linux_systrace_args.c src/sys/compat/linux/arch/arm: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c linux_systrace_args.c src/sys/compat/linux/arch/i386: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c linux_systrace_args.c src/sys/compat/linux/arch/m68k: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c src/sys/compat/linux/arch/mips: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c src/sys/compat/linux/arch/powerpc: linux_syscall.h linux_syscallargs.h linux_syscalls.c linux_sysent.c Log Message: regen To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/sys/compat/linux/arch/aarch64/linux_syscall.h \ src/sys/compat/linux/arch/aarch64/linux_syscallargs.h \ src/sys/compat/linux/arch/aarch64/linux_syscalls.c \ src/sys/compat/linux/arch/aarch64/linux_sysent.c \ src/sys/compat/linux/arch/aarch64/linux_systrace_args.c cvs rdiff -u -r1.116 -r1.117 src/sys/compat/linux/arch/alpha/linux_syscall.h \ src/sys/compat/linux/arch/alpha/linux_sysent.c cvs rdiff -u -r1.115 -r1.116 \ src/sys/compat/linux/arch/alpha/linux_syscallargs.h cvs rdiff -u -r1.117 -r1.118 src/sys/compat/linux/arch/alpha/linux_syscalls.c cvs rdiff -u -r1.78 -r1.79 src/sys/compat/linux/arch/amd64/linux_syscall.h \ src/sys/compat/linux/arch/amd64/linux_syscallargs.h \ src/sys/compat/linux/arch/amd64/linux_syscalls.c \ src/sys/compat/linux/arch/amd64/linux_sysent.c cvs rdiff -u -r1.22 -r1.23 \ src/sys/compat/linux/arch/amd64/linux_systrace_args.c cvs rdiff -u -r1.89 -r1.90 src/sys/compat/linux/arch/arm/linux_syscall.h \ src/sys/compat/linux/arch/arm/linux_syscallargs.h \ src/sys/compat/linux/arch/arm/linux_syscalls.c \ src/sys/compat/linux/arch/arm/linux_sysent.c cvs rdiff -u -r1.22 -r1.23 \ src/sys/compat/linux/arch/arm/linux_systrace_args.c cvs rdiff -u -r1.123 -r1.124 src/sys/compat/linux/arch/i386/linux_syscall.h \ src/sys/compat/linux/arch/i386/linux_syscallargs.h \ src/sys/compat/linux/arch/i386/linux_sysent.c cvs rdiff -u -r1.124 -r1.125 src/sys/compat/linux/arch/i386/linux_syscalls.c cvs rdiff -u -r1.18 -r1.19 \ src/sys/compat/linux/arch/i386/linux_systrace_args.c cvs rdiff -u -r1.115 -r1.116 src/sys/compat/linux/arch/m68k/linux_syscall.h \ src/sys/compat/linux/arch/m68k/linux_syscalls.c \ src/sys/compat/linux/arch/m68k/linux_sysent.c cvs rdiff -u -r1.114 -r1.115 \ src/sys/compat/linux/arch/m68k/linux_syscallargs.h cvs rdiff -u -r1.87 -r1.88 src/sys/compat/linux/arch/mips/linux_syscall.h cvs rdiff -u -r1.86 -r1.87 src/sys/compat/linux/arch/mips/linux_syscallargs.h \ src/sys/compat/linux/arch/mips/linux_syscalls.c \ src/sys/compat/linux/arch/mips/linux_sysent.c cvs rdiff -u -r1.93 -r1.94 src/sys/compat/linux/arch/powerpc/linux_syscall.h \ src/sys/compat/linux/arch/powerpc/linux_sysent.c cvs rdiff -u -r1.92 -r1.93 \ src/sys/compat/linux/arch/powerpc/linux_syscallargs.h \ src/sys/compat/linux/arch/powerpc/linux_syscalls.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/linux/arch/aarch64/linux_syscall.h diff -u src/sys/compat/linux/arch/aarch64/linux_syscall.h:1.7 src/sys/compat/linux/arch/aarch64/linux_syscall.h:1.8 --- src/sys/compat/linux/arch/aarch64/linux_syscall.h:1.7 Sat Jul 29 02:50:47 2023 +++ src/sys/compat/linux/arch/aarch64/linux_syscall.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.7 2023/07/29 06:50:47 rin Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.8 2023/07/29 15:05:45 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.8 2023/07/29 06:47:26 rin Exp + * created from NetBSD: syscalls.master,v 1.9 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -528,6 +528,9 @@ /* syscall: "recvmsg" ret: "ssize_t" args: "int" "struct linux_msghdr *" "int" */ #define LINUX_SYS_recvmsg 212 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 213 + /* syscall: "brk" ret: "int" args: "char *" */ #define LINUX_SYS_brk 214 @@ -603,6 +606,9 @@ /* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ #define LINUX_SYS_statx 291 +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 + /* syscall: "nosys" ret: "int" args: */ #define LINUX_SYS_nosys 440 Index: src/sys/compat/linux/arch/aarch64/linux_syscallargs.h diff -u src/sys/compat/linux/arch/aarch64/linux_syscallargs.h:1.7 src/sys/compat/linux/arch/aarch64/linux_syscallargs.h:1.8 --- src/sys/compat/linux/arch/aarch64/linux_syscallargs.h:1.7 Sat Jul 29 02:50:47 2023 +++ src/sys/compat/linux/arch/aarch64/linux_syscallargs.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.7 2023/07/29 06:50:47 rin Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.8 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.8 2023/07/29 06:47:26 rin Exp + * created from NetBSD: syscalls.master,v 1.9 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -889,6 +889,13 @@ struct linux_sys_recvmsg_args { }; check_syscall_args(linux_sys_recvmsg) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_brk_args { syscallarg(char *) nsize; }; @@ -1012,6 +1019,13 @@ struct linux_sys_statx_args { }; check_syscall_args(linux_sys_statx) +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1372,6 +1386,8 @@ int linux_sys_sendmsg(struct lwp *, cons int linux_sys_recvmsg(struct lwp *, const struct linux_sys_recvmsg_args *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_brk(struct lwp *, const struct linux_sys_brk_args *, register_t *); int sys_munmap(struct lwp *, const struct sys_munmap_args *, register_t *); @@ -1422,6 +1438,8 @@ int linux_sys_memfd_create(struct lwp *, int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_nosys(struct lwp *, const void *, register_t *); int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); Index: src/sys/compat/linux/arch/aarch64/linux_syscalls.c diff -u src/sys/compat/linux/arch/aarch64/linux_syscalls.c:1.7 src/sys/compat/linux/arch/aarch64/linux_syscalls.c:1.8 --- src/sys/compat/linux/arch/aarch64/linux_syscalls.c:1.7 Sat Jul 29 02:50:47 2023 +++ src/sys/compat/linux/arch/aarch64/linux_syscalls.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.7 2023/07/29 06:50:47 rin Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.8 2023/07/29 15:05:45 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.8 2023/07/29 06:47:26 rin Exp + * created from NetBSD: syscalls.master,v 1.9 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.7 2023/07/29 06:50:47 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.8 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT) @@ -274,7 +274,7 @@ const char *const linux_syscallnames[] = /* 210 */ "shutdown", /* 211 */ "sendmsg", /* 212 */ "recvmsg", - /* 213 */ "#213 (unimplemented readahead)", + /* 213 */ "readahead", /* 214 */ "brk", /* 215 */ "munmap", /* 216 */ "mremap", @@ -497,7 +497,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented fspick)", /* 434 */ "#434 (unimplemented pidfd_open)", /* 435 */ "#435 (unimplemented clone3)", - /* 436 */ "#436 (unimplemented)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented openat2)", /* 438 */ "#438 (unimplemented pidfd_getfd)", /* 439 */ "#439 (unimplemented faccessat2)", @@ -812,7 +812,7 @@ const char *const altlinux_syscallnames[ /* 210 */ NULL, /* shutdown */ /* 211 */ NULL, /* sendmsg */ /* 212 */ NULL, /* recvmsg */ - /* 213 */ NULL, /* unimplemented readahead */ + /* 213 */ NULL, /* readahead */ /* 214 */ NULL, /* brk */ /* 215 */ NULL, /* munmap */ /* 216 */ NULL, /* mremap */ @@ -1035,7 +1035,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented fspick */ /* 434 */ NULL, /* unimplemented pidfd_open */ /* 435 */ NULL, /* unimplemented clone3 */ - /* 436 */ NULL, /* unimplemented */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented openat2 */ /* 438 */ NULL, /* unimplemented pidfd_getfd */ /* 439 */ NULL, /* unimplemented faccessat2 */ Index: src/sys/compat/linux/arch/aarch64/linux_sysent.c diff -u src/sys/compat/linux/arch/aarch64/linux_sysent.c:1.7 src/sys/compat/linux/arch/aarch64/linux_sysent.c:1.8 --- src/sys/compat/linux/arch/aarch64/linux_sysent.c:1.7 Sat Jul 29 02:50:47 2023 +++ src/sys/compat/linux/arch/aarch64/linux_sysent.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.7 2023/07/29 06:50:47 rin Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.8 2023/07/29 15:05:45 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.8 2023/07/29 06:47:26 rin Exp + * created from NetBSD: syscalls.master,v 1.9 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.7 2023/07/29 06:50:47 rin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.8 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #include "opt_sysv.h" @@ -995,8 +995,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_recvmsg }, /* 212 = recvmsg */ { - .sy_call = linux_sys_nosys, - }, /* 213 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 213 = readahead */ { ns(struct linux_sys_brk_args), .sy_flags = SYCALL_ARG_PTR, @@ -1710,8 +1712,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/aarch64/linux_systrace_args.c diff -u src/sys/compat/linux/arch/aarch64/linux_systrace_args.c:1.7 src/sys/compat/linux/arch/aarch64/linux_systrace_args.c:1.8 --- src/sys/compat/linux/arch/aarch64/linux_systrace_args.c:1.7 Sat Jul 29 02:50:47 2023 +++ src/sys/compat/linux/arch/aarch64/linux_systrace_args.c Sat Jul 29 11:05:45 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_systrace_args.c,v 1.7 2023/07/29 06:50:47 rin Exp $ */ +/* $NetBSD: linux_systrace_args.c,v 1.8 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument to DTrace register array conversion. @@ -1453,6 +1453,15 @@ systrace_args(register_t sysnum, const v *n_args = 3; break; } + /* linux_sys_readahead */ + case 213: { + const struct linux_sys_readahead_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + iarg[1] = SCARG(p, offset); /* off_t */ + uarg[2] = SCARG(p, count); /* size_t */ + *n_args = 3; + break; + } /* linux_sys_brk */ case 214: { const struct linux_sys_brk_args *p = params; @@ -1677,6 +1686,15 @@ systrace_args(register_t sysnum, const v *n_args = 5; break; } + /* linux_sys_close_range */ + case 436: { + const struct linux_sys_close_range_args *p = params; + uarg[0] = SCARG(p, first); /* unsigned int */ + uarg[1] = SCARG(p, last); /* unsigned int */ + uarg[2] = SCARG(p, flags); /* unsigned int */ + *n_args = 3; + break; + } /* linux_sys_nosys */ case 440: { *n_args = 0; @@ -4138,6 +4156,22 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; + /* linux_sys_readahead */ + case 213: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "off_t"; + break; + case 2: + p = "size_t"; + break; + default: + break; + }; + break; /* linux_sys_brk */ case 214: switch(ndx) { @@ -4534,6 +4568,22 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; + /* linux_sys_close_range */ + case 436: + switch(ndx) { + case 0: + p = "unsigned int"; + break; + case 1: + p = "unsigned int"; + break; + case 2: + p = "unsigned int"; + break; + default: + break; + }; + break; /* linux_sys_nosys */ case 440: break; @@ -5391,6 +5441,11 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "ssize_t"; break; + /* linux_sys_readahead */ + case 213: + if (ndx == 0 || ndx == 1) + p = "ssize_t"; + break; /* linux_sys_brk */ case 214: if (ndx == 0 || ndx == 1) @@ -5513,6 +5568,11 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; + /* linux_sys_close_range */ + case 436: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sys_nosys */ case 440: /* linux_sys_epoll_pwait2 */ Index: src/sys/compat/linux/arch/alpha/linux_syscall.h diff -u src/sys/compat/linux/arch/alpha/linux_syscall.h:1.116 src/sys/compat/linux/arch/alpha/linux_syscall.h:1.117 --- src/sys/compat/linux/arch/alpha/linux_syscall.h:1.116 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/alpha/linux_syscall.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.116 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.117 2023/07/29 15:05:45 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.103 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.104 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -567,6 +567,9 @@ /* syscall: "gettid" ret: "pid_t" args: */ #define LINUX_SYS_gettid 378 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 379 + /* syscall: "tkill" ret: "int" args: "int" "int" */ #define LINUX_SYS_tkill 381 @@ -771,6 +774,12 @@ /* syscall: "sendmmsg" ret: "int" args: "int" "struct linux_mmsghdr *" "unsigned int" "unsigned int" */ #define LINUX_SYS_sendmmsg 503 +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 522 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 546 + /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 551 Index: src/sys/compat/linux/arch/alpha/linux_sysent.c diff -u src/sys/compat/linux/arch/alpha/linux_sysent.c:1.116 src/sys/compat/linux/arch/alpha/linux_sysent.c:1.117 --- src/sys/compat/linux/arch/alpha/linux_sysent.c:1.116 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/alpha/linux_sysent.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.116 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.117 2023/07/29 15:05:45 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.103 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.104 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.116 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.117 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #include "opt_sysv.h" @@ -1514,8 +1514,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_gettid }, /* 378 = gettid */ { - .sy_call = linux_sys_nosys, - }, /* 379 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 379 = readahead */ { .sy_call = linux_sys_nosys, }, /* 380 = filler */ @@ -2068,8 +2070,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 521 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 522 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 522 = statx */ { .sy_call = linux_sys_nosys, }, /* 523 = filler */ @@ -2140,8 +2144,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 545 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 546 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 546 = close_range */ { .sy_call = linux_sys_nosys, }, /* 547 = filler */ Index: src/sys/compat/linux/arch/alpha/linux_syscallargs.h diff -u src/sys/compat/linux/arch/alpha/linux_syscallargs.h:1.115 src/sys/compat/linux/arch/alpha/linux_syscallargs.h:1.116 --- src/sys/compat/linux/arch/alpha/linux_syscallargs.h:1.115 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/alpha/linux_syscallargs.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.115 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.116 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.103 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.104 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -818,6 +818,13 @@ struct linux_sys_getdents64_args { }; check_syscall_args(linux_sys_getdents64) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_tkill_args { syscallarg(int) tid; syscallarg(int) sig; @@ -1271,6 +1278,22 @@ struct linux_sys_sendmmsg_args { }; check_syscall_args(linux_sys_sendmmsg) +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1658,6 +1681,8 @@ int linux_sys_getdents64(struct lwp *, c int linux_sys_gettid(struct lwp *, const void *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_tkill(struct lwp *, const struct linux_sys_tkill_args *, register_t *); int linux_sys_setxattr(struct lwp *, const struct linux_sys_setxattr_args *, register_t *); @@ -1794,6 +1819,10 @@ int linux_sys_accept4(struct lwp *, cons int linux_sys_sendmmsg(struct lwp *, const struct linux_sys_sendmmsg_args *, register_t *); +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/alpha/linux_syscalls.c diff -u src/sys/compat/linux/arch/alpha/linux_syscalls.c:1.117 src/sys/compat/linux/arch/alpha/linux_syscalls.c:1.118 --- src/sys/compat/linux/arch/alpha/linux_syscalls.c:1.117 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/alpha/linux_syscalls.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.117 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.118 2023/07/29 15:05:45 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.103 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.104 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.117 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.118 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT) @@ -438,7 +438,7 @@ const char *const linux_syscallnames[] = /* 376 */ "#376 (unimplemented pciconfig_iobase)", /* 377 */ "getdents64", /* 378 */ "gettid", - /* 379 */ "#379 (unimplemented readahead)", + /* 379 */ "readahead", /* 380 */ "#380 (unimplemented / * unused * /)", /* 381 */ "tkill", /* 382 */ "setxattr", @@ -581,7 +581,7 @@ const char *const linux_syscallnames[] = /* 519 */ "#519 (unimplemented)", /* 520 */ "#520 (unimplemented)", /* 521 */ "#521 (unimplemented)", - /* 522 */ "#522 (unimplemented)", + /* 522 */ "statx", /* 523 */ "#523 (unimplemented)", /* 524 */ "#524 (unimplemented)", /* 525 */ "#525 (unimplemented)", @@ -605,7 +605,7 @@ const char *const linux_syscallnames[] = /* 543 */ "#543 (unimplemented)", /* 544 */ "#544 (unimplemented)", /* 545 */ "#545 (unimplemented)", - /* 546 */ "#546 (unimplemented)", + /* 546 */ "close_range", /* 547 */ "#547 (unimplemented)", /* 548 */ "#548 (unimplemented)", /* 549 */ "#549 (unimplemented)", @@ -1491,7 +1491,7 @@ const char *const altlinux_syscallnames[ /* 376 */ NULL, /* unimplemented pciconfig_iobase */ /* 377 */ NULL, /* getdents64 */ /* 378 */ NULL, /* gettid */ - /* 379 */ NULL, /* unimplemented readahead */ + /* 379 */ NULL, /* readahead */ /* 380 */ NULL, /* unimplemented / * unused * / */ /* 381 */ NULL, /* tkill */ /* 382 */ NULL, /* setxattr */ @@ -1634,7 +1634,7 @@ const char *const altlinux_syscallnames[ /* 519 */ NULL, /* unimplemented */ /* 520 */ NULL, /* unimplemented */ /* 521 */ NULL, /* unimplemented */ - /* 522 */ NULL, /* unimplemented */ + /* 522 */ NULL, /* statx */ /* 523 */ NULL, /* unimplemented */ /* 524 */ NULL, /* unimplemented */ /* 525 */ NULL, /* unimplemented */ @@ -1658,7 +1658,7 @@ const char *const altlinux_syscallnames[ /* 543 */ NULL, /* unimplemented */ /* 544 */ NULL, /* unimplemented */ /* 545 */ NULL, /* unimplemented */ - /* 546 */ NULL, /* unimplemented */ + /* 546 */ NULL, /* close_range */ /* 547 */ NULL, /* unimplemented */ /* 548 */ NULL, /* unimplemented */ /* 549 */ NULL, /* unimplemented */ Index: src/sys/compat/linux/arch/amd64/linux_syscall.h diff -u src/sys/compat/linux/arch/amd64/linux_syscall.h:1.78 src/sys/compat/linux/arch/amd64/linux_syscall.h:1.79 --- src/sys/compat/linux/arch/amd64/linux_syscall.h:1.78 Fri Jul 28 14:20:52 2023 +++ src/sys/compat/linux/arch/amd64/linux_syscall.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.78 2023/07/28 18:20:52 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.79 2023/07/29 15:05:45 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.69 2023/07/28 18:19:00 christos Exp + * created from NetBSD: syscalls.master,v 1.70 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -513,6 +513,9 @@ /* syscall: "gettid" ret: "pid_t" args: */ #define LINUX_SYS_gettid 186 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 187 + /* syscall: "setxattr" ret: "int" args: "char *" "char *" "void *" "size_t" "int" */ #define LINUX_SYS_setxattr 188 @@ -723,6 +726,12 @@ /* syscall: "memfd_create" ret: "int" args: "const char *" "unsigned int" */ #define LINUX_SYS_memfd_create 319 +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 332 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 + /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 441 Index: src/sys/compat/linux/arch/amd64/linux_syscallargs.h diff -u src/sys/compat/linux/arch/amd64/linux_syscallargs.h:1.78 src/sys/compat/linux/arch/amd64/linux_syscallargs.h:1.79 --- src/sys/compat/linux/arch/amd64/linux_syscallargs.h:1.78 Fri Jul 28 14:20:52 2023 +++ src/sys/compat/linux/arch/amd64/linux_syscallargs.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.78 2023/07/28 18:20:52 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.79 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.69 2023/07/28 18:19:00 christos Exp + * created from NetBSD: syscalls.master,v 1.70 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -712,6 +712,13 @@ struct linux_sys_ioperm_args { }; check_syscall_args(linux_sys_ioperm) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_setxattr_args { syscallarg(char *) path; syscallarg(char *) name; @@ -1169,6 +1176,22 @@ struct linux_sys_memfd_create_args { }; check_syscall_args(linux_sys_memfd_create) +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1521,6 +1544,8 @@ int linux_sys_ioperm(struct lwp *, const int linux_sys_gettid(struct lwp *, const void *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_setxattr(struct lwp *, const struct linux_sys_setxattr_args *, register_t *); int linux_sys_lsetxattr(struct lwp *, const struct linux_sys_lsetxattr_args *, register_t *); @@ -1661,6 +1686,10 @@ int sys_getrandom(struct lwp *, const st int linux_sys_memfd_create(struct lwp *, const struct linux_sys_memfd_create_args *, register_t *); +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); int linux_sys_nosys(struct lwp *, const void *, register_t *); Index: src/sys/compat/linux/arch/amd64/linux_syscalls.c diff -u src/sys/compat/linux/arch/amd64/linux_syscalls.c:1.78 src/sys/compat/linux/arch/amd64/linux_syscalls.c:1.79 --- src/sys/compat/linux/arch/amd64/linux_syscalls.c:1.78 Fri Jul 28 14:20:52 2023 +++ src/sys/compat/linux/arch/amd64/linux_syscalls.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.78 2023/07/28 18:20:52 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.79 2023/07/29 15:05:45 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.69 2023/07/28 18:19:00 christos Exp + * created from NetBSD: syscalls.master,v 1.70 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.78 2023/07/28 18:20:52 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.79 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT) @@ -254,7 +254,7 @@ const char *const linux_syscallnames[] = /* 184 */ "#184 (unimplemented tuxcall)", /* 185 */ "#185 (unimplemented security)", /* 186 */ "gettid", - /* 187 */ "#187 (unimplemented readahead)", + /* 187 */ "readahead", /* 188 */ "setxattr", /* 189 */ "lsetxattr", /* 190 */ "fsetxattr", @@ -399,7 +399,7 @@ const char *const linux_syscallnames[] = /* 329 */ "#329 (unimplemented pkey_mprotect)", /* 330 */ "#330 (unimplemented pkey_alloc)", /* 331 */ "#331 (unimplemented pkey_free)", - /* 332 */ "#332 (unimplemented statx)", + /* 332 */ "statx", /* 333 */ "#333 (unimplemented io_pgetevents)", /* 334 */ "#334 (unimplemented rseq)", /* 335 */ "#335 (unimplemented)", @@ -503,7 +503,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented fspick)", /* 434 */ "#434 (unimplemented pidfd_open)", /* 435 */ "#435 (unimplemented clone3)", - /* 436 */ "#436 (unimplemented close_range)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented openat2)", /* 438 */ "#438 (unimplemented pidfd_getfd)", /* 439 */ "#439 (unimplemented faccessat2)", @@ -798,7 +798,7 @@ const char *const altlinux_syscallnames[ /* 184 */ NULL, /* unimplemented tuxcall */ /* 185 */ NULL, /* unimplemented security */ /* 186 */ NULL, /* gettid */ - /* 187 */ NULL, /* unimplemented readahead */ + /* 187 */ NULL, /* readahead */ /* 188 */ NULL, /* setxattr */ /* 189 */ NULL, /* lsetxattr */ /* 190 */ NULL, /* fsetxattr */ @@ -943,7 +943,7 @@ const char *const altlinux_syscallnames[ /* 329 */ NULL, /* unimplemented pkey_mprotect */ /* 330 */ NULL, /* unimplemented pkey_alloc */ /* 331 */ NULL, /* unimplemented pkey_free */ - /* 332 */ NULL, /* unimplemented statx */ + /* 332 */ NULL, /* statx */ /* 333 */ NULL, /* unimplemented io_pgetevents */ /* 334 */ NULL, /* unimplemented rseq */ /* 335 */ NULL, /* unimplemented */ @@ -1047,7 +1047,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented fspick */ /* 434 */ NULL, /* unimplemented pidfd_open */ /* 435 */ NULL, /* unimplemented clone3 */ - /* 436 */ NULL, /* unimplemented close_range */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented openat2 */ /* 438 */ NULL, /* unimplemented pidfd_getfd */ /* 439 */ NULL, /* unimplemented faccessat2 */ Index: src/sys/compat/linux/arch/amd64/linux_sysent.c diff -u src/sys/compat/linux/arch/amd64/linux_sysent.c:1.78 src/sys/compat/linux/arch/amd64/linux_sysent.c:1.79 --- src/sys/compat/linux/arch/amd64/linux_sysent.c:1.78 Fri Jul 28 14:20:52 2023 +++ src/sys/compat/linux/arch/amd64/linux_sysent.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.78 2023/07/28 18:20:52 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.79 2023/07/29 15:05:45 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.69 2023/07/28 18:19:00 christos Exp + * created from NetBSD: syscalls.master,v 1.70 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.78 2023/07/28 18:20:52 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.79 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #include "opt_sysv.h" @@ -901,8 +901,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_gettid }, /* 186 = gettid */ { - .sy_call = linux_sys_nosys, - }, /* 187 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 187 = readahead */ { ns(struct linux_sys_setxattr_args), .sy_flags = SYCALL_ARG_PTR, @@ -1465,8 +1467,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 331 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 332 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 332 = statx */ { .sy_call = linux_sys_nosys, }, /* 333 = filler */ @@ -1777,8 +1781,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/amd64/linux_systrace_args.c diff -u src/sys/compat/linux/arch/amd64/linux_systrace_args.c:1.22 src/sys/compat/linux/arch/amd64/linux_systrace_args.c:1.23 --- src/sys/compat/linux/arch/amd64/linux_systrace_args.c:1.22 Fri Jul 28 14:20:52 2023 +++ src/sys/compat/linux/arch/amd64/linux_systrace_args.c Sat Jul 29 11:05:45 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_systrace_args.c,v 1.22 2023/07/28 18:20:52 christos Exp $ */ +/* $NetBSD: linux_systrace_args.c,v 1.23 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument to DTrace register array conversion. @@ -1334,6 +1334,15 @@ systrace_args(register_t sysnum, const v *n_args = 0; break; } + /* linux_sys_readahead */ + case 187: { + const struct linux_sys_readahead_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + iarg[1] = SCARG(p, offset); /* off_t */ + uarg[2] = SCARG(p, count); /* size_t */ + *n_args = 3; + break; + } /* linux_sys_setxattr */ case 188: { const struct linux_sys_setxattr_args *p = params; @@ -1977,6 +1986,26 @@ systrace_args(register_t sysnum, const v *n_args = 2; break; } + /* linux_sys_statx */ + case 332: { + const struct linux_sys_statx_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + uarg[1] = (intptr_t) SCARG(p, path); /* const char * */ + iarg[2] = SCARG(p, flag); /* int */ + uarg[3] = SCARG(p, mask); /* unsigned int */ + uarg[4] = (intptr_t) SCARG(p, sp); /* struct linux_statx * */ + *n_args = 5; + break; + } + /* linux_sys_close_range */ + case 436: { + const struct linux_sys_close_range_args *p = params; + uarg[0] = SCARG(p, first); /* unsigned int */ + uarg[1] = SCARG(p, last); /* unsigned int */ + uarg[2] = SCARG(p, flags); /* unsigned int */ + *n_args = 3; + break; + } /* linux_sys_epoll_pwait2 */ case 441: { const struct linux_sys_epoll_pwait2_args *p = params; @@ -4141,6 +4170,22 @@ systrace_entry_setargdesc(int sysnum, in /* linux_sys_gettid */ case 186: break; + /* linux_sys_readahead */ + case 187: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "off_t"; + break; + case 2: + p = "size_t"; + break; + default: + break; + }; + break; /* linux_sys_setxattr */ case 188: switch(ndx) { @@ -5300,6 +5345,44 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; + /* linux_sys_statx */ + case 332: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "const char *"; + break; + case 2: + p = "int"; + break; + case 3: + p = "unsigned int"; + break; + case 4: + p = "struct linux_statx *"; + break; + default: + break; + }; + break; + /* linux_sys_close_range */ + case 436: + switch(ndx) { + case 0: + p = "unsigned int"; + break; + case 1: + p = "unsigned int"; + break; + case 2: + p = "unsigned int"; + break; + default: + break; + }; + break; /* linux_sys_epoll_pwait2 */ case 441: switch(ndx) { @@ -6113,6 +6196,11 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_sys_gettid */ case 186: + /* linux_sys_readahead */ + case 187: + if (ndx == 0 || ndx == 1) + p = "ssize_t"; + break; /* linux_sys_setxattr */ case 188: if (ndx == 0 || ndx == 1) @@ -6463,6 +6551,16 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; + /* linux_sys_statx */ + case 332: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sys_close_range */ + case 436: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sys_epoll_pwait2 */ case 441: if (ndx == 0 || ndx == 1) Index: src/sys/compat/linux/arch/arm/linux_syscall.h diff -u src/sys/compat/linux/arch/arm/linux_syscall.h:1.89 src/sys/compat/linux/arch/arm/linux_syscall.h:1.90 --- src/sys/compat/linux/arch/arm/linux_syscall.h:1.89 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/arm/linux_syscall.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.89 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.90 2023/07/29 15:05:45 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.76 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -571,6 +571,9 @@ /* syscall: "gettid" ret: "pid_t" args: */ #define LINUX_SYS_gettid 224 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 225 + /* syscall: "setxattr" ret: "int" args: "char *" "char *" "void *" "size_t" "int" */ #define LINUX_SYS_setxattr 226 @@ -784,6 +787,12 @@ /* syscall: "set_tls" ret: "int" args: "void *" */ #define LINUX_SYS_set_tls 389 +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 397 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 + /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 441 Index: src/sys/compat/linux/arch/arm/linux_syscallargs.h diff -u src/sys/compat/linux/arch/arm/linux_syscallargs.h:1.89 src/sys/compat/linux/arch/arm/linux_syscallargs.h:1.90 --- src/sys/compat/linux/arch/arm/linux_syscallargs.h:1.89 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/arm/linux_syscallargs.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.89 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.90 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.76 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -784,6 +784,13 @@ struct linux_sys_fcntl64_args { }; check_syscall_args(linux_sys_fcntl64) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_setxattr_args { syscallarg(char *) path; syscallarg(char *) name; @@ -1247,6 +1254,22 @@ struct linux_sys_set_tls_args { }; check_syscall_args(linux_sys_set_tls) +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1610,6 +1633,8 @@ int linux_sys_fcntl64(struct lwp *, cons int linux_sys_gettid(struct lwp *, const void *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_setxattr(struct lwp *, const struct linux_sys_setxattr_args *, register_t *); int linux_sys_lsetxattr(struct lwp *, const struct linux_sys_lsetxattr_args *, register_t *); @@ -1752,6 +1777,10 @@ int linux_sys_cacheflush(struct lwp *, c int linux_sys_set_tls(struct lwp *, const struct linux_sys_set_tls_args *, register_t *); +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/arm/linux_syscalls.c diff -u src/sys/compat/linux/arch/arm/linux_syscalls.c:1.89 src/sys/compat/linux/arch/arm/linux_syscalls.c:1.90 --- src/sys/compat/linux/arch/arm/linux_syscalls.c:1.89 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/arm/linux_syscalls.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.89 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.90 2023/07/29 15:05:45 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.76 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.89 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.90 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #include <sys/param.h> @@ -260,7 +260,7 @@ const char *const linux_syscallnames[] = /* 222 */ "#222 (unimplemented / * for tux * /)", /* 223 */ "#223 (unimplemented / * unused * /)", /* 224 */ "gettid", - /* 225 */ "#225 (unimplemented readahead)", + /* 225 */ "readahead", /* 226 */ "setxattr", /* 227 */ "lsetxattr", /* 228 */ "fsetxattr", @@ -432,7 +432,7 @@ const char *const linux_syscallnames[] = /* 394 */ "#394 (unimplemented)", /* 395 */ "#395 (unimplemented)", /* 396 */ "#396 (unimplemented)", - /* 397 */ "#397 (unimplemented)", + /* 397 */ "statx", /* 398 */ "#398 (unimplemented)", /* 399 */ "#399 (unimplemented)", /* 400 */ "#400 (unimplemented)", @@ -471,7 +471,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented)", /* 434 */ "#434 (unimplemented)", /* 435 */ "#435 (unimplemented)", - /* 436 */ "#436 (unimplemented)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented)", /* 438 */ "#438 (unimplemented)", /* 439 */ "#439 (unimplemented)", @@ -782,7 +782,7 @@ const char *const altlinux_syscallnames[ /* 222 */ NULL, /* unimplemented / * for tux * / */ /* 223 */ NULL, /* unimplemented / * unused * / */ /* 224 */ NULL, /* gettid */ - /* 225 */ NULL, /* unimplemented readahead */ + /* 225 */ NULL, /* readahead */ /* 226 */ NULL, /* setxattr */ /* 227 */ NULL, /* lsetxattr */ /* 228 */ NULL, /* fsetxattr */ @@ -954,7 +954,7 @@ const char *const altlinux_syscallnames[ /* 394 */ NULL, /* unimplemented */ /* 395 */ NULL, /* unimplemented */ /* 396 */ NULL, /* unimplemented */ - /* 397 */ NULL, /* unimplemented */ + /* 397 */ NULL, /* statx */ /* 398 */ NULL, /* unimplemented */ /* 399 */ NULL, /* unimplemented */ /* 400 */ NULL, /* unimplemented */ @@ -993,7 +993,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented */ /* 434 */ NULL, /* unimplemented */ /* 435 */ NULL, /* unimplemented */ - /* 436 */ NULL, /* unimplemented */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented */ /* 438 */ NULL, /* unimplemented */ /* 439 */ NULL, /* unimplemented */ Index: src/sys/compat/linux/arch/arm/linux_sysent.c diff -u src/sys/compat/linux/arch/arm/linux_sysent.c:1.89 src/sys/compat/linux/arch/arm/linux_sysent.c:1.90 --- src/sys/compat/linux/arch/arm/linux_sysent.c:1.89 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/arm/linux_sysent.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.89 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.90 2023/07/29 15:05:45 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.76 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.89 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.90 2023/07/29 15:05:45 christos Exp $"); #include <sys/param.h> #include <sys/poll.h> @@ -986,8 +986,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_gettid }, /* 224 = gettid */ { - .sy_call = linux_sys_nosys, - }, /* 225 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 225 = readahead */ { ns(struct linux_sys_setxattr_args), .sy_flags = SYCALL_ARG_PTR, @@ -1630,8 +1632,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 396 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 397 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 397 = statx */ { .sy_call = linux_sys_nosys, }, /* 398 = filler */ @@ -1747,8 +1751,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/arm/linux_systrace_args.c diff -u src/sys/compat/linux/arch/arm/linux_systrace_args.c:1.22 src/sys/compat/linux/arch/arm/linux_systrace_args.c:1.23 --- src/sys/compat/linux/arch/arm/linux_systrace_args.c:1.22 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/arm/linux_systrace_args.c Sat Jul 29 11:05:45 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_systrace_args.c,v 1.22 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_systrace_args.c,v 1.23 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument to DTrace register array conversion. @@ -1431,6 +1431,15 @@ systrace_args(register_t sysnum, const v *n_args = 0; break; } + /* linux_sys_readahead */ + case 225: { + const struct linux_sys_readahead_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + iarg[1] = SCARG(p, offset); /* off_t */ + uarg[2] = SCARG(p, count); /* size_t */ + *n_args = 3; + break; + } /* linux_sys_setxattr */ case 226: { const struct linux_sys_setxattr_args *p = params; @@ -2080,6 +2089,26 @@ systrace_args(register_t sysnum, const v *n_args = 1; break; } + /* linux_sys_statx */ + case 397: { + const struct linux_sys_statx_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + uarg[1] = (intptr_t) SCARG(p, path); /* const char * */ + iarg[2] = SCARG(p, flag); /* int */ + uarg[3] = SCARG(p, mask); /* unsigned int */ + uarg[4] = (intptr_t) SCARG(p, sp); /* struct linux_statx * */ + *n_args = 5; + break; + } + /* linux_sys_close_range */ + case 436: { + const struct linux_sys_close_range_args *p = params; + uarg[0] = SCARG(p, first); /* unsigned int */ + uarg[1] = SCARG(p, last); /* unsigned int */ + uarg[2] = SCARG(p, flags); /* unsigned int */ + *n_args = 3; + break; + } /* linux_sys_epoll_pwait2 */ case 441: { const struct linux_sys_epoll_pwait2_args *p = params; @@ -4338,6 +4367,22 @@ systrace_entry_setargdesc(int sysnum, in /* linux_sys_gettid */ case 224: break; + /* linux_sys_readahead */ + case 225: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "off_t"; + break; + case 2: + p = "size_t"; + break; + default: + break; + }; + break; /* linux_sys_setxattr */ case 226: switch(ndx) { @@ -5503,6 +5548,44 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; + /* linux_sys_statx */ + case 397: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "const char *"; + break; + case 2: + p = "int"; + break; + case 3: + p = "unsigned int"; + break; + case 4: + p = "struct linux_statx *"; + break; + default: + break; + }; + break; + /* linux_sys_close_range */ + case 436: + switch(ndx) { + case 0: + p = "unsigned int"; + break; + case 1: + p = "unsigned int"; + break; + case 2: + p = "unsigned int"; + break; + default: + break; + }; + break; /* linux_sys_epoll_pwait2 */ case 441: switch(ndx) { @@ -6382,6 +6465,11 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_sys_gettid */ case 224: + /* linux_sys_readahead */ + case 225: + if (ndx == 0 || ndx == 1) + p = "ssize_t"; + break; /* linux_sys_setxattr */ case 226: if (ndx == 0 || ndx == 1) @@ -6734,6 +6822,16 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; + /* linux_sys_statx */ + case 397: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sys_close_range */ + case 436: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sys_epoll_pwait2 */ case 441: if (ndx == 0 || ndx == 1) Index: src/sys/compat/linux/arch/i386/linux_syscall.h diff -u src/sys/compat/linux/arch/i386/linux_syscall.h:1.123 src/sys/compat/linux/arch/i386/linux_syscall.h:1.124 --- src/sys/compat/linux/arch/i386/linux_syscall.h:1.123 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/i386/linux_syscall.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.123 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.124 2023/07/29 15:05:45 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.131 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.132 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -584,6 +584,9 @@ /* syscall: "gettid" ret: "pid_t" args: */ #define LINUX_SYS_gettid 224 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 225 + /* syscall: "setxattr" ret: "int" args: "char *" "char *" "void *" "size_t" "int" */ #define LINUX_SYS_setxattr 226 @@ -794,6 +797,12 @@ /* syscall: "memfd_create" ret: "int" args: "const char *" "unsigned int" */ #define LINUX_SYS_memfd_create 356 +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 397 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 + /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 441 Index: src/sys/compat/linux/arch/i386/linux_syscallargs.h diff -u src/sys/compat/linux/arch/i386/linux_syscallargs.h:1.123 src/sys/compat/linux/arch/i386/linux_syscallargs.h:1.124 --- src/sys/compat/linux/arch/i386/linux_syscallargs.h:1.123 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/i386/linux_syscallargs.h Sat Jul 29 11:05:45 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.123 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.124 2023/07/29 15:05:45 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.131 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.132 2023/07/29 15:04:28 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -813,6 +813,13 @@ struct linux_sys_fcntl64_args { }; check_syscall_args(linux_sys_fcntl64) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_setxattr_args { syscallarg(char *) path; syscallarg(char *) name; @@ -1265,6 +1272,22 @@ struct linux_sys_memfd_create_args { }; check_syscall_args(linux_sys_memfd_create) +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1638,6 +1661,8 @@ int linux_sys_fcntl64(struct lwp *, cons int linux_sys_gettid(struct lwp *, const void *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_setxattr(struct lwp *, const struct linux_sys_setxattr_args *, register_t *); int linux_sys_lsetxattr(struct lwp *, const struct linux_sys_lsetxattr_args *, register_t *); @@ -1778,6 +1803,10 @@ int sys_getrandom(struct lwp *, const st int linux_sys_memfd_create(struct lwp *, const struct linux_sys_memfd_create_args *, register_t *); +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/i386/linux_sysent.c diff -u src/sys/compat/linux/arch/i386/linux_sysent.c:1.123 src/sys/compat/linux/arch/i386/linux_sysent.c:1.124 --- src/sys/compat/linux/arch/i386/linux_sysent.c:1.123 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/i386/linux_sysent.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.123 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.124 2023/07/29 15:05:45 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.131 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.132 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.123 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.124 2023/07/29 15:05:45 christos Exp $"); #include <sys/param.h> #include <sys/poll.h> @@ -993,8 +993,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_gettid }, /* 224 = gettid */ { - .sy_call = linux_sys_nosys, - }, /* 225 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 225 = readahead */ { ns(struct linux_sys_setxattr_args), .sy_flags = SYCALL_ARG_PTR, @@ -1638,8 +1640,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 396 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 397 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 397 = statx */ { .sy_call = linux_sys_nosys, }, /* 398 = filler */ @@ -1755,8 +1759,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/i386/linux_syscalls.c diff -u src/sys/compat/linux/arch/i386/linux_syscalls.c:1.124 src/sys/compat/linux/arch/i386/linux_syscalls.c:1.125 --- src/sys/compat/linux/arch/i386/linux_syscalls.c:1.124 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/i386/linux_syscalls.c Sat Jul 29 11:05:45 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.124 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.125 2023/07/29 15:05:45 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.131 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.132 2023/07/29 15:04:28 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.124 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.125 2023/07/29 15:05:45 christos Exp $"); #if defined(_KERNEL_OPT) #include <sys/param.h> @@ -259,7 +259,7 @@ const char *const linux_syscallnames[] = /* 222 */ "#222 (unimplemented / * unused * /)", /* 223 */ "#223 (unimplemented / * unused * /)", /* 224 */ "gettid", - /* 225 */ "#225 (unimplemented readahead)", + /* 225 */ "readahead", /* 226 */ "setxattr", /* 227 */ "lsetxattr", /* 228 */ "fsetxattr", @@ -431,7 +431,7 @@ const char *const linux_syscallnames[] = /* 394 */ "#394 (unimplemented semctl)", /* 395 */ "#395 (unimplemented shmget)", /* 396 */ "#396 (unimplemented shmctl)", - /* 397 */ "#397 (unimplemented shmat)", + /* 397 */ "statx", /* 398 */ "#398 (unimplemented shmdt)", /* 399 */ "#399 (unimplemented msgget)", /* 400 */ "#400 (unimplemented msgsnd)", @@ -470,7 +470,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented fspick)", /* 434 */ "#434 (unimplemented pidfd_open)", /* 435 */ "#435 (unimplemented clone3)", - /* 436 */ "#436 (unimplemented close_range)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented openat2)", /* 438 */ "#438 (unimplemented pidfd_getfd)", /* 439 */ "#439 (unimplemented faccessat2)", @@ -781,7 +781,7 @@ const char *const altlinux_syscallnames[ /* 222 */ NULL, /* unimplemented / * unused * / */ /* 223 */ NULL, /* unimplemented / * unused * / */ /* 224 */ NULL, /* gettid */ - /* 225 */ NULL, /* unimplemented readahead */ + /* 225 */ NULL, /* readahead */ /* 226 */ NULL, /* setxattr */ /* 227 */ NULL, /* lsetxattr */ /* 228 */ NULL, /* fsetxattr */ @@ -953,7 +953,7 @@ const char *const altlinux_syscallnames[ /* 394 */ NULL, /* unimplemented semctl */ /* 395 */ NULL, /* unimplemented shmget */ /* 396 */ NULL, /* unimplemented shmctl */ - /* 397 */ NULL, /* unimplemented shmat */ + /* 397 */ NULL, /* statx */ /* 398 */ NULL, /* unimplemented shmdt */ /* 399 */ NULL, /* unimplemented msgget */ /* 400 */ NULL, /* unimplemented msgsnd */ @@ -992,7 +992,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented fspick */ /* 434 */ NULL, /* unimplemented pidfd_open */ /* 435 */ NULL, /* unimplemented clone3 */ - /* 436 */ NULL, /* unimplemented close_range */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented openat2 */ /* 438 */ NULL, /* unimplemented pidfd_getfd */ /* 439 */ NULL, /* unimplemented faccessat2 */ Index: src/sys/compat/linux/arch/i386/linux_systrace_args.c diff -u src/sys/compat/linux/arch/i386/linux_systrace_args.c:1.18 src/sys/compat/linux/arch/i386/linux_systrace_args.c:1.19 --- src/sys/compat/linux/arch/i386/linux_systrace_args.c:1.18 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/i386/linux_systrace_args.c Sat Jul 29 11:05:46 2023 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_systrace_args.c,v 1.18 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_systrace_args.c,v 1.19 2023/07/29 15:05:46 christos Exp $ */ /* * System call argument to DTrace register array conversion. @@ -1470,6 +1470,15 @@ systrace_args(register_t sysnum, const v *n_args = 0; break; } + /* linux_sys_readahead */ + case 225: { + const struct linux_sys_readahead_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + iarg[1] = SCARG(p, offset); /* off_t */ + uarg[2] = SCARG(p, count); /* size_t */ + *n_args = 3; + break; + } /* linux_sys_setxattr */ case 226: { const struct linux_sys_setxattr_args *p = params; @@ -2108,6 +2117,26 @@ systrace_args(register_t sysnum, const v *n_args = 2; break; } + /* linux_sys_statx */ + case 397: { + const struct linux_sys_statx_args *p = params; + iarg[0] = SCARG(p, fd); /* int */ + uarg[1] = (intptr_t) SCARG(p, path); /* const char * */ + iarg[2] = SCARG(p, flag); /* int */ + uarg[3] = SCARG(p, mask); /* unsigned int */ + uarg[4] = (intptr_t) SCARG(p, sp); /* struct linux_statx * */ + *n_args = 5; + break; + } + /* linux_sys_close_range */ + case 436: { + const struct linux_sys_close_range_args *p = params; + uarg[0] = SCARG(p, first); /* unsigned int */ + uarg[1] = SCARG(p, last); /* unsigned int */ + uarg[2] = SCARG(p, flags); /* unsigned int */ + *n_args = 3; + break; + } /* linux_sys_epoll_pwait2 */ case 441: { const struct linux_sys_epoll_pwait2_args *p = params; @@ -4428,6 +4457,22 @@ systrace_entry_setargdesc(int sysnum, in /* linux_sys_gettid */ case 224: break; + /* linux_sys_readahead */ + case 225: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "off_t"; + break; + case 2: + p = "size_t"; + break; + default: + break; + }; + break; /* linux_sys_setxattr */ case 226: switch(ndx) { @@ -5572,6 +5617,44 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; + /* linux_sys_statx */ + case 397: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "const char *"; + break; + case 2: + p = "int"; + break; + case 3: + p = "unsigned int"; + break; + case 4: + p = "struct linux_statx *"; + break; + default: + break; + }; + break; + /* linux_sys_close_range */ + case 436: + switch(ndx) { + case 0: + p = "unsigned int"; + break; + case 1: + p = "unsigned int"; + break; + case 2: + p = "unsigned int"; + break; + default: + break; + }; + break; /* linux_sys_epoll_pwait2 */ case 441: switch(ndx) { @@ -6476,6 +6559,11 @@ systrace_return_setargdesc(int sysnum, i break; /* linux_sys_gettid */ case 224: + /* linux_sys_readahead */ + case 225: + if (ndx == 0 || ndx == 1) + p = "ssize_t"; + break; /* linux_sys_setxattr */ case 226: if (ndx == 0 || ndx == 1) @@ -6826,6 +6914,16 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; + /* linux_sys_statx */ + case 397: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* linux_sys_close_range */ + case 436: + if (ndx == 0 || ndx == 1) + p = "int"; + break; /* linux_sys_epoll_pwait2 */ case 441: if (ndx == 0 || ndx == 1) Index: src/sys/compat/linux/arch/m68k/linux_syscall.h diff -u src/sys/compat/linux/arch/m68k/linux_syscall.h:1.115 src/sys/compat/linux/arch/m68k/linux_syscall.h:1.116 --- src/sys/compat/linux/arch/m68k/linux_syscall.h:1.115 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/m68k/linux_syscall.h Sat Jul 29 11:05:46 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.115 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.116 2023/07/29 15:05:46 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.102 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.103 2023/07/29 15:04:29 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -624,6 +624,9 @@ /* syscall: "fcntl64" ret: "int" args: "int" "int" "void *" */ #define LINUX_SYS_fcntl64 239 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 240 + /* syscall: "fadvise64" ret: "int" args: "int" "off_t" "size_t" "int" */ #define LINUX_SYS_fadvise64 246 @@ -789,6 +792,12 @@ /* syscall: "sendmmsg" ret: "int" args: "int" "struct linux_mmsghdr *" "unsigned int" "unsigned int" */ #define LINUX_SYS_sendmmsg 372 +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 379 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 + /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 441 Index: src/sys/compat/linux/arch/m68k/linux_syscalls.c diff -u src/sys/compat/linux/arch/m68k/linux_syscalls.c:1.115 src/sys/compat/linux/arch/m68k/linux_syscalls.c:1.116 --- src/sys/compat/linux/arch/m68k/linux_syscalls.c:1.115 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/m68k/linux_syscalls.c Sat Jul 29 11:05:46 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.115 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.116 2023/07/29 15:05:46 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.102 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.103 2023/07/29 15:04:29 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.115 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.116 2023/07/29 15:05:46 christos Exp $"); #if defined(_KERNEL_OPT) #if defined(_KERNEL_OPT) @@ -294,7 +294,7 @@ const char *const linux_syscallnames[] = /* 237 */ "mincore", /* 238 */ "madvise", /* 239 */ "fcntl64", - /* 240 */ "#240 (unimplemented readahead)", + /* 240 */ "readahead", /* 241 */ "#241 (unimplemented io_setup)", /* 242 */ "#242 (unimplemented io_destroy)", /* 243 */ "#243 (unimplemented io_getevents)", @@ -433,7 +433,7 @@ const char *const linux_syscallnames[] = /* 376 */ "#376 (unimplemented copy_file_range)", /* 377 */ "#377 (unimplemented preadv2)", /* 378 */ "#378 (unimplemented pwritev2)", - /* 379 */ "#379 (unimplemented)", + /* 379 */ "statx", /* 380 */ "#380 (unimplemented)", /* 381 */ "#381 (unimplemented)", /* 382 */ "#382 (unimplemented)", @@ -490,7 +490,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented)", /* 434 */ "#434 (unimplemented)", /* 435 */ "#435 (unimplemented)", - /* 436 */ "#436 (unimplemented)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented)", /* 438 */ "#438 (unimplemented)", /* 439 */ "#439 (unimplemented)", @@ -832,7 +832,7 @@ const char *const altlinux_syscallnames[ /* 237 */ NULL, /* mincore */ /* 238 */ NULL, /* madvise */ /* 239 */ NULL, /* fcntl64 */ - /* 240 */ NULL, /* unimplemented readahead */ + /* 240 */ NULL, /* readahead */ /* 241 */ NULL, /* unimplemented io_setup */ /* 242 */ NULL, /* unimplemented io_destroy */ /* 243 */ NULL, /* unimplemented io_getevents */ @@ -971,7 +971,7 @@ const char *const altlinux_syscallnames[ /* 376 */ NULL, /* unimplemented copy_file_range */ /* 377 */ NULL, /* unimplemented preadv2 */ /* 378 */ NULL, /* unimplemented pwritev2 */ - /* 379 */ NULL, /* unimplemented */ + /* 379 */ NULL, /* statx */ /* 380 */ NULL, /* unimplemented */ /* 381 */ NULL, /* unimplemented */ /* 382 */ NULL, /* unimplemented */ @@ -1028,7 +1028,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented */ /* 434 */ NULL, /* unimplemented */ /* 435 */ NULL, /* unimplemented */ - /* 436 */ NULL, /* unimplemented */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented */ /* 438 */ NULL, /* unimplemented */ /* 439 */ NULL, /* unimplemented */ Index: src/sys/compat/linux/arch/m68k/linux_sysent.c diff -u src/sys/compat/linux/arch/m68k/linux_sysent.c:1.115 src/sys/compat/linux/arch/m68k/linux_sysent.c:1.116 --- src/sys/compat/linux/arch/m68k/linux_sysent.c:1.115 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/m68k/linux_sysent.c Sat Jul 29 11:05:46 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.115 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.116 2023/07/29 15:05:46 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.102 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.103 2023/07/29 15:04:29 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.115 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.116 2023/07/29 15:05:46 christos Exp $"); #if defined(_KERNEL_OPT) #include "opt_compat_netbsd.h" @@ -1080,8 +1080,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_fcntl64 }, /* 239 = fcntl64 */ { - .sy_call = linux_sys_nosys, - }, /* 240 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 240 = readahead */ { .sy_call = linux_sys_nosys, }, /* 241 = filler */ @@ -1598,8 +1600,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 378 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 379 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 379 = statx */ { .sy_call = linux_sys_nosys, }, /* 380 = filler */ @@ -1769,8 +1773,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/m68k/linux_syscallargs.h diff -u src/sys/compat/linux/arch/m68k/linux_syscallargs.h:1.114 src/sys/compat/linux/arch/m68k/linux_syscallargs.h:1.115 --- src/sys/compat/linux/arch/m68k/linux_syscallargs.h:1.114 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/m68k/linux_syscallargs.h Sat Jul 29 11:05:46 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.114 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.115 2023/07/29 15:05:46 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.102 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.103 2023/07/29 15:04:29 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -895,6 +895,13 @@ struct linux_sys_fcntl64_args { }; check_syscall_args(linux_sys_fcntl64) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_fadvise64_args { syscallarg(int) fd; syscallarg(off_t) offset; @@ -1245,6 +1252,22 @@ struct linux_sys_sendmmsg_args { }; check_syscall_args(linux_sys_sendmmsg) +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1648,6 +1671,8 @@ int sys_madvise(struct lwp *, const stru int linux_sys_fcntl64(struct lwp *, const struct linux_sys_fcntl64_args *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_fadvise64(struct lwp *, const struct linux_sys_fadvise64_args *, register_t *); int linux_sys_epoll_create(struct lwp *, const struct linux_sys_epoll_create_args *, register_t *); @@ -1758,6 +1783,10 @@ int linux_sys_recvmmsg(struct lwp *, con int linux_sys_sendmmsg(struct lwp *, const struct linux_sys_sendmmsg_args *, register_t *); +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/mips/linux_syscall.h diff -u src/sys/compat/linux/arch/mips/linux_syscall.h:1.87 src/sys/compat/linux/arch/mips/linux_syscall.h:1.88 --- src/sys/compat/linux/arch/mips/linux_syscall.h:1.87 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/mips/linux_syscall.h Sat Jul 29 11:05:46 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.87 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.88 2023/07/29 15:05:46 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.75 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:05:31 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -547,6 +547,9 @@ /* syscall: "gettid" ret: "pid_t" args: */ #define LINUX_SYS_gettid 222 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 223 + /* syscall: "setxattr" ret: "int" args: "char *" "char *" "void *" "size_t" "int" */ #define LINUX_SYS_setxattr 224 @@ -755,7 +758,16 @@ #define LINUX_SYS_sendmmsg 344 /* syscall: "getrandom" ret: "ssize_t" args: "void *" "size_t" "unsigned int" */ -#define LINUX_SYS_getrandom 354 +#define LINUX_SYS_getrandom 353 + +/* syscall: "memfd_create" ret: "int" args: "const char *" "unsigned int" */ +#define LINUX_SYS_memfd_create 354 + +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 366 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 441 Index: src/sys/compat/linux/arch/mips/linux_syscallargs.h diff -u src/sys/compat/linux/arch/mips/linux_syscallargs.h:1.86 src/sys/compat/linux/arch/mips/linux_syscallargs.h:1.87 --- src/sys/compat/linux/arch/mips/linux_syscallargs.h:1.86 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/mips/linux_syscallargs.h Sat Jul 29 11:05:46 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.86 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.87 2023/07/29 15:05:46 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.75 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:05:31 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -825,6 +825,13 @@ struct linux_sys_fcntl64_args { }; check_syscall_args(linux_sys_fcntl64) +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) + struct linux_sys_setxattr_args { syscallarg(char *) path; syscallarg(char *) name; @@ -1283,6 +1290,28 @@ check_syscall_args(linux_sys_sendmmsg) struct sys_getrandom_args; +struct linux_sys_memfd_create_args { + syscallarg(const char *) name; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_memfd_create) + +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1650,6 +1679,8 @@ int linux_sys_fcntl64(struct lwp *, cons int linux_sys_gettid(struct lwp *, const void *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + int linux_sys_setxattr(struct lwp *, const struct linux_sys_setxattr_args *, register_t *); int linux_sys_lsetxattr(struct lwp *, const struct linux_sys_lsetxattr_args *, register_t *); @@ -1790,6 +1821,12 @@ int linux_sys_sendmmsg(struct lwp *, con int sys_getrandom(struct lwp *, const struct sys_getrandom_args *, register_t *); +int linux_sys_memfd_create(struct lwp *, const struct linux_sys_memfd_create_args *, register_t *); + +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/mips/linux_syscalls.c diff -u src/sys/compat/linux/arch/mips/linux_syscalls.c:1.86 src/sys/compat/linux/arch/mips/linux_syscalls.c:1.87 --- src/sys/compat/linux/arch/mips/linux_syscalls.c:1.86 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/mips/linux_syscalls.c Sat Jul 29 11:05:46 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.86 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.87 2023/07/29 15:05:46 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.75 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:05:31 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.86 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.87 2023/07/29 15:05:46 christos Exp $"); #if defined(_KERNEL_OPT) #include <sys/param.h> @@ -253,7 +253,7 @@ const char *const linux_syscallnames[] = /* 220 */ "fcntl64", /* 221 */ "#221 (unimplemented / * reserved * /)", /* 222 */ "gettid", - /* 223 */ "#223 (unimplemented readahead)", + /* 223 */ "readahead", /* 224 */ "setxattr", /* 225 */ "lsetxattr", /* 226 */ "fsetxattr", @@ -383,20 +383,20 @@ const char *const linux_syscallnames[] = /* 350 */ "#350 (unimplemented sched_setattr)", /* 351 */ "#351 (unimplemented sched_getattr)", /* 352 */ "#352 (unimplemented renameat2)", - /* 353 */ "#353 (unimplemented seccomp)", - /* 354 */ "getrandom", - /* 355 */ "#355 (unimplemented memfd_create)", - /* 356 */ "#356 (unimplemented bpf)", - /* 357 */ "#357 (unimplemented execveat)", - /* 358 */ "#358 (unimplemented userfaultfd)", - /* 359 */ "#359 (unimplemented membarrier)", - /* 360 */ "#360 (unimplemented mlock2)", - /* 361 */ "#361 (unimplemented copy_file_range)", - /* 362 */ "#362 (unimplemented preadv2)", - /* 363 */ "#363 (unimplemented pwritev2)", - /* 364 */ "#364 (unimplemented pkey_mprotect)", - /* 365 */ "#365 (unimplemented pkey_alloc)", - /* 366 */ "#366 (unimplemented pkey_free)", + /* 353 */ "getrandom", + /* 354 */ "memfd_create", + /* 355 */ "#355 (unimplemented bpf)", + /* 356 */ "#356 (unimplemented execveat)", + /* 357 */ "#357 (unimplemented userfaultfd)", + /* 358 */ "#358 (unimplemented membarrier)", + /* 359 */ "#359 (unimplemented mlock2)", + /* 360 */ "#360 (unimplemented copy_file_range)", + /* 361 */ "#361 (unimplemented preadv2)", + /* 362 */ "#362 (unimplemented pwritev2)", + /* 363 */ "#363 (unimplemented pkey_mprotect)", + /* 364 */ "#364 (unimplemented pkey_alloc)", + /* 365 */ "#365 (unimplemented pkey_free)", + /* 366 */ "statx", /* 367 */ "#367 (unimplemented)", /* 368 */ "#368 (unimplemented)", /* 369 */ "#369 (unimplemented)", @@ -466,7 +466,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented)", /* 434 */ "#434 (unimplemented)", /* 435 */ "#435 (unimplemented)", - /* 436 */ "#436 (unimplemented)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented)", /* 438 */ "#438 (unimplemented)", /* 439 */ "#439 (unimplemented)", @@ -770,7 +770,7 @@ const char *const altlinux_syscallnames[ /* 220 */ NULL, /* fcntl64 */ /* 221 */ NULL, /* unimplemented / * reserved * / */ /* 222 */ NULL, /* gettid */ - /* 223 */ NULL, /* unimplemented readahead */ + /* 223 */ NULL, /* readahead */ /* 224 */ NULL, /* setxattr */ /* 225 */ NULL, /* lsetxattr */ /* 226 */ NULL, /* fsetxattr */ @@ -900,20 +900,20 @@ const char *const altlinux_syscallnames[ /* 350 */ NULL, /* unimplemented sched_setattr */ /* 351 */ NULL, /* unimplemented sched_getattr */ /* 352 */ NULL, /* unimplemented renameat2 */ - /* 353 */ NULL, /* unimplemented seccomp */ - /* 354 */ NULL, /* getrandom */ - /* 355 */ NULL, /* unimplemented memfd_create */ - /* 356 */ NULL, /* unimplemented bpf */ - /* 357 */ NULL, /* unimplemented execveat */ - /* 358 */ NULL, /* unimplemented userfaultfd */ - /* 359 */ NULL, /* unimplemented membarrier */ - /* 360 */ NULL, /* unimplemented mlock2 */ - /* 361 */ NULL, /* unimplemented copy_file_range */ - /* 362 */ NULL, /* unimplemented preadv2 */ - /* 363 */ NULL, /* unimplemented pwritev2 */ - /* 364 */ NULL, /* unimplemented pkey_mprotect */ - /* 365 */ NULL, /* unimplemented pkey_alloc */ - /* 366 */ NULL, /* unimplemented pkey_free */ + /* 353 */ NULL, /* getrandom */ + /* 354 */ NULL, /* memfd_create */ + /* 355 */ NULL, /* unimplemented bpf */ + /* 356 */ NULL, /* unimplemented execveat */ + /* 357 */ NULL, /* unimplemented userfaultfd */ + /* 358 */ NULL, /* unimplemented membarrier */ + /* 359 */ NULL, /* unimplemented mlock2 */ + /* 360 */ NULL, /* unimplemented copy_file_range */ + /* 361 */ NULL, /* unimplemented preadv2 */ + /* 362 */ NULL, /* unimplemented pwritev2 */ + /* 363 */ NULL, /* unimplemented pkey_mprotect */ + /* 364 */ NULL, /* unimplemented pkey_alloc */ + /* 365 */ NULL, /* unimplemented pkey_free */ + /* 366 */ NULL, /* statx */ /* 367 */ NULL, /* unimplemented */ /* 368 */ NULL, /* unimplemented */ /* 369 */ NULL, /* unimplemented */ @@ -983,7 +983,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented */ /* 434 */ NULL, /* unimplemented */ /* 435 */ NULL, /* unimplemented */ - /* 436 */ NULL, /* unimplemented */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented */ /* 438 */ NULL, /* unimplemented */ /* 439 */ NULL, /* unimplemented */ Index: src/sys/compat/linux/arch/mips/linux_sysent.c diff -u src/sys/compat/linux/arch/mips/linux_sysent.c:1.86 src/sys/compat/linux/arch/mips/linux_sysent.c:1.87 --- src/sys/compat/linux/arch/mips/linux_sysent.c:1.86 Fri Jul 28 15:01:44 2023 +++ src/sys/compat/linux/arch/mips/linux_sysent.c Sat Jul 29 11:05:46 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.86 2023/07/28 19:01:44 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.87 2023/07/29 15:05:46 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.75 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.77 2023/07/29 15:05:31 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.86 2023/07/28 19:01:44 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.87 2023/07/29 15:05:46 christos Exp $"); #include <sys/param.h> #include <sys/poll.h> @@ -979,8 +979,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_gettid }, /* 222 = gettid */ { - .sy_call = linux_sys_nosys, - }, /* 223 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 223 = readahead */ { ns(struct linux_sys_setxattr_args), .sy_flags = SYCALL_ARG_PTR, @@ -1496,13 +1498,15 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 352 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 353 = filler */ - { ns(struct sys_getrandom_args), .sy_flags = SYCALL_ARG_PTR, .sy_call = (sy_call_t *)sys_getrandom - }, /* 354 = getrandom */ + }, /* 353 = getrandom */ + { + ns(struct linux_sys_memfd_create_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_memfd_create + }, /* 354 = memfd_create */ { .sy_call = linux_sys_nosys, }, /* 355 = filler */ @@ -1537,8 +1541,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 365 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 366 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 366 = statx */ { .sy_call = linux_sys_nosys, }, /* 367 = filler */ @@ -1747,8 +1753,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/powerpc/linux_syscall.h diff -u src/sys/compat/linux/arch/powerpc/linux_syscall.h:1.93 src/sys/compat/linux/arch/powerpc/linux_syscall.h:1.94 --- src/sys/compat/linux/arch/powerpc/linux_syscall.h:1.93 Fri Jul 28 15:01:45 2023 +++ src/sys/compat/linux/arch/powerpc/linux_syscall.h Sat Jul 29 11:05:46 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscall.h,v 1.93 2023/07/28 19:01:45 christos Exp $ */ +/* $NetBSD: linux_syscall.h,v 1.94 2023/07/29 15:05:46 christos Exp $ */ /* * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.81 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.82 2023/07/29 15:04:29 christos Exp */ #ifndef _LINUX_SYS_SYSCALL_H_ @@ -482,6 +482,9 @@ /* syscall: "ugetrlimit" ret: "int" args: "int" "struct rlimit *" */ #define LINUX_SYS_ugetrlimit 190 +/* syscall: "readahead" ret: "ssize_t" args: "int" "off_t" "size_t" */ +#define LINUX_SYS_readahead 191 + #define linux_sys_mmap2_args linux_sys_mmap_args /* syscall: "mmap2" ret: "linux_off_t" args: "unsigned long" "size_t" "int" "int" "int" "linux_off_t" */ #define LINUX_SYS_mmap2 192 @@ -726,6 +729,12 @@ /* syscall: "getrandom" ret: "ssize_t" args: "void *" "size_t" "unsigned int" */ #define LINUX_SYS_getrandom 359 +/* syscall: "statx" ret: "int" args: "int" "const char *" "int" "unsigned int" "struct linux_statx *" */ +#define LINUX_SYS_statx 383 + +/* syscall: "close_range" ret: "int" args: "unsigned int" "unsigned int" "unsigned int" */ +#define LINUX_SYS_close_range 436 + /* syscall: "epoll_pwait2" ret: "int" args: "int" "struct linux_epoll_event *" "int" "const struct linux_timespec *" "const linux_sigset_t *" */ #define LINUX_SYS_epoll_pwait2 441 Index: src/sys/compat/linux/arch/powerpc/linux_sysent.c diff -u src/sys/compat/linux/arch/powerpc/linux_sysent.c:1.93 src/sys/compat/linux/arch/powerpc/linux_sysent.c:1.94 --- src/sys/compat/linux/arch/powerpc/linux_sysent.c:1.93 Fri Jul 28 15:01:45 2023 +++ src/sys/compat/linux/arch/powerpc/linux_sysent.c Sat Jul 29 11:05:46 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_sysent.c,v 1.93 2023/07/28 19:01:45 christos Exp $ */ +/* $NetBSD: linux_sysent.c,v 1.94 2023/07/29 15:05:46 christos Exp $ */ /* * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.81 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.82 2023/07/29 15:04:29 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.93 2023/07/28 19:01:45 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_sysent.c,v 1.94 2023/07/29 15:05:46 christos Exp $"); #include <sys/param.h> #include <sys/poll.h> @@ -842,8 +842,10 @@ struct sysent linux_sysent[] = { .sy_call = (sy_call_t *)linux_sys_ugetrlimit }, /* 190 = ugetrlimit */ { - .sy_call = linux_sys_nosys, - }, /* 191 = filler */ + ns(struct linux_sys_readahead_args), + .sy_flags = SYCALL_NARGS64_VAL(1) | SYCALL_ARG1_64, + .sy_call = (sy_call_t *)linux_sys_readahead + }, /* 191 = readahead */ #define linux_sys_mmap2_args linux_sys_mmap_args { ns(struct linux_sys_mmap2_args), @@ -1567,8 +1569,10 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 382 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 383 = filler */ + ns(struct linux_sys_statx_args), + .sy_flags = SYCALL_ARG_PTR, + .sy_call = (sy_call_t *)linux_sys_statx + }, /* 383 = statx */ { .sy_call = linux_sys_nosys, }, /* 384 = filler */ @@ -1726,8 +1730,9 @@ struct sysent linux_sysent[] = { .sy_call = linux_sys_nosys, }, /* 435 = filler */ { - .sy_call = linux_sys_nosys, - }, /* 436 = filler */ + ns(struct linux_sys_close_range_args), + .sy_call = (sy_call_t *)linux_sys_close_range + }, /* 436 = close_range */ { .sy_call = linux_sys_nosys, }, /* 437 = filler */ Index: src/sys/compat/linux/arch/powerpc/linux_syscallargs.h diff -u src/sys/compat/linux/arch/powerpc/linux_syscallargs.h:1.92 src/sys/compat/linux/arch/powerpc/linux_syscallargs.h:1.93 --- src/sys/compat/linux/arch/powerpc/linux_syscallargs.h:1.92 Fri Jul 28 15:01:45 2023 +++ src/sys/compat/linux/arch/powerpc/linux_syscallargs.h Sat Jul 29 11:05:46 2023 @@ -1,10 +1,10 @@ -/* $NetBSD: linux_syscallargs.h,v 1.92 2023/07/28 19:01:45 christos Exp $ */ +/* $NetBSD: linux_syscallargs.h,v 1.93 2023/07/29 15:05:46 christos Exp $ */ /* * System call argument lists. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.81 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.82 2023/07/29 15:04:29 christos Exp */ #ifndef _LINUX_SYS_SYSCALLARGS_H_ @@ -657,6 +657,13 @@ struct linux_sys_ugetrlimit_args { syscallarg(struct rlimit *) rlp; }; check_syscall_args(linux_sys_ugetrlimit) + +struct linux_sys_readahead_args { + syscallarg(int) fd; + syscallarg(off_t) offset; + syscallarg(size_t) count; +}; +check_syscall_args(linux_sys_readahead) #define linux_sys_mmap2_args linux_sys_mmap_args struct linux_sys_mmap2_args; @@ -1170,6 +1177,22 @@ check_syscall_args(linux_sys_sendmmsg) struct sys_getrandom_args; +struct linux_sys_statx_args { + syscallarg(int) fd; + syscallarg(const char *) path; + syscallarg(int) flag; + syscallarg(unsigned int) mask; + syscallarg(struct linux_statx *) sp; +}; +check_syscall_args(linux_sys_statx) + +struct linux_sys_close_range_args { + syscallarg(unsigned int) first; + syscallarg(unsigned int) last; + syscallarg(unsigned int) flags; +}; +check_syscall_args(linux_sys_close_range) + struct linux_sys_epoll_pwait2_args { syscallarg(int) epfd; syscallarg(struct linux_epoll_event *) events; @@ -1490,6 +1513,8 @@ int sys___vfork14(struct lwp *, const vo int linux_sys_ugetrlimit(struct lwp *, const struct linux_sys_ugetrlimit_args *, register_t *); +int linux_sys_readahead(struct lwp *, const struct linux_sys_readahead_args *, register_t *); + #define linux_sys_mmap2_args linux_sys_mmap_args int linux_sys_mmap2(struct lwp *, const struct linux_sys_mmap2_args *, register_t *); @@ -1653,6 +1678,10 @@ int linux_sys_sendmmsg(struct lwp *, con int sys_getrandom(struct lwp *, const struct sys_getrandom_args *, register_t *); +int linux_sys_statx(struct lwp *, const struct linux_sys_statx_args *, register_t *); + +int linux_sys_close_range(struct lwp *, const struct linux_sys_close_range_args *, register_t *); + int linux_sys_epoll_pwait2(struct lwp *, const struct linux_sys_epoll_pwait2_args *, register_t *); #endif /* _LINUX_SYS_SYSCALLARGS_H_ */ Index: src/sys/compat/linux/arch/powerpc/linux_syscalls.c diff -u src/sys/compat/linux/arch/powerpc/linux_syscalls.c:1.92 src/sys/compat/linux/arch/powerpc/linux_syscalls.c:1.93 --- src/sys/compat/linux/arch/powerpc/linux_syscalls.c:1.92 Fri Jul 28 15:01:45 2023 +++ src/sys/compat/linux/arch/powerpc/linux_syscalls.c Sat Jul 29 11:05:46 2023 @@ -1,14 +1,14 @@ -/* $NetBSD: linux_syscalls.c,v 1.92 2023/07/28 19:01:45 christos Exp $ */ +/* $NetBSD: linux_syscalls.c,v 1.93 2023/07/29 15:05:46 christos Exp $ */ /* * System call names. * * DO NOT EDIT-- this file is automatically generated. - * created from NetBSD: syscalls.master,v 1.81 2023/07/28 19:01:11 christos Exp + * created from NetBSD: syscalls.master,v 1.82 2023/07/29 15:04:29 christos Exp */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.92 2023/07/28 19:01:45 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_syscalls.c,v 1.93 2023/07/29 15:05:46 christos Exp $"); #if defined(_KERNEL_OPT) #include <sys/param.h> @@ -223,7 +223,7 @@ const char *const linux_syscallnames[] = /* 188 */ "#188 (unimplemented putpmsg)", /* 189 */ "__vfork14", /* 190 */ "ugetrlimit", - /* 191 */ "#191 (unimplemented / * unused * /)", + /* 191 */ "readahead", #define linux_sys_mmap2_args linux_sys_mmap_args /* 192 */ "mmap2", /* 193 */ "truncate64", @@ -416,7 +416,7 @@ const char *const linux_syscallnames[] = /* 380 */ "#380 (unimplemented preadv2)", /* 381 */ "#381 (unimplemented pwritev2)", /* 382 */ "#382 (unimplemented kexec_file_load)", - /* 383 */ "#383 (unimplemented)", + /* 383 */ "statx", /* 384 */ "#384 (unimplemented)", /* 385 */ "#385 (unimplemented)", /* 386 */ "#386 (unimplemented)", @@ -469,7 +469,7 @@ const char *const linux_syscallnames[] = /* 433 */ "#433 (unimplemented)", /* 434 */ "#434 (unimplemented)", /* 435 */ "#435 (unimplemented)", - /* 436 */ "#436 (unimplemented)", + /* 436 */ "close_range", /* 437 */ "#437 (unimplemented)", /* 438 */ "#438 (unimplemented)", /* 439 */ "#439 (unimplemented)", @@ -745,7 +745,7 @@ const char *const altlinux_syscallnames[ /* 188 */ NULL, /* unimplemented putpmsg */ /* 189 */ "vfork", /* 190 */ NULL, /* ugetrlimit */ - /* 191 */ NULL, /* unimplemented / * unused * / */ + /* 191 */ NULL, /* readahead */ #define linux_sys_mmap2_args linux_sys_mmap_args /* 192 */ NULL, /* mmap2 */ /* 193 */ NULL, /* truncate64 */ @@ -938,7 +938,7 @@ const char *const altlinux_syscallnames[ /* 380 */ NULL, /* unimplemented preadv2 */ /* 381 */ NULL, /* unimplemented pwritev2 */ /* 382 */ NULL, /* unimplemented kexec_file_load */ - /* 383 */ NULL, /* unimplemented */ + /* 383 */ NULL, /* statx */ /* 384 */ NULL, /* unimplemented */ /* 385 */ NULL, /* unimplemented */ /* 386 */ NULL, /* unimplemented */ @@ -991,7 +991,7 @@ const char *const altlinux_syscallnames[ /* 433 */ NULL, /* unimplemented */ /* 434 */ NULL, /* unimplemented */ /* 435 */ NULL, /* unimplemented */ - /* 436 */ NULL, /* unimplemented */ + /* 436 */ NULL, /* close_range */ /* 437 */ NULL, /* unimplemented */ /* 438 */ NULL, /* unimplemented */ /* 439 */ NULL, /* unimplemented */