This commit is contained in:
rjs 2018-07-31 13:02:15 +00:00
parent f851130d69
commit 8c89512565
8 changed files with 116 additions and 25 deletions

View File

@ -1,14 +1,14 @@
/* $NetBSD: init_sysent.c,v 1.320 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: init_sysent.c,v 1.321 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call switch table.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.320 2018/07/12 10:46:48 maxv Exp $");
__KERNEL_RCSID(0, "$NetBSD: init_sysent.c,v 1.321 2018/07/31 13:02:15 rjs Exp $");
#include "opt_modular.h"
#include "opt_ntp.h"
@ -979,8 +979,10 @@ struct sysent sysent[] = {
.sy_call = (sy_call_t *)sys_fpathconf
}, /* 192 = fpathconf */
{
.sy_call = sys_nosys,
}, /* 193 = filler */
ns(struct sys_getsockopt2_args),
.sy_flags = SYCALL_ARG_PTR,
.sy_call = (sy_call_t *)sys_getsockopt2
}, /* 193 = getsockopt2 */
{
ns(struct sys_getrlimit_args),
.sy_flags = SYCALL_ARG_PTR,

View File

@ -1,14 +1,14 @@
/* $NetBSD: syscalls.c,v 1.311 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: syscalls.c,v 1.312 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call names.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: syscalls.c,v 1.311 2018/07/12 10:46:48 maxv Exp $");
__KERNEL_RCSID(0, "$NetBSD: syscalls.c,v 1.312 2018/07/31 13:02:15 rjs Exp $");
#if defined(_KERNEL_OPT)
#include "opt_modular.h"
@ -236,7 +236,7 @@ const char *const syscallnames[] = {
/* 190 */ "compat_12_lstat12",
/* 191 */ "pathconf",
/* 192 */ "fpathconf",
/* 193 */ "#193 (unimplemented)",
/* 193 */ "getsockopt2",
/* 194 */ "getrlimit",
/* 195 */ "setrlimit",
/* 196 */ "compat_12_getdirentries",
@ -773,7 +773,7 @@ const char *const altsyscallnames[] = {
/* 190 */ NULL, /* compat_12_lstat12 */
/* 191 */ NULL, /* pathconf */
/* 192 */ NULL, /* fpathconf */
/* 193 */ NULL, /* unimplemented */
/* 193 */ NULL, /* getsockopt2 */
/* 194 */ NULL, /* getrlimit */
/* 195 */ NULL, /* setrlimit */
/* 196 */ NULL, /* compat_12_getdirentries */

View File

@ -1,14 +1,14 @@
/* $NetBSD: syscalls_autoload.c,v 1.27 2018/01/06 16:41:23 kamil Exp $ */
/* $NetBSD: syscalls_autoload.c,v 1.28 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call autoload table.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.287 2017/12/08 01:19:29 christos Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: syscalls_autoload.c,v 1.27 2018/01/06 16:41:23 kamil Exp $");
__KERNEL_RCSID(0, "$NetBSD: syscalls_autoload.c,v 1.28 2018/07/31 13:02:15 rjs Exp $");
#include <sys/proc.h>
static struct sc_autoload netbsd_syscalls_autoload[] = {

View File

@ -1,4 +1,4 @@
/* $NetBSD: systrace_args.c,v 1.30 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: systrace_args.c,v 1.31 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call argument to DTrace register array converstion.
@ -1367,6 +1367,17 @@ systrace_args(register_t sysnum, const void *params, uintptr_t *uarg, size_t *n_
*n_args = 2;
break;
}
/* sys_getsockopt2 */
case 193: {
const struct sys_getsockopt2_args *p = params;
iarg[0] = SCARG(p, s); /* int */
iarg[1] = SCARG(p, level); /* int */
iarg[2] = SCARG(p, name); /* int */
uarg[3] = (intptr_t) SCARG(p, val); /* void * */
uarg[4] = (intptr_t) SCARG(p, avalsize); /* socklen_t * */
*n_args = 5;
break;
}
/* sys_getrlimit */
case 194: {
const struct sys_getrlimit_args *p = params;
@ -5860,6 +5871,28 @@ systrace_entry_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
break;
};
break;
/* sys_getsockopt2 */
case 193:
switch(ndx) {
case 0:
p = "int";
break;
case 1:
p = "int";
break;
case 2:
p = "int";
break;
case 3:
p = "void *";
break;
case 4:
p = "socklen_t *";
break;
default:
break;
};
break;
/* sys_getrlimit */
case 194:
switch(ndx) {
@ -10641,6 +10674,11 @@ systrace_return_setargdesc(int sysnum, int ndx, char *desc, size_t descsz)
if (ndx == 0 || ndx == 1)
p = "long";
break;
/* sys_getsockopt2 */
case 193:
if (ndx == 0 || ndx == 1)
p = "int";
break;
/* sys_getrlimit */
case 194:
if (ndx == 0 || ndx == 1)

View File

@ -1,10 +1,10 @@
/* $NetBSD: rump_syscalls.h,v 1.109 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: rump_syscalls.h,v 1.110 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call protos in rump namespace.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#ifndef _RUMP_RUMP_SYSCALLS_H_
@ -820,6 +820,10 @@
#define RUMP_SYS_RENAME_GETPPID rump___sysimpl_getppid
#endif
#ifndef RUMP_SYS_RENAME_GETSOCKOPT2
#define RUMP_SYS_RENAME_GETSOCKOPT2 rump___sysimpl_getsockopt2
#endif
#ifndef RUMP_SYS_RENAME_GETTIMEOFDAY
#define RUMP_SYS_RENAME_GETTIMEOFDAY rump___sysimpl_gettimeofday50
#endif
@ -928,6 +932,7 @@ int rump_sys_setegid(gid_t) __RENAME(RUMP_SYS_RENAME_SETEGID);
int rump_sys_seteuid(uid_t) __RENAME(RUMP_SYS_RENAME_SETEUID);
long rump_sys_pathconf(const char *, int) __RENAME(RUMP_SYS_RENAME_PATHCONF);
long rump_sys_fpathconf(int, int) __RENAME(RUMP_SYS_RENAME_FPATHCONF);
int rump_sys_getsockopt2(int, int, int, void *, socklen_t *) __RENAME(RUMP_SYS_RENAME_GETSOCKOPT2);
int rump_sys_getrlimit(int, struct rlimit *) __RENAME(RUMP_SYS_RENAME_GETRLIMIT);
int rump_sys_setrlimit(int, const struct rlimit *) __RENAME(RUMP_SYS_RENAME_SETRLIMIT);
off_t rump_sys_lseek(int, off_t, int) __RENAME(RUMP_SYS_RENAME_LSEEK);

View File

@ -1,10 +1,10 @@
/* $NetBSD: rump_syscalls.c,v 1.138 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: rump_syscalls.c,v 1.139 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call vector and marshalling for rump.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#ifdef RUMP_CLIENT
@ -15,7 +15,7 @@
#ifdef __NetBSD__
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: rump_syscalls.c,v 1.138 2018/07/12 10:46:48 maxv Exp $");
__KERNEL_RCSID(0, "$NetBSD: rump_syscalls.c,v 1.139 2018/07/31 13:02:15 rjs Exp $");
#include <sys/fstypes.h>
#include <sys/proc.h>
@ -2224,6 +2224,38 @@ __weak_alias(_fpathconf,rump___sysimpl_fpathconf);
__strong_alias(_sys_fpathconf,rump___sysimpl_fpathconf);
#endif /* RUMP_KERNEL_IS_LIBC */
int rump___sysimpl_getsockopt2(int, int, int, void *, socklen_t *);
int
rump___sysimpl_getsockopt2(int s, int level, int name, void * val, socklen_t * avalsize)
{
register_t retval[2];
int error = 0;
int rv = -1;
struct sys_getsockopt2_args callarg;
memset(&callarg, 0, sizeof(callarg));
SPARG(&callarg, s) = s;
SPARG(&callarg, level) = level;
SPARG(&callarg, name) = name;
SPARG(&callarg, val) = val;
SPARG(&callarg, avalsize) = avalsize;
error = rsys_syscall(SYS_getsockopt2, &callarg, sizeof(callarg), retval);
rsys_seterrno(error);
if (error == 0) {
if (sizeof(int) > sizeof(register_t))
rv = *(int *)retval;
else
rv = *retval;
}
return rv;
}
#ifdef RUMP_KERNEL_IS_LIBC
__weak_alias(getsockopt2,rump___sysimpl_getsockopt2);
__weak_alias(_getsockopt2,rump___sysimpl_getsockopt2);
__strong_alias(_sys_getsockopt2,rump___sysimpl_getsockopt2);
#endif /* RUMP_KERNEL_IS_LIBC */
int rump___sysimpl_getrlimit(int, struct rlimit *);
int
rump___sysimpl_getrlimit(int which, struct rlimit * rlp)
@ -7289,9 +7321,9 @@ struct sysent rump_sysent[] = {
.sy_call = (sy_call_t *)rumpns_enosys,
}, /* 192 = fpathconf */
{
.sy_flags = SYCALL_NOSYS,
ns(struct sys_getsockopt2_args),
.sy_call = (sy_call_t *)rumpns_enosys,
}, /* 193 = filler */
}, /* 193 = getsockopt2 */
{
ns(struct sys_getrlimit_args),
.sy_call = (sy_call_t *)rumpns_enosys,

View File

@ -1,10 +1,10 @@
/* $NetBSD: syscall.h,v 1.305 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: syscall.h,v 1.306 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call numbers.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#ifndef _SYS_SYSCALL_H_
@ -537,6 +537,9 @@
/* syscall: "fpathconf" ret: "long" args: "int" "int" */
#define SYS_fpathconf 192
/* syscall: "getsockopt2" ret: "int" args: "int" "int" "int" "void *" "socklen_t *" */
#define SYS_getsockopt2 193
/* syscall: "getrlimit" ret: "int" args: "int" "struct rlimit *" */
#define SYS_getrlimit 194

View File

@ -1,10 +1,10 @@
/* $NetBSD: syscallargs.h,v 1.289 2018/07/12 10:46:48 maxv Exp $ */
/* $NetBSD: syscallargs.h,v 1.290 2018/07/31 13:02:15 rjs Exp $ */
/*
* System call argument lists.
*
* DO NOT EDIT-- this file is automatically generated.
* created from NetBSD: syscalls.master,v 1.291 2018/01/06 16:41:23 kamil Exp
* created from NetBSD: syscalls.master,v 1.293 2018/07/31 13:00:13 rjs Exp
*/
#ifndef _SYS_SYSCALLARGS_H_
@ -1172,6 +1172,15 @@ struct sys_fpathconf_args {
};
check_syscall_args(sys_fpathconf)
struct sys_getsockopt2_args {
syscallarg(int) s;
syscallarg(int) level;
syscallarg(int) name;
syscallarg(void *) val;
syscallarg(socklen_t *) avalsize;
};
check_syscall_args(sys_getsockopt2)
struct sys_getrlimit_args {
syscallarg(int) which;
syscallarg(struct rlimit *) rlp;
@ -3478,6 +3487,8 @@ int sys_pathconf(struct lwp *, const struct sys_pathconf_args *, register_t *);
int sys_fpathconf(struct lwp *, const struct sys_fpathconf_args *, register_t *);
int sys_getsockopt2(struct lwp *, const struct sys_getsockopt2_args *, register_t *);
int sys_getrlimit(struct lwp *, const struct sys_getrlimit_args *, register_t *);
int sys_setrlimit(struct lwp *, const struct sys_setrlimit_args *, register_t *);