Module Name: src
Committed By: matt
Date: Tue Jan 4 10:59:29 UTC 2011
Modified Files:
src/sys/compat/netbsd32: files.netbsd32 netbsd32_sa.c
Log Message:
Make the SA support as optional as is possible.
To generate a diff of this commit:
cvs rdiff -u -r1.29 -r1.30 src/sys/compat/netbsd32/files.netbsd32
cvs rdiff -u -r1.11 -r1.12 src/sys/compat/netbsd32/netbsd32_sa.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/netbsd32/files.netbsd32
diff -u src/sys/compat/netbsd32/files.netbsd32:1.29 src/sys/compat/netbsd32/files.netbsd32:1.30
--- src/sys/compat/netbsd32/files.netbsd32:1.29 Thu Dec 10 14:10:35 2009
+++ src/sys/compat/netbsd32/files.netbsd32 Tue Jan 4 10:59:28 2011
@@ -1,4 +1,4 @@
-# $NetBSD: files.netbsd32,v 1.29 2009/12/10 14:10:35 matt Exp $
+# $NetBSD: files.netbsd32,v 1.30 2011/01/04 10:59:28 matt Exp $
#
# config file description for machine-independent netbsd32 compat code.
# included by ports that need it.
@@ -17,7 +17,7 @@
file compat/netbsd32/netbsd32_ipc.c compat_netbsd32
file compat/netbsd32/netbsd32_lwp.c compat_netbsd32
file compat/netbsd32/netbsd32_mod.c compat_netbsd32
-file compat/netbsd32/netbsd32_sa.c compat_netbsd32 & kern_sa
+file compat/netbsd32/netbsd32_sa.c compat_netbsd32
file compat/netbsd32/netbsd32_select.c compat_netbsd32
file compat/netbsd32/netbsd32_sem.c compat_netbsd32 & p1003_1b_semaphore
file compat/netbsd32/netbsd32_signal.c compat_netbsd32
Index: src/sys/compat/netbsd32/netbsd32_sa.c
diff -u src/sys/compat/netbsd32/netbsd32_sa.c:1.11 src/sys/compat/netbsd32/netbsd32_sa.c:1.12
--- src/sys/compat/netbsd32/netbsd32_sa.c:1.11 Thu Dec 10 14:10:35 2009
+++ src/sys/compat/netbsd32/netbsd32_sa.c Tue Jan 4 10:59:28 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_sa.c,v 1.11 2009/12/10 14:10:35 matt Exp $ */
+/* $NetBSD: netbsd32_sa.c,v 1.12 2011/01/04 10:59:28 matt Exp $ */
/*
* Copyright (c) 2005 The NetBSD Foundation.
@@ -33,7 +33,9 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_sa.c,v 1.11 2009/12/10 14:10:35 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_sa.c,v 1.12 2011/01/04 10:59:28 matt Exp $");
+#include "opt_compat_netbsd.h"
+#include "opt_sa.h"
#include <sys/types.h>
#include <sys/param.h>
@@ -51,19 +53,16 @@
#include <compat/netbsd32/netbsd32_conv.h>
#include <compat/netbsd32/netbsd32_sa.h>
-const struct sa_emul saemul_netbsd32 = {
- sizeof(ucontext32_t),
- sizeof(struct netbsd32_sa_t),
- sizeof(netbsd32_sa_tp),
- netbsd32_sacopyout,
- netbsd32_upcallconv,
- netbsd32_cpu_upcall,
- (void (*)(struct lwp *, void *))getucontext32_sa,
#ifdef KERN_SA
- netbsd32_sa_ucsp
-#else
- NULL
-#endif
+const struct sa_emul saemul_netbsd32 = {
+ .sae_ucsize = sizeof(ucontext32_t),
+ .sae_sasize = sizeof(struct netbsd32_sa_t),
+ .sae_sapsize = sizeof(netbsd32_sa_tp),
+ .sae_sacopyout = netbsd32_sacopyout,
+ .sae_upcallconv = netbsd32_upcallconv,
+ .sae_upcall = netbsd32_cpu_upcall,
+ .sae_getucontext = (void (*)(struct lwp *, void *))getucontext32_sa,
+ .sae_ucsp = netbsd32_sa_ucsp
};
/* SA emulation helpers */
@@ -140,6 +139,7 @@
return NETBSD32IPTR64(_UC_MACHINE32_SP(uc32));
}
+#endif /* KERN_SA */
/* Sycalls conversion */
@@ -147,7 +147,7 @@
netbsd32_sa_register(struct lwp *l,
const struct netbsd32_sa_register_args *uap, register_t *retval)
{
-#ifdef COMPAT_40
+#if defined(COMPAT_40) && defined(KERN_SA)
/* {
syscallarg(netbsd32_sa_upcall_t) new;
syscallarg(netbsd32_sa_upcallp_t) old;
@@ -176,7 +176,7 @@
#endif
}
-#ifdef COMPAT_40
+#if defined(COMPAT_40) && defined(KERN_SA)
static int
netbsd32_sa_copyin_stack(stack_t *stacks, int index, stack_t *dest)
{
@@ -200,7 +200,7 @@
netbsd32_sa_stacks(struct lwp *l, const struct netbsd32_sa_stacks_args *uap,
register_t *retval)
{
-#ifdef COMPAT_40
+#if defined(COMPAT_40) && defined(KERN_SA)
/* {
syscallarg(int) num;
syscallarg(netbsd32_stackp_t) stacks;
@@ -217,6 +217,7 @@
netbsd32_sa_setconcurrency(struct lwp *l,
const struct netbsd32_sa_setconcurrency_args *uap, register_t *retval)
{
+#ifdef KERN_SA
/* {
syscallarg(int) concurrency;
} */
@@ -224,12 +225,16 @@
NETBSD32TO64_UAP(concurrency);
return sys_sa_setconcurrency(l, &ua, retval);
+#else
+ return ENOSYS;
+#endif
}
int
netbsd32_sa_preempt(struct lwp *l, const struct netbsd32_sa_preempt_args *uap,
register_t *retval)
{
+#ifdef KERN_SA
/* {
syscallarg(int) sa_id;
} */
@@ -237,4 +242,7 @@
NETBSD32TO64_UAP(sa_id);
return sys_sa_preempt(l, &ua, retval);
+#else
+ return ENOSYS;
+#endif
}