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
 }

Reply via email to