Module Name: src
Committed By: pgoyette
Date: Mon Sep 10 22:50:52 UTC 2018
Modified Files:
src/sys/compat/netbsd32 [pgoyette-compat]: netbsd32_compat_20.c
netbsd32_compat_50.c netbsd32_compat_60.c netbsd32_mod.c
netbsd32_module.c syscalls.master
src/sys/modules/compat_netbsd32 [pgoyette-compat]: Makefile
src/sys/sys [pgoyette-compat]: module.h
Added Files:
src/sys/compat/netbsd32 [pgoyette-compat]: netbsd32_compat_80.c
src/sys/modules/compat_netbsd32_50 [pgoyette-compat]: Makefile
src/sys/modules/compat_netbsd32_60 [pgoyette-compat]: Makefile
src/sys/modules/compat_netbsd32_80 [pgoyette-compat]: Makefile
Log Message:
More work on splitting the compat_netbsd32 module
To generate a diff of this commit:
cvs rdiff -u -r1.36.10.2 -r1.36.10.3 \
src/sys/compat/netbsd32/netbsd32_compat_20.c
cvs rdiff -u -r1.32 -r1.32.16.1 src/sys/compat/netbsd32/netbsd32_compat_50.c
cvs rdiff -u -r1.3 -r1.3.2.1 src/sys/compat/netbsd32/netbsd32_compat_60.c
cvs rdiff -u -r0 -r1.1.2.1 src/sys/compat/netbsd32/netbsd32_compat_80.c
cvs rdiff -u -r1.13.16.3 -r1.13.16.4 src/sys/compat/netbsd32/netbsd32_mod.c
cvs rdiff -u -r1.6.2.3 -r1.6.2.4 src/sys/compat/netbsd32/netbsd32_module.c
cvs rdiff -u -r1.120.2.5 -r1.120.2.6 src/sys/compat/netbsd32/syscalls.master
cvs rdiff -u -r1.20.12.3 -r1.20.12.4 src/sys/modules/compat_netbsd32/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_netbsd32_50/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_netbsd32_60/Makefile
cvs rdiff -u -r0 -r1.1.2.1 src/sys/modules/compat_netbsd32_80/Makefile
cvs rdiff -u -r1.41.14.11 -r1.41.14.12 src/sys/sys/module.h
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/netbsd32/netbsd32_compat_20.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_20.c:1.36.10.2 src/sys/compat/netbsd32/netbsd32_compat_20.c:1.36.10.3
--- src/sys/compat/netbsd32/netbsd32_compat_20.c:1.36.10.2 Mon Sep 10 10:49:09 2018
+++ src/sys/compat/netbsd32/netbsd32_compat_20.c Mon Sep 10 22:50:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_20.c,v 1.36.10.2 2018/09/10 10:49:09 pgoyette Exp $ */
+/* $NetBSD: netbsd32_compat_20.c,v 1.36.10.3 2018/09/10 22:50:51 pgoyette Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_20.c,v 1.36.10.2 2018/09/10 10:49:09 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_20.c,v 1.36.10.3 2018/09/10 22:50:51 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -220,6 +220,12 @@ compat_20_netbsd32_fhstatfs(struct lwp *
}
static struct syscall_package compat_netbsd32_20_syscalls[] = {
+ { NETBSD32_SYS_statfs, 0,
+ (sy_call_t *)compat_20_netbsd32_statfs },
+ { NETBSD32_SYS_fstatfs, 0,
+ (sy_call_t *)compat_20_netbsd32_fstatfs },
+ { NETBSD32_SYS_fhstatfs, 0,
+ (sy_call_t *)compat_20_netbsd32_fhstatfs },
{ NETBSD32_SYS_getfsstat, 0,
(sy_call_t *)compat_20_netbsd32_getfsstat },
{ 0, 0, NULL }
Index: src/sys/compat/netbsd32/netbsd32_compat_50.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32.16.1
--- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32 Thu Dec 3 10:38:21 2015
+++ src/sys/compat/netbsd32/netbsd32_compat_50.c Mon Sep 10 22:50:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_50.c,v 1.32 2015/12/03 10:38:21 pgoyette Exp $ */
+/* $NetBSD: netbsd32_compat_50.c,v 1.32.16.1 2018/09/10 22:50:51 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.32 2015/12/03 10:38:21 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.32.16.1 2018/09/10 22:50:51 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -44,6 +44,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/module.h>
#include <sys/mount.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
@@ -65,6 +66,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
#include <sys/vfs_syscalls.h>
#include <compat/netbsd32/netbsd32.h>
+#include <compat/netbsd32/netbsd32_syscallvar.h>
#include <compat/netbsd32/netbsd32_syscallargs.h>
#include <compat/netbsd32/netbsd32_conv.h>
#include <compat/sys/mount.h>
@@ -924,4 +926,79 @@ compat_50_netbsd32_quotactl(struct lwp *
return (compat_50_sys_quotactl(l, &ua, retval));
}
+static struct syscall_package compat_netbsd32_50_syscalls[] = {
+ { NETBSD32_SYS_mknod, 0,
+ (sy_call_t *)compat_50_netbsd32_mknod },
+ { NETBSD32_SYS_select, 0,
+ (sy_call_t *)compat_50_netbsd32_select },
+ { NETBSD32_SYS_gettimeofday, 0,
+ (sy_call_t *)compat_50_netbsd32_gettimeofday },
+ { NETBSD32_SYS_settimeofday, 0,
+ (sy_call_t *)compat_50_netbsd32_settimeofday },
+ { NETBSD32_SYS_utimes, 0,
+ (sy_call_t *)compat_50_netbsd32_utimes },
+ { NETBSD32_SYS_futimes, 0,
+ (sy_call_t *)compat_50_netbsd32_futimes },
+ { NETBSD32_SYS_adjtime, 0,
+ (sy_call_t *)compat_50_netbsd32_adjtime },
+ { NETBSD32_SYS_clock_gettime, 0,
+ (sy_call_t *)compat_50_netbsd32_clock_gettime },
+ { NETBSD32_SYS_clock_settime, 0,
+ (sy_call_t *)compat_50_netbsd32_clock_settime },
+ { NETBSD32_SYS_clock_getres, 0,
+ (sy_call_t *)compat_50_netbsd32_clock_getres },
+ { NETBSD32_SYS_timer_settime, 0,
+ (sy_call_t *)compat_50_netbsd32_timer_settime },
+ { NETBSD32_SYS_timer_gettime, 0,
+ (sy_call_t *)compat_50_netbsd32_timer_gettime },
+ { NETBSD32_SYS_nanosleep, 0,
+ (sy_call_t *)compat_50_netbsd32_nanosleep },
+ { NETBSD32_SYS_sigtimedwait, 0,
+ (sy_call_t *)compat_50_netbsd32___sigtimedwait },
+ { NETBSD32_SYS_lutimes, 0,
+ (sy_call_t *)compat_50_netbsd32_lutimes },
+ { NETBSD32_SYS__lwp_park, 0,
+ (sy_call_t *)compat_50_netbsd32__lwp_park },
+ { NETBSD32_SYS_kevent, 0,
+ (sy_call_t *)compat_50_netbsd32_kevent },
+ { NETBSD32_SYS_pselect, 0,
+ (sy_call_t *)compat_50_netbsd32_pselect },
+ { NETBSD32_SYS_pollts, 0,
+ (sy_call_t *)compat_50_netbsd32_pollts },
+ { NETBSD32_SYS___stat30, 0,
+ (sy_call_t *)compat_50_netbsd32___stat30 },
+ { NETBSD32_SYS___lstat30, 0,
+ (sy_call_t *)compat_50_netbsd32___lstat30 },
+ { NETBSD32_SYS___fstat30, 0,
+ (sy_call_t *)compat_50_netbsd32___fstat30 },
+ { NETBSD32_SYS___fhstat40, 0,
+ (sy_call_t *)compat_50_netbsd32___fhstat40 },
+ { NETBSD32_SYS_wait4, 0,
+ (sy_call_t *)compat_50_netbsd32_wait4 },
+ { NETBSD32_SYS_getrusage, 0,
+ (sy_call_t *)compat_50_netbsd32_getrusage },
+ { NETBSD32_SYS_setitimer, 0,
+ (sy_call_t *)compat_50_netbsd32_setitimer },
+ { NETBSD32_SYS_quotactl, 0,
+ (sy_call_t *)compat_50_netbsd32_quotactl },
+ { 0, 0, NULL }
+};
+
+MODULE(MODULE_CLASS_EXEC, compat_netbsd32_50, "compat_netbsd32,compat_50");
+
+static int
+compat_netbsd32_50_modcmd(modcmd_t cmd, void *arg)
+{
+
+ switch (cmd) {
+ MODULE_CMD_INIT:
+ return syscall_establish(NULL, compat_netbsd32_50_syscalls);
+
+ MODULE_CMD_FINI:
+ return syscall_disestablish(NULL, compat_netbsd32_50_syscalls);
+
+ default:
+ return ENOTTY;
+ }
+}
#endif /* COMPAT_50 */
Index: src/sys/compat/netbsd32/netbsd32_compat_60.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_60.c:1.3 src/sys/compat/netbsd32/netbsd32_compat_60.c:1.3.2.1
--- src/sys/compat/netbsd32/netbsd32_compat_60.c:1.3 Wed Dec 6 04:12:25 2017
+++ src/sys/compat/netbsd32/netbsd32_compat_60.c Mon Sep 10 22:50:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_60.c,v 1.3 2017/12/06 04:12:25 christos Exp $ */
+/* $NetBSD: netbsd32_compat_60.c,v 1.3.2.1 2018/09/10 22:50:51 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -36,21 +36,22 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_60.c,v 1.3 2017/12/06 04:12:25 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_60.c,v 1.3.2.1 2018/09/10 22:50:51 pgoyette Exp $");
#include <sys/param.h>
#include <sys/systm.h>
+#include <sys/module.h>
#include <sys/time.h>
#include <sys/dirent.h>
#include <sys/lwp.h>
#include <sys/syscallargs.h>
#include <compat/netbsd32/netbsd32.h>
+#include <compat/netbsd32/netbsd32_syscallvar.h>
#include <compat/netbsd32/netbsd32_syscallargs.h>
#include <compat/netbsd32/netbsd32_conv.h>
-
int
compat_60_netbsd32__lwp_park(struct lwp *l,
const struct compat_60_netbsd32__lwp_park_args *uap, register_t *retval)
@@ -85,3 +86,28 @@ compat_60_netbsd32__lwp_park(struct lwp
return lwp_park(CLOCK_REALTIME, TIMER_ABSTIME, tsp,
SCARG_P32(uap, hint));
}
+
+static struct syscall_package compat_netbsd32_60_syscalls[] = {
+ { NETBSD32_SYS__lwp_park, 0,
+ (sy_call_t *)compat_60_netbsd32__lwp_park },
+ { 0, 0, NULL }
+};
+
+
+MODULE(MODULE_CLASS_EXEC, compat_netbsd32_60, "compat_netbsd,compat_60");
+
+static int
+compat_netbsd32_60_modcmd(modcmd_t CMD, void *arg)
+{
+
+ switch (cmd) {
+ case MODULE_CMD_INIT:
+ return syscall_establish(NULL, compat_netbsd32_60_syscalls);
+
+ case MODULE_CMD_FINI:
+ return syscall_disestablish(NULL, compat_netbsd32_60_syscalls);
+
+ default:
+ return ENOTTY;
+ }
+}
Index: src/sys/compat/netbsd32/netbsd32_mod.c
diff -u src/sys/compat/netbsd32/netbsd32_mod.c:1.13.16.3 src/sys/compat/netbsd32/netbsd32_mod.c:1.13.16.4
--- src/sys/compat/netbsd32/netbsd32_mod.c:1.13.16.3 Sun Sep 9 11:51:48 2018
+++ src/sys/compat/netbsd32/netbsd32_mod.c Mon Sep 10 22:50:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_mod.c,v 1.13.16.3 2018/09/09 11:51:48 pgoyette Exp $ */
+/* $NetBSD: netbsd32_mod.c,v 1.13.16.4 2018/09/10 22:50:51 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_mod.c,v 1.13.16.3 2018/09/09 11:51:48 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_mod.c,v 1.13.16.4 2018/09/10 22:50:51 pgoyette Exp $");
#ifdef _KERNEL_OPT
#include "opt_execfmt.h"
@@ -109,14 +109,17 @@ compat_netbsd32_modcmd(modcmd_t cmd, voi
error = exec_add(netbsd32_execsw,
__arraycount(netbsd32_execsw));
vec_compat32_50_rnd_ioctl = compat32_50_rnd_ioctl;
+ vec_compat32_80_modctl = compat32_80_modctl_compat_stub;
if (error != 0) {
vec_compat32_50_rnd_ioctl = (void *)enosys;
+ vec_compat32_80_modctl = (void *)enosys;
netbsd32_sysctl_fini();
}
return error;
case MODULE_CMD_FINI:
vec_compat32_50_rnd_ioctl = (void *)enosys;
+ vec_compat32_80_modctl = (void *)enosys;
error = exec_remove(netbsd32_execsw,
__arraycount(netbsd32_execsw));
if (error == 0)
Index: src/sys/compat/netbsd32/netbsd32_module.c
diff -u src/sys/compat/netbsd32/netbsd32_module.c:1.6.2.3 src/sys/compat/netbsd32/netbsd32_module.c:1.6.2.4
--- src/sys/compat/netbsd32/netbsd32_module.c:1.6.2.3 Fri Sep 7 23:32:30 2018
+++ src/sys/compat/netbsd32/netbsd32_module.c Mon Sep 10 22:50:51 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_module.c,v 1.6.2.3 2018/09/07 23:32:30 pgoyette Exp $ */
+/* $NetBSD: netbsd32_module.c,v 1.6.2.4 2018/09/10 22:50:51 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_module.c,v 1.6.2.3 2018/09/07 23:32:30 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_module.c,v 1.6.2.4 2018/09/10 22:50:51 pgoyette Exp $");
#include <sys/param.h>
#include <sys/dirent.h>
@@ -42,104 +42,6 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_mod
#include <compat/netbsd32/netbsd32_syscallargs.h>
#include <compat/netbsd32/netbsd32_conv.h>
-#ifdef COMPAT_80
-static int
-modctl32_handle_ostat(int cmd, struct netbsd32_iovec *iov, void *arg)
-{
- omodstat_t *oms, *omso;
- modinfo_t *mi;
- module_t *mod;
- vaddr_t addr;
- size_t size;
- size_t omslen;
- size_t used;
- int error;
- int omscnt;
- bool stataddr;
- const char *suffix = "...";
-
- if (cmd != MODCTL_OSTAT)
- return EINVAL;
-
- /* If not privileged, don't expose kernel addresses. */
- error = kauth_authorize_system(kauth_cred_get(), KAUTH_SYSTEM_MODULE,
- 0, (void *)(uintptr_t)MODCTL_STAT, NULL, NULL);
- stataddr = (error == 0);
-
- kernconfig_lock();
- omscnt = 0;
- TAILQ_FOREACH(mod, &module_list, mod_chain) {
- omscnt++;
- mi = mod->mod_info;
- }
- TAILQ_FOREACH(mod, &module_builtins, mod_chain) {
- omscnt++;
- mi = mod->mod_info;
- }
- omslen = omscnt * sizeof(omodstat_t);
- omso = kmem_zalloc(omslen, KM_SLEEP);
- oms = omso;
- TAILQ_FOREACH(mod, &module_list, mod_chain) {
- mi = mod->mod_info;
- strlcpy(oms->oms_name, mi->mi_name, sizeof(oms->oms_name));
- if (mi->mi_required != NULL) {
- used = strlcpy(oms->oms_required, mi->mi_required,
- sizeof(oms->oms_required));
- if (used >= sizeof(oms->oms_required)) {
- oms->oms_required[sizeof(oms->oms_required) -
- strlen(suffix) - 1] = '\0';
- strlcat(oms->oms_required, suffix,
- sizeof(oms->oms_required));
- }
- }
- if (mod->mod_kobj != NULL && stataddr) {
- kobj_stat(mod->mod_kobj, &addr, &size);
- oms->oms_addr = addr;
- oms->oms_size = size;
- }
- oms->oms_class = mi->mi_class;
- oms->oms_refcnt = mod->mod_refcnt;
- oms->oms_source = mod->mod_source;
- oms->oms_flags = mod->mod_flags;
- oms++;
- }
- TAILQ_FOREACH(mod, &module_builtins, mod_chain) {
- mi = mod->mod_info;
- strlcpy(oms->oms_name, mi->mi_name, sizeof(oms->oms_name));
- if (mi->mi_required != NULL) {
- used = strlcpy(oms->oms_required, mi->mi_required,
- sizeof(oms->oms_required));
- if (used >= sizeof(oms->oms_required)) {
- oms->oms_required[sizeof(oms->oms_required) -
- strlen(suffix) - 1] = '\0';
- strlcat(oms->oms_required, suffix,
- sizeof(oms->oms_required));
- }
- }
- if (mod->mod_kobj != NULL && stataddr) {
- kobj_stat(mod->mod_kobj, &addr, &size);
- oms->oms_addr = addr;
- oms->oms_size = size;
- }
- oms->oms_class = mi->mi_class;
- oms->oms_refcnt = -1;
- KASSERT(mod->mod_source == MODULE_SOURCE_KERNEL);
- oms->oms_source = mod->mod_source;
- oms++;
- }
- kernconfig_unlock();
- error = copyout(omso, NETBSD32PTR64(iov->iov_base),
- uimin(omslen - sizeof(modstat_t), iov->iov_len));
- kmem_free(omso, omslen);
- if (error == 0) {
- iov->iov_len = omslen - sizeof(modstat_t);
- error = copyout(iov, arg, sizeof(*iov));
- }
-
- return error;
-}
-#endif /* COMPAT_80 */
-
static int
modctl32_handle_stat(struct netbsd32_iovec *iov, void *arg)
{
@@ -290,6 +192,13 @@ modctl32_handle_stat(struct netbsd32_iov
return error;
}
+int
+compat32_80_modctl_compat_stub(struct lwp *lwp,
+ const struct netbsd32_modctl_args *uap, register_t *result)
+{
+
+ return EPASSTHROUGH;
+}
int
netbsd32_modctl(struct lwp *lwp, const struct netbsd32_modctl_args *uap,
@@ -310,6 +219,10 @@ netbsd32_modctl(struct lwp *lwp, const s
arg = SCARG_P32(uap, arg);
+ error = (*vec_netbsd32_modctl_compat)(lwp, uap, result);
+ if (error != EPASSTHROUGH)
+ return error;
+
switch (SCARG(uap, cmd)) {
case MODCTL_LOAD:
error = copyin(arg, &ml, sizeof(ml));
@@ -326,16 +239,6 @@ netbsd32_modctl(struct lwp *lwp, const s
}
break;
-#ifdef COMPAT_80
- case MODCTL_OSTAT:
- error = copyin(arg, &iov, sizeof(iov));
- if (error != 0) {
- break;
- }
- error = modctl32_handle_ostat(SCARG(uap, cmd), &iov, arg);
- break;
-#endif
-
case MODCTL_STAT:
error = copyin(arg, &iov, sizeof(iov));
if (error != 0) {
Index: src/sys/compat/netbsd32/syscalls.master
diff -u src/sys/compat/netbsd32/syscalls.master:1.120.2.5 src/sys/compat/netbsd32/syscalls.master:1.120.2.6
--- src/sys/compat/netbsd32/syscalls.master:1.120.2.5 Mon Sep 10 10:49:09 2018
+++ src/sys/compat/netbsd32/syscalls.master Mon Sep 10 22:50:51 2018
@@ -1,4 +1,4 @@
- $NetBSD: syscalls.master,v 1.120.2.5 2018/09/10 10:49:09 pgoyette Exp $
+ $NetBSD: syscalls.master,v 1.120.2.6 2018/09/10 22:50:51 pgoyette Exp $
; from: NetBSD: syscalls.master,v 1.81 1998/07/05 08:49:50 jonathan Exp
; @(#)syscalls.master 8.2 (Berkeley) 1/13/94
@@ -70,7 +70,8 @@
5 STD { int|netbsd32||open(netbsd32_charp path, int flags, \
... mode_t mode); }
6 STD { int|netbsd32||close(int fd); }
-7 COMPAT_50 { int|netbsd32||wait4(int pid, netbsd32_intp status, \
+7 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||wait4(int pid, netbsd32_intp status, \
int options, netbsd32_rusage50p_t rusage); }
8 COMPAT_43 { int|netbsd32||ocreat(netbsd32_charp path, \
mode_t mode); }
@@ -80,13 +81,14 @@
11 OBSOL execv
12 STD { int|netbsd32||chdir(netbsd32_charp path); }
13 STD { int|netbsd32||fchdir(int fd); }
-14 COMPAT_50 { int|netbsd32||mknod(netbsd32_charp path, mode_t mode, \
+14 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||mknod(netbsd32_charp path, mode_t mode, \
uint32_t dev); }
15 STD { int|netbsd32||chmod(netbsd32_charp path, mode_t mode); }
16 STD { int|netbsd32||chown(netbsd32_charp path, uid_t uid, \
gid_t gid); }
17 STD { int|netbsd32||break(netbsd32_charp nsize); }
-18 COMPAT_20 MODULAR compat_netbsd32_20 \
+18 STD MODULAR compat_netbsd32_20 \
{ int|netbsd32||getfsstat(netbsd32_statfsp_t buf, \
netbsd32_long bufsize, int flags); }
19 COMPAT_43 { netbsd32_long|netbsd32||olseek(int fd, \
@@ -142,7 +144,7 @@
netbsd32_sigactionp_t nsa, \
netbsd32_sigactionp_t osa); }
47 NOARGS { gid_t|sys||getgid(void); }
-48 COMPAT_13 MODULAR compat_netbsd32_13 \
+48 STD MODULAR compat_netbsd32_13 \
{ int|netbsd32||sigprocmask(int how, \
int mask); } sigprocmask13
49 STD { int|netbsd32||__getlogin(netbsd32_charp namebuf, \
@@ -150,13 +152,13 @@
50 STD { int|netbsd32||setlogin(netbsd32_charp namebuf); }
51 STD { int|netbsd32||acct(netbsd32_charp path); }
52 COMPAT_13 { int|sys||sigpending(void); } sigpending13
-53 COMPAT_13 MODULAR compat_netbsd32_13 \
+53 STD MODULAR compat_netbsd32_13 \
{ int|netbsd32||sigaltstack13( \
netbsd32_sigaltstack13p_t nss, \
netbsd32_sigaltstack13p_t oss); }
54 STD { int|netbsd32||ioctl(int fd, netbsd32_u_long com, \
... netbsd32_voidp data); }
-55 COMPAT_12 MODULAR compat_netbsd32_12 \
+55 STD MODULAR compat_netbsd32_12 \
{ int|netbsd32||reboot(int opt); }
56 STD { int|netbsd32||revoke(netbsd32_charp path); }
57 STD { int|netbsd32||symlink(netbsd32_charp path, \
@@ -172,7 +174,7 @@
netbsd32_charp where, netbsd32_intp size, \
int arg); }
64 COMPAT_43 { int|sys||getpagesize(void); } ogetpagesize
-65 COMPAT_12 MODULAR compat_netbsd32_12 \
+65 STD MODULAR compat_netbsd32_12 \
{ int|netbsd32||msync(netbsd32_voidp addr, \
netbsd32_size_t len); }
; XXX COMPAT_??? for 4.4BSD-compatible vfork(2)?
@@ -201,13 +203,15 @@
netbsd32_gid_tp gidset); }
81 NOARGS { int|sys||getpgrp(void); }
82 STD { int|netbsd32||setpgid(int pid, int pgid); }
-83 COMPAT_50 { int|netbsd32||setitimer(int which, \
+83 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||setitimer(int which, \
netbsd32_itimerval50p_t itv, \
netbsd32_itimerval50p_t oitv); }
84 COMPAT_43 { int|sys||wait(void); } owait
-85 COMPAT_12 MODULAR compat_netbsd32_12 \
+85 STD MODULAR compat_netbsd32_12 \
{ int|netbsd32||oswapon(netbsd32_charp name); }
-86 COMPAT_50 { int|netbsd32||getitimer(int which, \
+86 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||getitimer(int which, \
netbsd32_itimerval50p_t itv); }
87 COMPAT_43 { int|netbsd32||ogethostname(netbsd32_charp hostname, \
u_int len); }
@@ -218,14 +222,15 @@
91 UNIMPL getdopt
92 STD { int|netbsd32||fcntl(int fd, int cmd, \
... netbsd32_voidp arg); }
-93 COMPAT_50 { int|netbsd32||select(int nd, netbsd32_fd_setp_t in, \
+93 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||select(int nd, netbsd32_fd_setp_t in, \
netbsd32_fd_setp_t ou, netbsd32_fd_setp_t ex, \
netbsd32_timeval50p_t tv); }
94 UNIMPL setdopt
95 STD { int|netbsd32||fsync(int fd); }
96 STD { int|netbsd32||setpriority(int which, int who, \
int prio); }
-97 COMPAT_30 MODULAR compat_netbsd32_30 \
+97 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32||socket(int domain, int type, \
int protocol); }
98 STD { int|netbsd32||connect(int s, \
@@ -249,7 +254,7 @@
netbsd32_sigvecp_t nsv, netbsd32_sigvecp_t osv); }
109 COMPAT_43 { int|netbsd32||sigblock(int mask); }
110 COMPAT_43 { int|netbsd32||sigsetmask(int mask); }
-111 COMPAT_13 MODULAR compat_netbsd32_13 \
+111 STD MODULAR compat_netbsd32_13 \
{ int|netbsd32||sigsuspend(int mask); } sigsuspend13
112 COMPAT_43 { int|netbsd32||osigstack(netbsd32_sigstackp_t nss, \
netbsd32_sigstackp_t oss); }
@@ -258,9 +263,11 @@
114 COMPAT_43 { int|netbsd32||osendmsg(int s, netbsd32_voidp msg, \
int flags); }
115 OBSOL vtrace
-116 COMPAT_50 { int|netbsd32||gettimeofday(netbsd32_timeval50p_t tp, \
+116 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||gettimeofday(netbsd32_timeval50p_t tp, \
netbsd32_timezonep_t tzp); }
-117 COMPAT_50 { int|netbsd32||getrusage(int who, \
+117 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||getrusage(int who, \
netbsd32_rusage50p_t rusage); }
118 STD { int|netbsd32||getsockopt(int s, int level, int name, \
netbsd32_voidp val, netbsd32_intp avalsize); }
@@ -269,7 +276,8 @@
netbsd32_iovecp_t iovp, int iovcnt); }
121 STD { netbsd32_ssize_t|netbsd32||writev(int fd, \
netbsd32_iovecp_t iovp, int iovcnt); }
-122 COMPAT_50 { int|netbsd32||settimeofday(netbsd32_timeval50p_t tv, \
+122 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||settimeofday(netbsd32_timeval50p_t tv, \
netbsd32_timezonep_t tzp); }
123 STD { int|netbsd32||fchown(int fd, uid_t uid, gid_t gid); }
124 STD { int|netbsd32||fchmod(int fd, mode_t mode); }
@@ -296,10 +304,12 @@
136 STD { int|netbsd32||mkdir(netbsd32_charp path, \
mode_t mode); }
137 STD { int|netbsd32||rmdir(netbsd32_charp path); }
-138 COMPAT_50 { int|netbsd32||utimes(netbsd32_charp path, \
+138 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||utimes(netbsd32_charp path, \
netbsd32_timeval50p_t tptr); }
139 OBSOL 4.2 sigreturn
-140 COMPAT_50 { int|netbsd32||adjtime(netbsd32_timeval50p_t delta, \
+140 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||adjtime(netbsd32_timeval50p_t delta, \
netbsd32_timeval50p_t olddelta); }
141 COMPAT_43 { int|netbsd32||ogetpeername(int fdes, \
netbsd32_voidp asa, netbsd32_intp alen); }
@@ -311,7 +321,8 @@
netbsd32_orlimitp_t rlp); }
146 COMPAT_43 { int|netbsd32||killpg(int pgid, int signum); }
147 NOARGS { int|sys||setsid(void); }
-148 COMPAT_50 { int|netbsd32||quotactl(netbsd32_charp path, int cmd, \
+148 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||quotactl(netbsd32_charp path, int cmd, \
int uid, netbsd32_voidp arg); }
149 COMPAT_43 { int|sys||quota(void); } oquota
150 COMPAT_43 { int|netbsd32||ogetsockname(int fdec, \
@@ -330,34 +341,36 @@
156 COMPAT_43 { int|netbsd32||ogetdirentries(int fd, \
netbsd32_charp buf, u_int count, \
netbsd32_longp basep); }
-157 COMPAT_20 { int|netbsd32||statfs(netbsd32_charp path, \
+157 STD MODULAR compat_netbsd32_20 \
+ { int|netbsd32||statfs(netbsd32_charp path, \
netbsd32_statfsp_t buf); }
-158 COMPAT_20 { int|netbsd32||fstatfs(int fd, \
+158 STD MODULAR compat_netbsd32_20 \
+ { int|netbsd32||fstatfs(int fd, \
netbsd32_statfsp_t buf); }
159 UNIMPL
160 UNIMPL
-161 COMPAT_30 MODULAR compat_netbsd32_30 \
+161 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32||getfh(netbsd32_charp fname, \
netbsd32_compat_30_fhandlep_t fhp); }
-162 COMPAT_09 modular compat_netbsd32_09 \
+162 STD MODULAR compat_netbsd32_09 \
{ int|netbsd32||ogetdomainname( \
netbsd32_charp domainname, int len); }
-163 COMPAT_09 modular compat_netbsd32_09 \
+163 STD MODULAR compat_netbsd32_09 \
{ int|netbsd32||osetdomainname( \
netbsd32_charp domainname, int len); }
-164 COMPAT_09 modular compat_netbsd32_09 \
+164 STD MODULAR compat_netbsd32_09 \
{ int|netbsd32||uname(netbsd32_outsnamep_t name); }
165 STD { int|netbsd32||sysarch(int op, netbsd32_voidp parms); }
166 UNIMPL
167 UNIMPL
168 UNIMPL
-169 COMPAT_10 MODULAR compat_netbsd32_sysvipc \
+169 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||semsys(int which, int a2, int a3, \
int a4, int a5); } osemsys
-170 COMPAT_10 MODULAR compat_netbsd32_sysvipc \
+170 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||msgsys(int which, int a2, int a3, \
int a4, int a5, int a6); } omsgsys
-171 COMPAT_10 MODULAR compat_netbsd32_sysvipc \
+171 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||shmsys(int which, int a2, int a3, \
int a4); } oshmsys
172 UNIMPL
@@ -388,12 +401,12 @@
185 EXCL netbsd32_lfs_markv
186 EXCL netbsd32_lfs_segclean
187 EXCL netbsd32_lfs_segwait
-188 COMPAT_12 MODULAR compat_netbsd32_12 \
+188 STD MODULAR compat_netbsd32_12 \
{ int|netbsd32||stat12(netbsd32_charp path, \
netbsd32_stat12p_t ub); }
-189 COMPAT_12 MODULAR compat_netbsd32_12 \
+189 STD MODULAR compat_netbsd32_12 \
{ int|netbsd32||fstat12(int fd, netbsd32_stat12p_t sb); }
-190 COMPAT_12 MODULAR compat_netbsd32_12 \
+190 STD MODULAR compat_netbsd32_12 \
{ int|netbsd32||lstat12(netbsd32_charp path, \
netbsd32_stat12p_t ub); }
191 STD { netbsd32_long|netbsd32||pathconf(netbsd32_charp path, \
@@ -428,7 +441,8 @@
204 STD { int|netbsd32||munlock(netbsd32_voidp addr, \
netbsd32_size_t len); }
205 STD { int|netbsd32||undelete(netbsd32_charp path); }
-206 COMPAT_50 { int|netbsd32||futimes(int fd, \
+206 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||futimes(int fd, \
netbsd32_timeval50p_t tptr); }
207 STD { int|netbsd32||getpgid(pid_t pid); }
208 STD { int|netbsd32||reboot(int opt, \
@@ -447,7 +461,7 @@
218 UNIMPL
219 UNIMPL
; System calls 220-300 are reserved for use by NetBSD
-220 COMPAT_14 MODULAR compat_netbsd32_sysvipc \
+220 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||__semctl(int semid, int semnum, \
int cmd, netbsd32_semunu_t arg); }
221 STD MODULAR compat_netbsd32_sysvipc \
@@ -458,7 +472,7 @@
netbsd32_sembufp_t sops, netbsd32_size_t nsops); }
223 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||semconfig(int flag); }
-224 COMPAT_14 MODULAR compat_netbsd32_sysvipc \
+224 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||msgctl(int msqid, int cmd, \
netbsd32_msqid_ds14p_t buf); }
225 STD MODULAR compat_netbsd32_sysvipc \
@@ -473,7 +487,7 @@
228 STD MODULAR compat_netbsd32_sysvipc \
{ netbsd32_voidp|netbsd32||shmat(int shmid, \
netbsd32_voidp shmaddr, int shmflg); }
-229 COMPAT_14 MODULAR compat_netbsd32_sysvipc \
+229 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||shmctl(int shmid, int cmd, \
netbsd32_shmid_dsp_t buf); }
230 STD MODULAR compat_netbsd32_sysvipc \
@@ -481,13 +495,16 @@
231 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32||shmget(netbsd32_key_t key, \
netbsd32_size_t size, int shmflg); }
-232 COMPAT_50 { int|netbsd32||clock_gettime( \
+232 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||clock_gettime( \
netbsd32_clockid_t clock_id, \
netbsd32_timespec50p_t tp); }
-233 COMPAT_50 { int|netbsd32||clock_settime( \
+233 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||clock_settime( \
netbsd32_clockid_t clock_id, \
netbsd32_timespec50p_t tp); }
-234 COMPAT_50 { int|netbsd32||clock_getres( \
+234 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||clock_getres( \
netbsd32_clockid_t clock_id, \
netbsd32_timespec50p_t tp); }
235 STD { int|netbsd32||timer_create( \
@@ -495,23 +512,27 @@
netbsd32_sigeventp_t evp, \
netbsd32_timerp_t timerid); }
236 STD { int|netbsd32||timer_delete(netbsd32_timer_t timerid); }
-237 COMPAT_50 { int|netbsd32||timer_settime(netbsd32_timer_t timerid, \
+237 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||timer_settime(netbsd32_timer_t timerid, \
int flags, \
netbsd32_itimerspec50p_t value, \
netbsd32_itimerspec50p_t ovalue); }
-238 COMPAT_50 { int|netbsd32||timer_gettime(netbsd32_timer_t timerid, \
+238 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||timer_gettime(netbsd32_timer_t timerid, \
netbsd32_itimerspec50p_t value); }
239 STD { int|netbsd32||timer_getoverrun( \
netbsd32_timer_t timerid); }
;
; Syscalls 240-269 are reserved for other IEEE Std1003.1b syscalls
;
-240 COMPAT_50 { int|netbsd32||nanosleep(netbsd32_timespec50p_t rqtp, \
+240 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||nanosleep(netbsd32_timespec50p_t rqtp, \
netbsd32_timespec50p_t rmtp); }
241 STD { int|netbsd32||fdatasync(int fd); }
242 STD { int|netbsd32||mlockall(int flags); }
243 NOARGS { int|sys||munlockall(void); }
-244 COMPAT_50 { int|netbsd32||__sigtimedwait(netbsd32_sigsetp_t set, \
+244 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||__sigtimedwait(netbsd32_sigsetp_t set, \
netbsd32_siginfop_t info, \
netbsd32_timespec50p_t timeout); }
245 STD { int|netbsd32||sigqueueinfo(pid_t pid, \
@@ -558,13 +579,13 @@
{ netbsd32_ssize_t|netbsd32||mq_receive(mqd_t mqdes, \
netbsd32_charp msg_ptr, \
netbsd32_size_t msg_len, netbsd32_uintp msg_prio); }
-265 COMPAT_50 MODULAR compat_netbsd32_mqueue \
+265 STD MODULAR compat_netbsd32_mqueue \
{ int|netbsd32||mq_timedsend(mqd_t mqdes, \
const netbsd32_charp msg_ptr, \
netbsd32_size_t msg_len, \
unsigned msg_prio, \
const netbsd32_timespec50p_t abs_timeout); }
-266 COMPAT_50 MODULAR compat_netbsd32_mqueue \
+266 STD MODULAR compat_netbsd32_mqueue \
{ netbsd32_ssize_t|netbsd32||mq_timedreceive( \
mqd_t mqdes, \
netbsd32_charp msg_ptr, netbsd32_size_t msg_len, \
@@ -577,7 +598,7 @@
netbsd32_charp to); }
271 STD { int|netbsd32||swapctl(int cmd, netbsd32_voidp arg, \
int misc); }
-272 COMPAT_30 MODULAR compat_netbsd32_30 \
+272 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32||getdents(int fd, netbsd32_charp buf, \
netbsd32_size_t count); }
273 STD { int|netbsd32||minherit(netbsd32_voidp addr, \
@@ -586,17 +607,18 @@
mode_t mode); }
275 STD { int|netbsd32||lchown(netbsd32_charp path, uid_t uid, \
gid_t gid); }
-276 COMPAT_50 { int|netbsd32||lutimes(netbsd32_charp path, \
+276 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||lutimes(netbsd32_charp path, \
netbsd32_timeval50p_t tptr); }
277 STD { int|netbsd32|13|msync(netbsd32_voidp addr, \
netbsd32_size_t len, int flags); }
-278 COMPAT_30 MODULAR compat_netbsd32_30 \
+278 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32|13|stat(netbsd32_charp path, \
netbsd32_stat13p_t ub); }
-279 COMPAT_30 MODULAR compat_netbsd32_30 \
+279 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32|13|fstat(int fd, \
netbsd32_stat13p_t sb); }
-280 COMPAT_30 MODULAR compat_netbsd32_30 \
+280 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32|13|lstat(netbsd32_charp path, \
netbsd32_stat13p_t ub); }
281 STD { int|netbsd32|14|sigaltstack(\
@@ -633,21 +655,22 @@
296 STD { int|netbsd32||__getcwd(netbsd32_charp bufp, \
netbsd32_size_t length); }
297 STD { int|netbsd32||fchroot(int fd); }
-298 COMPAT_30 MODULAR compat_netbsd32_30 \
+298 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32||fhopen(netbsd32_fhandlep_t fhp, \
int flags); }
-299 COMPAT_30 MODULAR compat_netbsd32_30 \
+299 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32||fhstat(netbsd32_fhandlep_t fhp, \
netbsd32_stat13p_t sb); }
-300 COMPAT_20 { int|netbsd32||fhstatfs(netbsd32_fhandlep_t fhp, \
+300 STD MODULAR compat_netbsd32_20 \
+ { int|netbsd32||fhstatfs(netbsd32_fhandlep_t fhp, \
netbsd32_stat50p_t buf); }
-301 COMPAT_50 MODULAR compat_netbsd32_sysvipc \
+301 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32|14|semctl(int semid, int semnum, \
int cmd, ... netbsd32_semun50p_t arg); }
-302 COMPAT_50 MODULAR compat_netbsd32_sysvipc \
+302 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32|13|msgctl(int msqid, int cmd, \
netbsd32_msqid_ds50p_t buf); }
-303 COMPAT_50 MODULAR compat_netbsd32_sysvipc \
+303 STD MODULAR compat_netbsd32_sysvipc \
{ int|netbsd32|13|shmctl(int shmid, int cmd, \
netbsd32_shmid_ds50p_t buf); }
304 STD { int|netbsd32||lchflags(netbsd32_charp path, \
@@ -670,7 +693,8 @@
317 STD { void|netbsd32||_lwp_setprivate(netbsd32_voidp ptr); }
318 STD { int|netbsd32||_lwp_kill(lwpid_t target, int signo); }
319 STD { int|netbsd32||_lwp_detach(lwpid_t target); }
-320 COMPAT_50 { int|netbsd32||_lwp_park(netbsd32_timespec50p_t ts, \
+320 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||_lwp_park(netbsd32_timespec50p_t ts, \
lwpid_t unpark, netbsd32_voidp hint, \
netbsd32_voidp unparkhint); }
321 STD { int|netbsd32||_lwp_unpark(lwpid_t target, \
@@ -707,7 +731,8 @@
343 STD { int|netbsd32||rasctl(netbsd32_voidp addr, \
netbsd32_size_t len, int op); }
344 NOARGS { int|sys||kqueue(void); }
-345 COMPAT_50 { int|netbsd32||kevent(int fd, \
+345 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||kevent(int fd, \
netbsd32_keventp_t changelist, \
netbsd32_size_t nchanges, \
netbsd32_keventp_t eventlist, \
@@ -739,7 +764,7 @@
netbsd32_statvfsp_t buf, int flags); }
358 STD { int|netbsd32||fstatvfs1(int fd, \
netbsd32_statvfsp_t buf, int flags); }
-359 COMPAT_30 MODULAR compat_netbsd32_30 \
+359 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32||fhstatvfs1(netbsd32_fhandlep_t fhp, \
netbsd32_statvfsp_t buf, int flags); }
360 STD { int|netbsd32||extattrctl(netbsd32_charp path, \
@@ -780,11 +805,13 @@
372 STD { int|netbsd32||extattr_list_link(netbsd32_charp path, \
int attrnamespace, netbsd32_voidp data, \
netbsd32_size_t nbytes); }
-373 COMPAT_50 { int|netbsd32||pselect(int nd, netbsd32_fd_setp_t in, \
+373 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||pselect(int nd, netbsd32_fd_setp_t in, \
netbsd32_fd_setp_t ou, netbsd32_fd_setp_t ex, \
netbsd32_timespec50p_t ts, \
netbsd32_sigsetp_t mask); }
-374 COMPAT_50 { int|netbsd32||pollts(netbsd32_pollfdp_t fds, \
+374 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32||pollts(netbsd32_pollfdp_t fds, \
u_int nfds, netbsd32_timespec50p_t ts, \
netbsd32_sigsetp_t mask); }
375 STD { int|netbsd32||setxattr(netbsd32_charp path, \
@@ -817,16 +844,19 @@
netbsd32_charp name); }
386 STD { int|netbsd32||fremovexattr(int fd, \
netbsd32_charp name); }
-387 COMPAT_50 { int|netbsd32|30|stat(netbsd32_charp path, \
+387 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32|30|stat(netbsd32_charp path, \
netbsd32_stat50p_t ub); }
-388 COMPAT_50 { int|netbsd32|30|fstat(int fd, \
+388 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32|30|fstat(int fd, \
netbsd32_stat50p_t sb); }
-389 COMPAT_50 { int|netbsd32|30|lstat( \
+389 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32|30|lstat( \
netbsd32_charp path, netbsd32_stat50p_t ub); }
390 STD { int|netbsd32|30|getdents(int fd, \
netbsd32_charp buf, netbsd32_size_t count); }
391 IGNORED old posix fadvise
-392 COMPAT_30 MODULAR compat_netbsd32_30 \
+392 STD MODULAR compat_netbsd32_30 \
{ int|netbsd32|30|fhstat( \
netbsd32_fhandlep_t fhp, \
netbsd32_stat50p_t sb); }
@@ -845,7 +875,8 @@
397 STD { int|netbsd32|40|fhstatvfs1( \
netbsd32_pointer_t fhp, netbsd32_size_t fh_size,\
netbsd32_statvfsp_t buf, int flags); }
-398 COMPAT_50 { int|netbsd32|40|fhstat( \
+398 STD MODULAR compat_netbsd32_50 \
+ { int|netbsd32|40|fhstat( \
netbsd32_pointer_t fhp, netbsd32_size_t fh_size,\
netbsd32_stat50p_t sb); }
@@ -929,7 +960,8 @@
mqd_t mqdes, netbsd32_charp msg_ptr, \
netbsd32_size_t msg_len, netbsd32_uintp msg_prio, \
const netbsd32_timespecp_t abs_timeout); }
-434 COMPAT_60 { int|netbsd32||_lwp_park( \
+434 STD MODULAR compat_netbsd32_60 \
+ { int|netbsd32||_lwp_park( \
const netbsd32_timespecp_t ts, \
lwpid_t unpark, const netbsd32_voidp hint, \
const netbsd32_voidp unparkhint); }
Index: src/sys/modules/compat_netbsd32/Makefile
diff -u src/sys/modules/compat_netbsd32/Makefile:1.20.12.3 src/sys/modules/compat_netbsd32/Makefile:1.20.12.4
--- src/sys/modules/compat_netbsd32/Makefile:1.20.12.3 Mon Sep 10 10:59:50 2018
+++ src/sys/modules/compat_netbsd32/Makefile Mon Sep 10 22:50:52 2018
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.20.12.3 2018/09/10 10:59:50 pgoyette Exp $
+# $NetBSD: Makefile,v 1.20.12.4 2018/09/10 22:50:52 pgoyette Exp $
.include "../Makefile.inc"
.include "../Makefile.assym"
@@ -27,7 +27,7 @@ CPPFLAGS+= -DNTP -DKTRACE -DMODULAR
SRCS+= netbsd32_compat_10.c # belongs to compat_netbsd32_sysvipc_10
SRCS+= netbsd32_compat_14.c # belongs to compat_netbsd32_sysvipc_14
SRCS+= netbsd32_compat_43.c
-SRCS+= netbsd32_compat_50.c netbsd32_compat_60.c
+SRCS+= netbsd32_compat_60.c
SRCS+= netbsd32_core.c netbsd32_event.c
SRCS+= netbsd32_exec_elf32.c
SRCS+= netbsd32_execve.c netbsd32_fs.c
Index: src/sys/sys/module.h
diff -u src/sys/sys/module.h:1.41.14.11 src/sys/sys/module.h:1.41.14.12
--- src/sys/sys/module.h:1.41.14.11 Fri Sep 7 23:32:30 2018
+++ src/sys/sys/module.h Mon Sep 10 22:50:52 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: module.h,v 1.41.14.11 2018/09/07 23:32:30 pgoyette Exp $ */
+/* $NetBSD: module.h,v 1.41.14.12 2018/09/10 22:50:52 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -218,6 +218,11 @@ void module_print(const char *, ...) __p
extern char module_base[MODULE_BASE_SIZE];
extern const char *module_machine;
+extern int (*vec_compat32_80_modctl)(struct lwp *,
+ const struct netbsd32_modctl_args *, register_t *);
+extern int compat32_80_modctl_compat_stub(struct lwp *,
+ const struct netbsd32_modctl_args *, register_t *);
+
#else /* _KERNEL */
#include <stdint.h>
Added files:
Index: src/sys/compat/netbsd32/netbsd32_compat_80.c
diff -u /dev/null src/sys/compat/netbsd32/netbsd32_compat_80.c:1.1.2.1
--- /dev/null Mon Sep 10 22:50:52 2018
+++ src/sys/compat/netbsd32/netbsd32_compat_80.c Mon Sep 10 22:50:51 2018
@@ -0,0 +1,201 @@
+/* $NetBSD: netbsd32_compat_80.c,v 1.1.2.1 2018/09/10 22:50:51 pgoyette Exp $ */
+
+/*-
+ * Copyright (c) 2008 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * This code is derived from software developed for The NetBSD Foundation.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_80.c,v 1.1.2.1 2018/09/10 22:50:51 pgoyette Exp $");
+
+#include <sys/param.h>
+#include <sys/dirent.h>
+#include <sys/kauth.h>
+#include <sys/module.h>
+#include <sys/kobj.h>
+
+#include <compat/netbsd32/netbsd32.h>
+#include <compat/netbsd32/netbsd32_syscall.h>
+#include <compat/netbsd32/netbsd32_syscallargs.h>
+#include <compat/netbsd32/netbsd32_conv.h>
+
+#ifdef COMPAT_80
+static int
+modctl32_handle_ostat(int cmd, struct netbsd32_iovec *iov, void *arg)
+{
+ omodstat_t *oms, *omso;
+ modinfo_t *mi;
+ module_t *mod;
+ vaddr_t addr;
+ size_t size;
+ size_t omslen;
+ size_t used;
+ int error;
+ int omscnt;
+ bool stataddr;
+ const char *suffix = "...";
+
+ if (cmd != MODCTL_OSTAT)
+ return EINVAL;
+
+ /* If not privileged, don't expose kernel addresses. */
+ error = kauth_authorize_system(kauth_cred_get(), KAUTH_SYSTEM_MODULE,
+ 0, (void *)(uintptr_t)MODCTL_STAT, NULL, NULL);
+ stataddr = (error == 0);
+
+ kernconfig_lock();
+ omscnt = 0;
+ TAILQ_FOREACH(mod, &module_list, mod_chain) {
+ omscnt++;
+ mi = mod->mod_info;
+ }
+ TAILQ_FOREACH(mod, &module_builtins, mod_chain) {
+ omscnt++;
+ mi = mod->mod_info;
+ }
+ omslen = omscnt * sizeof(omodstat_t);
+ omso = kmem_zalloc(omslen, KM_SLEEP);
+ oms = omso;
+ TAILQ_FOREACH(mod, &module_list, mod_chain) {
+ mi = mod->mod_info;
+ strlcpy(oms->oms_name, mi->mi_name, sizeof(oms->oms_name));
+ if (mi->mi_required != NULL) {
+ used = strlcpy(oms->oms_required, mi->mi_required,
+ sizeof(oms->oms_required));
+ if (used >= sizeof(oms->oms_required)) {
+ oms->oms_required[sizeof(oms->oms_required) -
+ strlen(suffix) - 1] = '\0';
+ strlcat(oms->oms_required, suffix,
+ sizeof(oms->oms_required));
+ }
+ }
+ if (mod->mod_kobj != NULL && stataddr) {
+ kobj_stat(mod->mod_kobj, &addr, &size);
+ oms->oms_addr = addr;
+ oms->oms_size = size;
+ }
+ oms->oms_class = mi->mi_class;
+ oms->oms_refcnt = mod->mod_refcnt;
+ oms->oms_source = mod->mod_source;
+ oms->oms_flags = mod->mod_flags;
+ oms++;
+ }
+ TAILQ_FOREACH(mod, &module_builtins, mod_chain) {
+ mi = mod->mod_info;
+ strlcpy(oms->oms_name, mi->mi_name, sizeof(oms->oms_name));
+ if (mi->mi_required != NULL) {
+ used = strlcpy(oms->oms_required, mi->mi_required,
+ sizeof(oms->oms_required));
+ if (used >= sizeof(oms->oms_required)) {
+ oms->oms_required[sizeof(oms->oms_required) -
+ strlen(suffix) - 1] = '\0';
+ strlcat(oms->oms_required, suffix,
+ sizeof(oms->oms_required));
+ }
+ }
+ if (mod->mod_kobj != NULL && stataddr) {
+ kobj_stat(mod->mod_kobj, &addr, &size);
+ oms->oms_addr = addr;
+ oms->oms_size = size;
+ }
+ oms->oms_class = mi->mi_class;
+ oms->oms_refcnt = -1;
+ KASSERT(mod->mod_source == MODULE_SOURCE_KERNEL);
+ oms->oms_source = mod->mod_source;
+ oms++;
+ }
+ kernconfig_unlock();
+ error = copyout(omso, NETBSD32PTR64(iov->iov_base),
+ uimin(omslen - sizeof(modstat_t), iov->iov_len));
+ kmem_free(omso, omslen);
+ if (error == 0) {
+ iov->iov_len = omslen - sizeof(modstat_t);
+ error = copyout(iov, arg, sizeof(*iov));
+ }
+
+ return error;
+}
+
+int
+netbsd32_80_modctl(struct lwp *lwp, const struct netbsd32_modctl_args *uap,
+ register_t *result)
+{
+ /* {
+ syscallarg(int) cmd;
+ syscallarg(netbsd32_voidp) arg;
+ } */
+ char buf[MAXMODNAME];
+ struct netbsd32_iovec iov;
+ struct netbsd32_modctl_load ml;
+ int error;
+ void *arg;
+#ifdef MODULAR
+ uintptr_t loadtype;
+#endif
+
+ arg = SCARG_P32(uap, arg);
+
+ switch (SCARG(uap, cmd)) {
+ case MODCTL_OSTAT:
+ error = copyin(arg, &iov, sizeof(iov));
+ if (error != 0) {
+ break;
+ }
+ error = modctl32_handle_ostat(SCARG(uap, cmd), &iov, arg);
+ break;
+ default:
+ error = EPASSTHROUGH;
+ break;
+ }
+
+ return error;
+}
+
+MODULE(MODULE_CLASS_EXEC, compat_netbsd32_80, "compat_netbsd32,compat_80");
+
+static int
+compat_netbsd32_80_modcmd(modcmd_t cmd, void *arg)
+{
+static int (*orig_netbsd32_80_modctl)(struct lwp *,
+ const struct netbsd32_modctl_args *, register_t *);
+
+ switch (cmd) {
+ case MODULE_CMD_INIT:
+ orig_netbsd32_80_modctl = vec_compat32_80_modctl;
+ vec_compat32_80_modctl = netbsd32_80_modctl;
+ return 0;
+
+ case MODULE_CMD_FINI:
+ vec_compat32_80_modctl = orig_netbsd32_80_modctl;
+ return 0;
+
+ default:
+ return ENOTTY;
+ }
+}
+#endif /* COMPAT_80 */
+
+vec_compat32_80_modctl = compat32_80_modctl_compat_stub;
Index: src/sys/modules/compat_netbsd32_50/Makefile
diff -u /dev/null src/sys/modules/compat_netbsd32_50/Makefile:1.1.2.1
--- /dev/null Mon Sep 10 22:50:52 2018
+++ src/sys/modules/compat_netbsd32_50/Makefile Mon Sep 10 22:50:52 2018
@@ -0,0 +1,13 @@
+# $NetBSD: Makefile,v 1.1.2.1 2018/09/10 22:50:52 pgoyette Exp $
+
+.include "../Makefile.inc"
+
+.PATH: ${S}/compat/netbsd32
+
+KMOD= compat_netbsd32_50
+
+CPPFLAGS+= -DCOMPAT_50 -DCOMPAT_60 -DCOMPAT_70 -DCOMPAT_80
+
+SRCS+= netbsd32_compat_50.c
+
+.include <bsd.kmodule.mk>
Index: src/sys/modules/compat_netbsd32_60/Makefile
diff -u /dev/null src/sys/modules/compat_netbsd32_60/Makefile:1.1.2.1
--- /dev/null Mon Sep 10 22:50:52 2018
+++ src/sys/modules/compat_netbsd32_60/Makefile Mon Sep 10 22:50:52 2018
@@ -0,0 +1,13 @@
+# $NetBSD: Makefile,v 1.1.2.1 2018/09/10 22:50:52 pgoyette Exp $
+
+.include "../Makefile.inc"
+
+.PATH: ${S}/compat/netbsd32
+
+KMOD= compat_netbsd32_60
+
+CPPFLAGS+= -DCOMPAT_60 -DCOMPAT_70 -DCOMPAT_80
+
+SRCS+= netbsd32_compat_60.c
+
+.include <bsd.kmodule.mk>
Index: src/sys/modules/compat_netbsd32_80/Makefile
diff -u /dev/null src/sys/modules/compat_netbsd32_80/Makefile:1.1.2.1
--- /dev/null Mon Sep 10 22:50:52 2018
+++ src/sys/modules/compat_netbsd32_80/Makefile Mon Sep 10 22:50:52 2018
@@ -0,0 +1,13 @@
+# $NetBSD: Makefile,v 1.1.2.1 2018/09/10 22:50:52 pgoyette Exp $
+
+.include "../Makefile.inc"
+
+.PATH: ${S}/compat/netbsd32
+
+KMOD= compat_netbsd32_60
+
+CPPFLAGS+= -DCOMPAT_80
+
+SRCS+= netbsd32_compat_80.c
+
+.include <bsd.kmodule.mk>