Tue Jan 22 01:47:21 2013 UTC ()
Simplify the ifdef mess. No functional context.


(christos)
diff -r1.14 -r1.15 src/sys/compat/common/compat_mod.c

cvs diff -r1.14 -r1.15 src/sys/compat/common/Attic/compat_mod.c (switch to unified diff)

--- src/sys/compat/common/Attic/compat_mod.c 2011/08/08 23:44:06 1.14
+++ src/sys/compat/common/Attic/compat_mod.c 2013/01/22 01:47:20 1.15
@@ -1,339 +1,340 @@ @@ -1,339 +1,340 @@
1/* $NetBSD: compat_mod.c,v 1.14 2011/08/08 23:44:06 jakllsch Exp $ */ 1/* $NetBSD: compat_mod.c,v 1.15 2013/01/22 01:47:20 christos Exp $ */
2 2
3/*- 3/*-
4 * Copyright (c) 2008 The NetBSD Foundation, Inc. 4 * Copyright (c) 2008 The NetBSD Foundation, Inc.
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * This code is derived from software developed for The NetBSD Foundation 7 * This code is derived from software developed for The NetBSD Foundation
8 * by Andrew Doran. 8 * by Andrew Doran.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions 11 * modification, are permitted provided that the following conditions
12 * are met: 12 * are met:
13 * 1. Redistributions of source code must retain the above copyright 13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer. 14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright 15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the 16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution. 17 * documentation and/or other materials provided with the distribution.
18 * 18 *
19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 * POSSIBILITY OF SUCH DAMAGE. 29 * POSSIBILITY OF SUCH DAMAGE.
30 */ 30 */
31 31
32/* 32/*
33 * Linkage for the compat module: spaghetti. 33 * Linkage for the compat module: spaghetti.
34 */ 34 */
35 35
36#include <sys/cdefs.h> 36#include <sys/cdefs.h>
37__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.14 2011/08/08 23:44:06 jakllsch Exp $"); 37__KERNEL_RCSID(0, "$NetBSD: compat_mod.c,v 1.15 2013/01/22 01:47:20 christos Exp $");
38 38
39#ifdef _KERNEL_OPT 39#ifdef _KERNEL_OPT
40#include "opt_compat_netbsd.h" 40#include "opt_compat_netbsd.h"
41#include "opt_compat_43.h" 41#include "opt_compat_43.h"
42#include "opt_ntp.h" 42#include "opt_ntp.h"
43#include "opt_sysv.h" 43#include "opt_sysv.h"
44#include "opt_lfs.h" 44#include "opt_lfs.h"
45#endif 45#endif
46 46
47#include <sys/systm.h> 47#include <sys/systm.h>
48#include <sys/module.h> 48#include <sys/module.h>
49#include <sys/rwlock.h> 49#include <sys/rwlock.h>
50#include <sys/tty.h> 50#include <sys/tty.h>
51#include <sys/signalvar.h> 51#include <sys/signalvar.h>
52#include <sys/syscall.h> 52#include <sys/syscall.h>
53#include <sys/syscallargs.h> 53#include <sys/syscallargs.h>
54#include <sys/syscallvar.h> 54#include <sys/syscallvar.h>
55 55
56#include <uvm/uvm_extern.h> 56#include <uvm/uvm_extern.h>
57#include <uvm/uvm_object.h> 57#include <uvm/uvm_object.h>
58 58
59#include <compat/common/compat_util.h> 59#include <compat/common/compat_util.h>
60 60
61MODULE(MODULE_CLASS_MISC, compat, NULL); 61MODULE(MODULE_CLASS_MISC, compat, NULL);
62 62
63int ttcompat(struct tty *, u_long, void *, int, struct lwp *); 63int ttcompat(struct tty *, u_long, void *, int, struct lwp *);
64 64
65#ifdef COMPAT_16 65#ifdef COMPAT_16
66#if !(defined(__amd64__) && !defined(COMPAT_NETBSD32)) 66#if !defined(__amd64__) || defined(COMPAT_NETBSD32)
 67#define COMPAT_SIGCONTEXT
67extern char sigcode[], esigcode[]; 68extern char sigcode[], esigcode[];
68struct uvm_object *emul_netbsd_object; 69struct uvm_object *emul_netbsd_object;
69#endif 70#endif
70#endif 71#endif
71 72
72extern krwlock_t exec_lock; 73extern krwlock_t exec_lock;
73extern krwlock_t ttcompat_lock; 74extern krwlock_t ttcompat_lock;
74 75
75static const struct syscall_package compat_syscalls[] = { 76static const struct syscall_package compat_syscalls[] = {
76#if defined(COMPAT_43) 77#if defined(COMPAT_43)
77 { SYS_compat_43_fstat43, 0, (sy_call_t *)compat_43_sys_fstat }, 78 { SYS_compat_43_fstat43, 0, (sy_call_t *)compat_43_sys_fstat },
78 { SYS_compat_43_lstat43, 0, (sy_call_t *)compat_43_sys_lstat }, 79 { SYS_compat_43_lstat43, 0, (sy_call_t *)compat_43_sys_lstat },
79 { SYS_compat_43_oaccept, 0, (sy_call_t *)compat_43_sys_accept }, 80 { SYS_compat_43_oaccept, 0, (sy_call_t *)compat_43_sys_accept },
80 { SYS_compat_43_ocreat, 0, (sy_call_t *)compat_43_sys_creat }, 81 { SYS_compat_43_ocreat, 0, (sy_call_t *)compat_43_sys_creat },
81 { SYS_compat_43_oftruncate, 0, (sy_call_t *)compat_43_sys_ftruncate }, 82 { SYS_compat_43_oftruncate, 0, (sy_call_t *)compat_43_sys_ftruncate },
82 { SYS_compat_43_ogetdirentries, 0, (sy_call_t *)compat_43_sys_getdirentries }, 83 { SYS_compat_43_ogetdirentries, 0, (sy_call_t *)compat_43_sys_getdirentries },
83 { SYS_compat_43_ogetdtablesize, 0, (sy_call_t *)compat_43_sys_getdtablesize }, 84 { SYS_compat_43_ogetdtablesize, 0, (sy_call_t *)compat_43_sys_getdtablesize },
84 { SYS_compat_43_ogethostid, 0, (sy_call_t *)compat_43_sys_gethostid }, 85 { SYS_compat_43_ogethostid, 0, (sy_call_t *)compat_43_sys_gethostid },
85 { SYS_compat_43_ogethostname, 0, (sy_call_t *)compat_43_sys_gethostname }, 86 { SYS_compat_43_ogethostname, 0, (sy_call_t *)compat_43_sys_gethostname },
86 { SYS_compat_43_ogetkerninfo, 0, (sy_call_t *)compat_43_sys_getkerninfo }, 87 { SYS_compat_43_ogetkerninfo, 0, (sy_call_t *)compat_43_sys_getkerninfo },
87 { SYS_compat_43_ogetpagesize, 0, (sy_call_t *)compat_43_sys_getpagesize }, 88 { SYS_compat_43_ogetpagesize, 0, (sy_call_t *)compat_43_sys_getpagesize },
88 { SYS_compat_43_ogetpeername, 0, (sy_call_t *)compat_43_sys_getpeername }, 89 { SYS_compat_43_ogetpeername, 0, (sy_call_t *)compat_43_sys_getpeername },
89 { SYS_compat_43_ogetrlimit, 0, (sy_call_t *)compat_43_sys_getrlimit }, 90 { SYS_compat_43_ogetrlimit, 0, (sy_call_t *)compat_43_sys_getrlimit },
90 { SYS_compat_43_ogetsockname, 0, (sy_call_t *)compat_43_sys_getsockname }, 91 { SYS_compat_43_ogetsockname, 0, (sy_call_t *)compat_43_sys_getsockname },
91 { SYS_compat_43_okillpg, 0, (sy_call_t *)compat_43_sys_killpg }, 92 { SYS_compat_43_okillpg, 0, (sy_call_t *)compat_43_sys_killpg },
92 { SYS_compat_43_olseek, 0, (sy_call_t *)compat_43_sys_lseek }, 93 { SYS_compat_43_olseek, 0, (sy_call_t *)compat_43_sys_lseek },
93 { SYS_compat_43_ommap, 0, (sy_call_t *)compat_43_sys_mmap }, 94 { SYS_compat_43_ommap, 0, (sy_call_t *)compat_43_sys_mmap },
94 { SYS_compat_43_oquota, 0, (sy_call_t *)compat_43_sys_quota }, 95 { SYS_compat_43_oquota, 0, (sy_call_t *)compat_43_sys_quota },
95 { SYS_compat_43_orecv, 0, (sy_call_t *)compat_43_sys_recv }, 96 { SYS_compat_43_orecv, 0, (sy_call_t *)compat_43_sys_recv },
96 { SYS_compat_43_orecvfrom, 0, (sy_call_t *)compat_43_sys_recvfrom }, 97 { SYS_compat_43_orecvfrom, 0, (sy_call_t *)compat_43_sys_recvfrom },
97 { SYS_compat_43_orecvmsg, 0, (sy_call_t *)compat_43_sys_recvmsg }, 98 { SYS_compat_43_orecvmsg, 0, (sy_call_t *)compat_43_sys_recvmsg },
98 { SYS_compat_43_osend, 0, (sy_call_t *)compat_43_sys_send }, 99 { SYS_compat_43_osend, 0, (sy_call_t *)compat_43_sys_send },
99 { SYS_compat_43_osendmsg, 0, (sy_call_t *)compat_43_sys_sendmsg }, 100 { SYS_compat_43_osendmsg, 0, (sy_call_t *)compat_43_sys_sendmsg },
100 { SYS_compat_43_osethostid, 0, (sy_call_t *)compat_43_sys_sethostid }, 101 { SYS_compat_43_osethostid, 0, (sy_call_t *)compat_43_sys_sethostid },
101 { SYS_compat_43_osethostname, 0, (sy_call_t *)compat_43_sys_sethostname }, 102 { SYS_compat_43_osethostname, 0, (sy_call_t *)compat_43_sys_sethostname },
102 { SYS_compat_43_osetrlimit, 0, (sy_call_t *)compat_43_sys_setrlimit }, 103 { SYS_compat_43_osetrlimit, 0, (sy_call_t *)compat_43_sys_setrlimit },
103 { SYS_compat_43_osigblock, 0, (sy_call_t *)compat_43_sys_sigblock }, 104 { SYS_compat_43_osigblock, 0, (sy_call_t *)compat_43_sys_sigblock },
104 { SYS_compat_43_osigsetmask, 0, (sy_call_t *)compat_43_sys_sigsetmask }, 105 { SYS_compat_43_osigsetmask, 0, (sy_call_t *)compat_43_sys_sigsetmask },
105 { SYS_compat_43_osigstack, 0, (sy_call_t *)compat_43_sys_sigstack }, 106 { SYS_compat_43_osigstack, 0, (sy_call_t *)compat_43_sys_sigstack },
106 { SYS_compat_43_osigvec, 0, (sy_call_t *)compat_43_sys_sigvec }, 107 { SYS_compat_43_osigvec, 0, (sy_call_t *)compat_43_sys_sigvec },
107 { SYS_compat_43_otruncate, 0, (sy_call_t *)compat_43_sys_truncate }, 108 { SYS_compat_43_otruncate, 0, (sy_call_t *)compat_43_sys_truncate },
108 { SYS_compat_43_owait, 0, (sy_call_t *)compat_43_sys_wait }, 109 { SYS_compat_43_owait, 0, (sy_call_t *)compat_43_sys_wait },
109 { SYS_compat_43_stat43, 0, (sy_call_t *)compat_43_sys_stat }, 110 { SYS_compat_43_stat43, 0, (sy_call_t *)compat_43_sys_stat },
110#endif 111#endif
111 112
112#if defined(COMPAT_09) 113#if defined(COMPAT_09)
113 { SYS_compat_09_ogetdomainname, 0, (sy_call_t *)compat_09_sys_getdomainname }, 114 { SYS_compat_09_ogetdomainname, 0, (sy_call_t *)compat_09_sys_getdomainname },
114 { SYS_compat_09_osetdomainname, 0, (sy_call_t *)compat_09_sys_setdomainname }, 115 { SYS_compat_09_osetdomainname, 0, (sy_call_t *)compat_09_sys_setdomainname },
115 { SYS_compat_09_ouname, 0, (sy_call_t *)compat_09_sys_uname }, 116 { SYS_compat_09_ouname, 0, (sy_call_t *)compat_09_sys_uname },
116#endif 117#endif
117 118
118#if defined(COMPAT_10) && !defined(_LP64) 119#if defined(COMPAT_10) && !defined(_LP64)
119# if defined(SYSVMSG) 120# if defined(SYSVMSG)
120 { SYS_compat_10_omsgsys, 0, (sy_call_t *)compat_10_sys_msgsys }, 121 { SYS_compat_10_omsgsys, 0, (sy_call_t *)compat_10_sys_msgsys },
121# endif 122# endif
122# if defined(SYSVSEM) 123# if defined(SYSVSEM)
123 { SYS_compat_10_osemsys, 0, (sy_call_t *)compat_10_sys_semsys }, 124 { SYS_compat_10_osemsys, 0, (sy_call_t *)compat_10_sys_semsys },
124# endif 125# endif
125# if defined(SYSVSHM) 126# if defined(SYSVSHM)
126 { SYS_compat_10_oshmsys, 0, (sy_call_t *)compat_10_sys_shmsys }, 127 { SYS_compat_10_oshmsys, 0, (sy_call_t *)compat_10_sys_shmsys },
127# endif 128# endif
128#endif /* defined(COMPAT_10) && !defined(_LP64) */ 129#endif /* defined(COMPAT_10) && !defined(_LP64) */
129 130
130#if defined(COMPAT_12) 131#if defined(COMPAT_12)
131 { SYS_compat_12_fstat12, 0, (sy_call_t *)compat_12_sys_fstat }, 132 { SYS_compat_12_fstat12, 0, (sy_call_t *)compat_12_sys_fstat },
132 { SYS_compat_12_getdirentries, 0, (sy_call_t *)compat_12_sys_getdirentries }, 133 { SYS_compat_12_getdirentries, 0, (sy_call_t *)compat_12_sys_getdirentries },
133 { SYS_compat_12_lstat12, 0, (sy_call_t *)compat_12_sys_lstat }, 134 { SYS_compat_12_lstat12, 0, (sy_call_t *)compat_12_sys_lstat },
134 { SYS_compat_12_msync, 0, (sy_call_t *)compat_12_sys_msync }, 135 { SYS_compat_12_msync, 0, (sy_call_t *)compat_12_sys_msync },
135 { SYS_compat_12_oreboot, 0, (sy_call_t *)compat_12_sys_reboot }, 136 { SYS_compat_12_oreboot, 0, (sy_call_t *)compat_12_sys_reboot },
136 { SYS_compat_12_oswapon, 0, (sy_call_t *)compat_12_sys_swapon }, 137 { SYS_compat_12_oswapon, 0, (sy_call_t *)compat_12_sys_swapon },
137 { SYS_compat_12_stat12, 0, (sy_call_t *)compat_12_sys_stat }, 138 { SYS_compat_12_stat12, 0, (sy_call_t *)compat_12_sys_stat },
138#endif 139#endif
139 140
140#if defined(COMPAT_13) 141#if defined(COMPAT_13)
141 { SYS_compat_13_sigaction13, 0, (sy_call_t *)compat_13_sys_sigaction }, 142 { SYS_compat_13_sigaction13, 0, (sy_call_t *)compat_13_sys_sigaction },
142 { SYS_compat_13_sigaltstack13, 0, (sy_call_t *)compat_13_sys_sigaltstack }, 143 { SYS_compat_13_sigaltstack13, 0, (sy_call_t *)compat_13_sys_sigaltstack },
143 { SYS_compat_13_sigpending13, 0, (sy_call_t *)compat_13_sys_sigpending }, 144 { SYS_compat_13_sigpending13, 0, (sy_call_t *)compat_13_sys_sigpending },
144 { SYS_compat_13_sigprocmask13, 0, (sy_call_t *)compat_13_sys_sigprocmask }, 145 { SYS_compat_13_sigprocmask13, 0, (sy_call_t *)compat_13_sys_sigprocmask },
145 { SYS_compat_13_sigreturn13, 0, (sy_call_t *)compat_13_sys_sigreturn }, 146 { SYS_compat_13_sigreturn13, 0, (sy_call_t *)compat_13_sys_sigreturn },
146 { SYS_compat_13_sigsuspend13, 0, (sy_call_t *)compat_13_sys_sigsuspend }, 147 { SYS_compat_13_sigsuspend13, 0, (sy_call_t *)compat_13_sys_sigsuspend },
147#endif 148#endif
148 149
149#if defined(COMPAT_14) 150#if defined(COMPAT_14)
150# if defined(SYSVSEM) 151# if defined(SYSVSEM)
151 { SYS_compat_14___semctl, 0, (sy_call_t *)compat_14_sys___semctl }, 152 { SYS_compat_14___semctl, 0, (sy_call_t *)compat_14_sys___semctl },
152# endif 153# endif
153# if defined(SYSVMSG) 154# if defined(SYSVMSG)
154 { SYS_compat_14_msgctl, 0, (sy_call_t *)compat_14_sys_msgctl }, 155 { SYS_compat_14_msgctl, 0, (sy_call_t *)compat_14_sys_msgctl },
155# endif 156# endif
156# if defined(SYSVSHM) 157# if defined(SYSVSHM)
157 { SYS_compat_14_shmctl, 0, (sy_call_t *)compat_14_sys_shmctl }, 158 { SYS_compat_14_shmctl, 0, (sy_call_t *)compat_14_sys_shmctl },
158# endif 159# endif
159#endif 160#endif
160 161
161#if defined(COMPAT_16) 162#if defined(COMPAT_16)
162#if !(defined(__amd64__) && !defined(COMPAT_NETBSD32)) 163#if defined(COMPAT_SIGCONTEXT)
163 { SYS_compat_16___sigaction14, 0, (sy_call_t *)compat_16_sys___sigaction14 }, 164 { SYS_compat_16___sigaction14, 0, (sy_call_t *)compat_16_sys___sigaction14 },
164 { SYS_compat_16___sigreturn14, 0, (sy_call_t *)compat_16_sys___sigreturn14 }, 165 { SYS_compat_16___sigreturn14, 0, (sy_call_t *)compat_16_sys___sigreturn14 },
165#endif 166#endif
166#endif 167#endif
167 168
168#if defined(COMPAT_20) 169#if defined(COMPAT_20)
169 { SYS_compat_20_fhstatfs, 0, (sy_call_t *)compat_20_sys_fhstatfs }, 170 { SYS_compat_20_fhstatfs, 0, (sy_call_t *)compat_20_sys_fhstatfs },
170 { SYS_compat_20_fstatfs, 0, (sy_call_t *)compat_20_sys_fstatfs }, 171 { SYS_compat_20_fstatfs, 0, (sy_call_t *)compat_20_sys_fstatfs },
171 { SYS_compat_20_getfsstat, 0, (sy_call_t *)compat_20_sys_getfsstat }, 172 { SYS_compat_20_getfsstat, 0, (sy_call_t *)compat_20_sys_getfsstat },
172 { SYS_compat_20_statfs, 0, (sy_call_t *)compat_20_sys_statfs }, 173 { SYS_compat_20_statfs, 0, (sy_call_t *)compat_20_sys_statfs },
173#endif 174#endif
174 175
175#if defined(COMPAT_30) 176#if defined(COMPAT_30)
176 { SYS_compat_30___fhstat30, 0, (sy_call_t *)compat_30_sys___fhstat30 }, 177 { SYS_compat_30___fhstat30, 0, (sy_call_t *)compat_30_sys___fhstat30 },
177 { SYS_compat_30___fstat13, 0, (sy_call_t *)compat_30_sys___fstat13 }, 178 { SYS_compat_30___fstat13, 0, (sy_call_t *)compat_30_sys___fstat13 },
178 { SYS_compat_30___lstat13, 0, (sy_call_t *)compat_30_sys___lstat13 }, 179 { SYS_compat_30___lstat13, 0, (sy_call_t *)compat_30_sys___lstat13 },
179 { SYS_compat_30___stat13, 0, (sy_call_t *)compat_30_sys___stat13 }, 180 { SYS_compat_30___stat13, 0, (sy_call_t *)compat_30_sys___stat13 },
180 { SYS_compat_30_fhopen, 0, (sy_call_t *)compat_30_sys_fhopen }, 181 { SYS_compat_30_fhopen, 0, (sy_call_t *)compat_30_sys_fhopen },
181 { SYS_compat_30_fhstat, 0, (sy_call_t *)compat_30_sys_fhstat }, 182 { SYS_compat_30_fhstat, 0, (sy_call_t *)compat_30_sys_fhstat },
182 { SYS_compat_30_fhstatvfs1, 0, (sy_call_t *)compat_30_sys_fhstatvfs1 }, 183 { SYS_compat_30_fhstatvfs1, 0, (sy_call_t *)compat_30_sys_fhstatvfs1 },
183 { SYS_compat_30_getdents, 0, (sy_call_t *)compat_30_sys_getdents }, 184 { SYS_compat_30_getdents, 0, (sy_call_t *)compat_30_sys_getdents },
184 { SYS_compat_30_getfh, 0, (sy_call_t *)compat_30_sys_getfh }, 185 { SYS_compat_30_getfh, 0, (sy_call_t *)compat_30_sys_getfh },
185 { SYS_compat_30_socket, 0, (sy_call_t *)compat_30_sys_socket }, 186 { SYS_compat_30_socket, 0, (sy_call_t *)compat_30_sys_socket },
186#endif 187#endif
187 188
188#if defined(COMPAT_40) 189#if defined(COMPAT_40)
189 { SYS_compat_40_mount, 0, (sy_call_t *)compat_40_sys_mount }, 190 { SYS_compat_40_mount, 0, (sy_call_t *)compat_40_sys_mount },
190#endif 191#endif
191#if defined(COMPAT_50) 192#if defined(COMPAT_50)
192 { SYS_compat_50_wait4, 0, (sy_call_t *)compat_50_sys_wait4 }, 193 { SYS_compat_50_wait4, 0, (sy_call_t *)compat_50_sys_wait4 },
193 { SYS_compat_50_mknod, 0, (sy_call_t *)compat_50_sys_mknod }, 194 { SYS_compat_50_mknod, 0, (sy_call_t *)compat_50_sys_mknod },
194 { SYS_compat_50_setitimer, 0, (sy_call_t *)compat_50_sys_setitimer }, 195 { SYS_compat_50_setitimer, 0, (sy_call_t *)compat_50_sys_setitimer },
195 { SYS_compat_50_getitimer, 0, (sy_call_t *)compat_50_sys_getitimer }, 196 { SYS_compat_50_getitimer, 0, (sy_call_t *)compat_50_sys_getitimer },
196 { SYS_compat_50_select, 0, (sy_call_t *)compat_50_sys_select }, 197 { SYS_compat_50_select, 0, (sy_call_t *)compat_50_sys_select },
197 { SYS_compat_50_gettimeofday, 0, (sy_call_t *)compat_50_sys_gettimeofday }, 198 { SYS_compat_50_gettimeofday, 0, (sy_call_t *)compat_50_sys_gettimeofday },
198 { SYS_compat_50_getrusage, 0, (sy_call_t *)compat_50_sys_getrusage }, 199 { SYS_compat_50_getrusage, 0, (sy_call_t *)compat_50_sys_getrusage },
199 { SYS_compat_50_settimeofday, 0, (sy_call_t *)compat_50_sys_settimeofday }, 200 { SYS_compat_50_settimeofday, 0, (sy_call_t *)compat_50_sys_settimeofday },
200 { SYS_compat_50_utimes, 0, (sy_call_t *)compat_50_sys_utimes }, 201 { SYS_compat_50_utimes, 0, (sy_call_t *)compat_50_sys_utimes },
201 { SYS_compat_50_adjtime, 0, (sy_call_t *)compat_50_sys_adjtime }, 202 { SYS_compat_50_adjtime, 0, (sy_call_t *)compat_50_sys_adjtime },
202#ifdef LFS 203#ifdef LFS
203 { SYS_compat_50_lfs_segwait, 0, (sy_call_t *)compat_50_sys_lfs_segwait }, 204 { SYS_compat_50_lfs_segwait, 0, (sy_call_t *)compat_50_sys_lfs_segwait },
204#endif 205#endif
205 { SYS_compat_50_futimes, 0, (sy_call_t *)compat_50_sys_futimes }, 206 { SYS_compat_50_futimes, 0, (sy_call_t *)compat_50_sys_futimes },
206 { SYS_compat_50_clock_gettime, 0, (sy_call_t *)compat_50_sys_clock_gettime }, 207 { SYS_compat_50_clock_gettime, 0, (sy_call_t *)compat_50_sys_clock_gettime },
207 { SYS_compat_50_clock_settime, 0, (sy_call_t *)compat_50_sys_clock_settime }, 208 { SYS_compat_50_clock_settime, 0, (sy_call_t *)compat_50_sys_clock_settime },
208 { SYS_compat_50_clock_getres, 0, (sy_call_t *)compat_50_sys_clock_getres }, 209 { SYS_compat_50_clock_getres, 0, (sy_call_t *)compat_50_sys_clock_getres },
209 { SYS_compat_50_timer_settime, 0, (sy_call_t *)compat_50_sys_timer_settime }, 210 { SYS_compat_50_timer_settime, 0, (sy_call_t *)compat_50_sys_timer_settime },
210 { SYS_compat_50_timer_gettime, 0, (sy_call_t *)compat_50_sys_timer_gettime }, 211 { SYS_compat_50_timer_gettime, 0, (sy_call_t *)compat_50_sys_timer_gettime },
211 { SYS_compat_50_nanosleep, 0, (sy_call_t *)compat_50_sys_nanosleep }, 212 { SYS_compat_50_nanosleep, 0, (sy_call_t *)compat_50_sys_nanosleep },
212 { SYS_compat_50___sigtimedwait, 0, (sy_call_t *)compat_50_sys___sigtimedwait }, 213 { SYS_compat_50___sigtimedwait, 0, (sy_call_t *)compat_50_sys___sigtimedwait },
213 { SYS_compat_50_mq_timedsend, 0, (sy_call_t *)compat_50_sys_mq_timedsend }, 214 { SYS_compat_50_mq_timedsend, 0, (sy_call_t *)compat_50_sys_mq_timedsend },
214 { SYS_compat_50_mq_timedreceive, 0, (sy_call_t *)compat_50_sys_mq_timedreceive }, 215 { SYS_compat_50_mq_timedreceive, 0, (sy_call_t *)compat_50_sys_mq_timedreceive },
215 { SYS_compat_50_lutimes, 0, (sy_call_t *)compat_50_sys_lutimes }, 216 { SYS_compat_50_lutimes, 0, (sy_call_t *)compat_50_sys_lutimes },
216# if defined(SYSVSEM) 217# if defined(SYSVSEM)
217 { SYS_compat_50_____semctl13, 0, (sy_call_t *)compat_50_sys_____semctl13 }, 218 { SYS_compat_50_____semctl13, 0, (sy_call_t *)compat_50_sys_____semctl13 },
218# endif 219# endif
219# if defined(SYSVMSG) 220# if defined(SYSVMSG)
220 { SYS_compat_50___msgctl13, 0, (sy_call_t *)compat_50_sys___msgctl13 }, 221 { SYS_compat_50___msgctl13, 0, (sy_call_t *)compat_50_sys___msgctl13 },
221# endif 222# endif
222# if defined(SYSVSHM) 223# if defined(SYSVSHM)
223 { SYS_compat_50___shmctl13, 0, (sy_call_t *)compat_50_sys___shmctl13 }, 224 { SYS_compat_50___shmctl13, 0, (sy_call_t *)compat_50_sys___shmctl13 },
224# endif 225# endif
225 { SYS_compat_50__lwp_park, 0, (sy_call_t *)compat_50_sys__lwp_park }, 226 { SYS_compat_50__lwp_park, 0, (sy_call_t *)compat_50_sys__lwp_park },
226 { SYS_compat_50_kevent, 0, (sy_call_t *)compat_50_sys_kevent }, 227 { SYS_compat_50_kevent, 0, (sy_call_t *)compat_50_sys_kevent },
227 { SYS_compat_50_pselect, 0, (sy_call_t *)compat_50_sys_pselect }, 228 { SYS_compat_50_pselect, 0, (sy_call_t *)compat_50_sys_pselect },
228 { SYS_compat_50_pollts, 0, (sy_call_t *)compat_50_sys_pollts }, 229 { SYS_compat_50_pollts, 0, (sy_call_t *)compat_50_sys_pollts },
229 { SYS_compat_50___stat30, 0, (sy_call_t *)compat_50_sys___stat30 }, 230 { SYS_compat_50___stat30, 0, (sy_call_t *)compat_50_sys___stat30 },
230 { SYS_compat_50___fstat30, 0, (sy_call_t *)compat_50_sys___fstat30 }, 231 { SYS_compat_50___fstat30, 0, (sy_call_t *)compat_50_sys___fstat30 },
231 { SYS_compat_50___lstat30, 0, (sy_call_t *)compat_50_sys___lstat30 }, 232 { SYS_compat_50___lstat30, 0, (sy_call_t *)compat_50_sys___lstat30 },
232# if defined(NTP) 233# if defined(NTP)
233 { SYS_compat_50___ntp_gettime30, 0, (sy_call_t *)compat_50_sys___ntp_gettime30 }, 234 { SYS_compat_50___ntp_gettime30, 0, (sy_call_t *)compat_50_sys___ntp_gettime30 },
234# endif 235# endif
235 { SYS_compat_50___fhstat40, 0, (sy_call_t *)compat_50_sys___fhstat40 }, 236 { SYS_compat_50___fhstat40, 0, (sy_call_t *)compat_50_sys___fhstat40 },
236 { SYS_compat_50_aio_suspend, 0, (sy_call_t *)compat_50_sys_aio_suspend }, 237 { SYS_compat_50_aio_suspend, 0, (sy_call_t *)compat_50_sys_aio_suspend },
237 { SYS_compat_50_quotactl, 0, (sy_call_t *)compat_50_sys_quotactl }, 238 { SYS_compat_50_quotactl, 0, (sy_call_t *)compat_50_sys_quotactl },
238#endif 239#endif
239 { 0, 0, NULL }, 240 { 0, 0, NULL },
240}; 241};
241 242
242static int 243static int
243compat_modcmd(modcmd_t cmd, void *arg) 244compat_modcmd(modcmd_t cmd, void *arg)
244{ 245{
245#ifdef COMPAT_16 246#ifdef COMPAT_16
246 proc_t *p; 247 proc_t *p;
247#endif 248#endif
248 int error; 249 int error;
249 250
250 switch (cmd) { 251 switch (cmd) {
251 case MODULE_CMD_INIT: 252 case MODULE_CMD_INIT:
252 error = syscall_establish(NULL, compat_syscalls); 253 error = syscall_establish(NULL, compat_syscalls);
253 if (error != 0) { 254 if (error != 0) {
254 return error; 255 return error;
255 } 256 }
256#ifdef COMPAT_43 257#ifdef COMPAT_43
257 KASSERT(ttcompatvec == NULL); 258 KASSERT(ttcompatvec == NULL);
258 ttcompatvec = ttcompat; 259 ttcompatvec = ttcompat;
259#endif 260#endif
260#ifdef COMPAT_16 261#ifdef COMPAT_16
261#if !(defined(__amd64__) && !defined(COMPAT_NETBSD32)) 262#if defined(COMPAT_SIGCONTEXT)
262 KASSERT(emul_netbsd.e_sigobject == NULL); 263 KASSERT(emul_netbsd.e_sigobject == NULL);
263 rw_enter(&exec_lock, RW_WRITER); 264 rw_enter(&exec_lock, RW_WRITER);
264 emul_netbsd.e_sigcode = sigcode; 265 emul_netbsd.e_sigcode = sigcode;
265 emul_netbsd.e_esigcode = esigcode; 266 emul_netbsd.e_esigcode = esigcode;
266 emul_netbsd.e_sigobject = &emul_netbsd_object; 267 emul_netbsd.e_sigobject = &emul_netbsd_object;
267 rw_exit(&exec_lock); 268 rw_exit(&exec_lock);
268 KASSERT(sendsig_sigcontext_vec == NULL); 269 KASSERT(sendsig_sigcontext_vec == NULL);
269 sendsig_sigcontext_vec = sendsig_sigcontext; 270 sendsig_sigcontext_vec = sendsig_sigcontext;
270#endif 271#endif
271#endif 272#endif
272#if defined(COMPAT_09) || defined(COMPAT_43) 273#if defined(COMPAT_09) || defined(COMPAT_43)
273 compat_sysctl_init(); 274 compat_sysctl_init();
274#endif 275#endif
275 return 0; 276 return 0;
276 277
277 case MODULE_CMD_FINI: 278 case MODULE_CMD_FINI:
278#ifdef COMPAT_16 279#ifdef COMPAT_16
279 /* 280 /*
280 * Ensure sendsig_sigcontext() is not being used. 281 * Ensure sendsig_sigcontext() is not being used.
281 * module_lock prevents the flag being set on any 282 * module_lock prevents the flag being set on any
282 * further processes while we are here. See 283 * further processes while we are here. See
283 * sigaction1() for the opposing half. 284 * sigaction1() for the opposing half.
284 */ 285 */
285 mutex_enter(proc_lock); 286 mutex_enter(proc_lock);
286 PROCLIST_FOREACH(p, &allproc) { 287 PROCLIST_FOREACH(p, &allproc) {
287 if ((p->p_lflag & PL_SIGCOMPAT) != 0) { 288 if ((p->p_lflag & PL_SIGCOMPAT) != 0) {
288 break; 289 break;
289 } 290 }
290 } 291 }
291 mutex_exit(proc_lock); 292 mutex_exit(proc_lock);
292 if (p != NULL) { 293 if (p != NULL) {
293 return EBUSY; 294 return EBUSY;
294 } 295 }
295 sendsig_sigcontext_vec = NULL; 296 sendsig_sigcontext_vec = NULL;
296#endif 297#endif
297 /* Unlink the system calls. */ 298 /* Unlink the system calls. */
298 error = syscall_disestablish(NULL, compat_syscalls); 299 error = syscall_disestablish(NULL, compat_syscalls);
299 if (error != 0) { 300 if (error != 0) {
300 return error; 301 return error;
301 } 302 }
302#ifdef COMPAT_43 303#ifdef COMPAT_43
303 /* Unlink ttcompatvec. */ 304 /* Unlink ttcompatvec. */
304 if (rw_tryenter(&ttcompat_lock, RW_WRITER)) { 305 if (rw_tryenter(&ttcompat_lock, RW_WRITER)) {
305 ttcompatvec = NULL; 306 ttcompatvec = NULL;
306 rw_exit(&ttcompat_lock); 307 rw_exit(&ttcompat_lock);
307 } else { 308 } else {
308 error = syscall_establish(NULL, compat_syscalls); 309 error = syscall_establish(NULL, compat_syscalls);
309 KASSERT(error == 0); 310 KASSERT(error == 0);
310 return EBUSY; 311 return EBUSY;
311 } 312 }
312#endif 313#endif
313#ifdef COMPAT_16 314#ifdef COMPAT_16
314#if !(defined(__amd64__) && !defined(COMPAT_NETBSD32)) 315#if defined(COMPAT_SIGCONTEXT)
315 /* 316 /*
316 * The sigobject may persist if still in use, but 317 * The sigobject may persist if still in use, but
317 * is reference counted so will die eventually. 318 * is reference counted so will die eventually.
318 */ 319 */
319 rw_enter(&exec_lock, RW_WRITER); 320 rw_enter(&exec_lock, RW_WRITER);
320 if (emul_netbsd_object != NULL) { 321 if (emul_netbsd_object != NULL) {
321 (*emul_netbsd_object->pgops->pgo_detach) 322 (*emul_netbsd_object->pgops->pgo_detach)
322 (emul_netbsd_object); 323 (emul_netbsd_object);
323 } 324 }
324 emul_netbsd_object = NULL; 325 emul_netbsd_object = NULL;
325 emul_netbsd.e_sigcode = NULL; 326 emul_netbsd.e_sigcode = NULL;
326 emul_netbsd.e_esigcode = NULL; 327 emul_netbsd.e_esigcode = NULL;
327 emul_netbsd.e_sigobject = NULL; 328 emul_netbsd.e_sigobject = NULL;
328 rw_exit(&exec_lock); 329 rw_exit(&exec_lock);
329#endif 330#endif
330#endif /* COMPAT_16 */ 331#endif /* COMPAT_16 */
331#if defined(COMPAT_09) || defined(COMPAT_43) 332#if defined(COMPAT_09) || defined(COMPAT_43)
332 compat_sysctl_fini(); 333 compat_sysctl_fini();
333#endif 334#endif
334 return 0; 335 return 0;
335 336
336 default: 337 default:
337 return ENOTTY; 338 return ENOTTY;
338 } 339 }
339} 340}