gonzui


Format: Advanced Search

t2ex/bsd_source/t2ex/network/net/src_bsd/kern/kern_stub.cbare sourcepermlink (0.01 seconds)

Search this content:

    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: }