| t2ex/bsd_source/t2ex/network/net/src_bsd/kern/kern_stub.c | bare source | permlink (0.01 seconds) |
1: /* $NetBSD: kern_stub.c,v 1.11 2008/10/15 16:03:29 wrstuden Exp $ */ 2: 3: /*- 4: * Copyright (c) 2007, 2008 The NetBSD Foundation, Inc. 5: * All rights reserved. 6: * 7: * Redistribution and use in source and binary forms, with or without 8: * modification, are permitted provided that the following conditions 9: * are met: 10: * 1. Redistributions of source code must retain the above copyright 11: * notice, this list of conditions and the following disclaimer. 12: * 2. Redistributions in binary form must reproduce the above copyright 13: * notice, this list of conditions and the following disclaimer in the 14: * documentation and/or other materials provided with the distribution. 15: * 16: * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17: * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18: * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19: * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26: * POSSIBILITY OF SUCH DAMAGE. 27: */ 28: 29: /* 30: * Copyright (c) 1982, 1986, 1991, 1993 31: * The Regents of the University of California. All rights reserved. 32: * 33: * Redistribution and use in source and binary forms, with or without 34: * modification, are permitted provided that the following conditions 35: * are met: 36: * 1. Redistributions of source code must retain the above copyright 37: * notice, this list of conditions and the following disclaimer. 38: * 2. Redistributions in binary form must reproduce the above copyright 39: * notice, this list of conditions and the following disclaimer in the 40: * documentation and/or other materials provided with the distribution. 41: * 3. Neither the name of the University nor the names of its contributors 42: * may be used to endorse or promote products derived from this software 43: * without specific prior written permission. 44: * 45: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 46: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 47: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 48: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 49: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 50: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 51: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 52: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 53: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 54: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 55: * SUCH DAMAGE. 56: * 57: * @(#)subr_xxx.c 8.3 (Berkeley) 3/29/95 58: */ 59: 60: /* 61: * Stubs for system calls and facilities not included in the system. 62: */ 63: 64: #include <sys/cdefs.h> 65: __KERNEL_RCSID(0, "$NetBSD: kern_stub.c,v 1.11 2008/10/15 16:03:29 wrstuden Exp $"); 66: 67: #ifndef T2EX 68: #include "opt_ptrace.h" 69: #endif 70: #include "opt_ktrace.h" 71: #ifndef T2EX 72: #include "opt_sa.h" 73: #endif 74: 75: #include <sys/param.h> 76: #include <sys/kernel.h> 77: #include <sys/proc.h> 78: #ifndef T2EX 79: #include <sys/signalvar.h> 80: #endif 81: #include <sys/syscallargs.h> 82: #include <sys/ktrace.h> 83: #include <sys/intr.h> 84: #ifndef T2EX 85: #include <sys/cpu.h> 86: #endif 87: 88: #ifndef T2EX 89: /* 90: * Nonexistent system call-- signal process (may want to handle it). Flag 91: * error in case process won't see signal immediately (blocked or ignored). 92: */ 93: #ifndef PTRACE 94: __weak_alias(sys_ptrace,sys_nosys); 95: #endif /* PTRACE */ 96: 97: /* 98: * ktrace stubs. ktruser() goes to enosys as we want to fail the syscall, 99: * but not kill the process: utrace() is a debugging feature. 100: */ 101: #ifndef KTRACE 102: __weak_alias(ktr_csw,nullop); /* Probes */ 103: __weak_alias(ktr_emul,nullop); 104: __weak_alias(ktr_geniov,nullop); 105: __weak_alias(ktr_genio,nullop); 106: __weak_alias(ktr_mibio,nullop); 107: __weak_alias(ktr_namei,nullop); 108: __weak_alias(ktr_namei2,nullop); 109: __weak_alias(ktr_psig,nullop); 110: __weak_alias(ktr_saupcall,nullop); 111: __weak_alias(ktr_syscall,nullop); 112: __weak_alias(ktr_sysret,nullop); 113: __weak_alias(ktr_kuser,nullop); 114: __weak_alias(ktr_mmsg,nullop); 115: __weak_alias(ktr_mib,nullop); 116: __weak_alias(ktr_mool,nullop); 117: __weak_alias(ktr_execarg,nullop); 118: __weak_alias(ktr_execenv,nullop); 119: 120: __weak_alias(sys_fktrace,sys_nosys); /* Syscalls */ 121: __weak_alias(sys_ktrace,sys_nosys); 122: __weak_alias(sys_utrace,sys_nosys); 123: 124: int ktrace_on; /* Misc */ 125: __weak_alias(ktruser,enosys); 126: __weak_alias(ktr_point,nullop); 127: #endif /* KTRACE */ 128: #endif /* T2EX */ 129: 130: /* 131: * Scheduler activations system calls. These need to remain, even when 132: * KERN_SA isn't defined, until libc's major version is bumped. 133: */ 134: #if !defined(KERN_SA) 135: __strong_alias(sys_sa_register,sys_nosys); 136: __strong_alias(sys_sa_stacks,sys_nosys); 137: __strong_alias(sys_sa_enable,sys_nosys); 138: __strong_alias(sys_sa_setconcurrency,sys_nosys); 139: __strong_alias(sys_sa_yield,sys_nosys); 140: __strong_alias(sys_sa_preempt,sys_nosys); 141: __strong_alias(sys_sa_unblockyield,sys_nosys); 142: #endif 143: 144: #ifndef T2EX 145: /* 146: * Stubs for architectures that do not support kernel preemption. 147: */ 148: #ifndef __HAVE_PREEMPTION 149: bool 150: cpu_kpreempt_enter(uintptr_t where, int s) 151: { 152: 153: return false; 154: } 155: 156: void 157: cpu_kpreempt_exit(uintptr_t where) 158: { 159: 160: } 161: 162: bool 163: cpu_kpreempt_disabled(void) 164: { 165: 166: return true; 167: } 168: #else 169: # ifndef MULTIPROCESSOR 170: # error __HAVE_PREEMPTION requires MULTIPROCESSOR 171: # endif 172: #endif /* !__HAVE_PREEMPTION */ 173: #endif 174: 175: /* ARGSUSED */ 176: int 177: sys_nosys(struct lwp *l, const void *v, register_t *retval) 178: { 179: 180: #ifndef T2EX 181: mutex_enter(proc_lock); 182: psignal(l->l_proc, SIGSYS); 183: mutex_exit(proc_lock); 184: #endif 185: return ENOSYS; 186: } 187: 188: /* 189: * Unsupported device function (e.g. writing to read-only device). 190: */ 191: int 192: enodev(void) 193: { 194: 195: return (ENODEV); 196: } 197: 198: #ifndef T2EX 199: /* 200: * Unconfigured device function; driver not configured. 201: */ 202: int 203: enxio(void) 204: { 205: 206: return (ENXIO); 207: } 208: 209: /* 210: * Unsupported ioctl function. 211: */ 212: int 213: enoioctl(void) 214: { 215: 216: return (ENOTTY); 217: } 218: 219: /* 220: * Unsupported system function. 221: * This is used for an otherwise-reasonable operation 222: * that is not supported by the current system binary. 223: */ 224: int 225: enosys(void) 226: { 227: 228: return (ENOSYS); 229: } 230: #endif 231: 232: /* 233: * Return error for operation not supported 234: * on a specific object or file type. 235: */ 236: int 237: eopnotsupp(void) 238: { 239: 240: return (EOPNOTSUPP); 241: } 242: 243: /* 244: * Generic null operation, always returns success. 245: */ 246: /*ARGSUSED*/ 247: int 248: nullop(void *v) 249: { 250: 251: return (0); 252: }