Annotation of XNU/osfmk/kern/syscall_sw.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
                      3:  *
                      4:  * @APPLE_LICENSE_HEADER_START@
                      5:  * 
                      6:  * The contents of this file constitute Original Code as defined in and
                      7:  * are subject to the Apple Public Source License Version 1.1 (the
                      8:  * "License").  You may not use this file except in compliance with the
                      9:  * License.  Please obtain a copy of the License at
                     10:  * http://www.apple.com/publicsource and read it before using this file.
                     11:  * 
                     12:  * This Original Code and all software distributed under the License are
                     13:  * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
                     14:  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
                     15:  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
                     16:  * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
                     17:  * License for the specific language governing rights and limitations
                     18:  * under the License.
                     19:  * 
                     20:  * @APPLE_LICENSE_HEADER_END@
                     21:  */
                     22: /*
                     23:  * @OSF_COPYRIGHT@
                     24:  */
                     25: /* 
                     26:  * Mach Operating System
                     27:  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
                     28:  * All Rights Reserved.
                     29:  * 
                     30:  * Permission to use, copy, modify and distribute this software and its
                     31:  * documentation is hereby granted, provided that both the copyright
                     32:  * notice and this permission notice appear in all copies of the
                     33:  * software, derivative works or modified versions, and any portions
                     34:  * thereof, and that both notices appear in supporting documentation.
                     35:  * 
                     36:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
                     37:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
                     38:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     39:  * 
                     40:  * Carnegie Mellon requests users of this software to return to
                     41:  * 
                     42:  *  Software Distribution Coordinator  or  [email protected]
                     43:  *  School of Computer Science
                     44:  *  Carnegie Mellon University
                     45:  *  Pittsburgh PA 15213-3890
                     46:  * 
                     47:  * any improvements or extensions that they make and grant Carnegie Mellon
                     48:  * the rights to redistribute these changes.
                     49:  */
                     50: /*
                     51:  */
                     52: 
                     53: #include <mach/boolean.h>
                     54: #include <mach/port.h>
                     55: #include <mach/kern_return.h>
                     56: #include <kern/misc_protos.h>
                     57: #include <kern/syscall_sw.h>
                     58: #include <mach/message.h>
                     59: 
                     60: /* Forwards */
                     61: extern kern_return_t   kern_invalid(void);
                     62: extern mach_port_name_t        null_port(void);
                     63: extern kern_return_t   not_implemented(void);
                     64: 
                     65: /*
                     66:  *     To add a new entry:
                     67:  *             Add an "MACH_TRAP(routine, arg count)" to the table below.
                     68:  *
                     69:  *             Add trap definition to mach/syscall_sw.h and
                     70:  *             recompile user library.
                     71:  *
                     72:  * WARNING:    If you add a trap which requires more than 7
                     73:  *             parameters, mach/{machine}/syscall_sw.h and {machine}/trap.c
                     74:  *             and/or {machine}/locore.s may need to be modified for it
                     75:  *             to work successfully.
                     76:  *
                     77:  * WARNING:    Don't use numbers 0 through -9.  They (along with
                     78:  *             the positive numbers) are reserved for Unix.
                     79:  */
                     80: 
                     81: int kern_invalid_debug = 0;
                     82: 
                     83: /* Include declarations of the trap functions. */
                     84: 
                     85: #include <mach/mach_traps.h>
                     86: #include <mach/message.h>
                     87: #include <mach/rpc.h>
                     88: #include <mach/mach_syscalls.h>
                     89: #include <mach/MKTraps.h>
                     90: #include <kern/syscall_subr.h>
                     91: #include <platforms.h>
                     92: 
                     93: mach_trap_t    mach_trap_table[] = {
                     94:        MACH_TRAP(kern_invalid, 0),                     /* 0 */         /* Unix */
                     95:        MACH_TRAP(kern_invalid, 0),                     /* 1 */         /* Unix */
                     96:        MACH_TRAP(kern_invalid, 0),                     /* 2 */         /* Unix */
                     97:        MACH_TRAP(kern_invalid, 0),                     /* 3 */         /* Unix */
                     98:        MACH_TRAP(kern_invalid, 0),                     /* 4 */         /* Unix */
                     99:        MACH_TRAP(kern_invalid, 0),                     /* 5 */         /* Unix */
                    100:        MACH_TRAP(kern_invalid, 0),                     /* 6 */         /* Unix */
                    101:        MACH_TRAP(kern_invalid, 0),                     /* 7 */         /* Unix */
                    102:        MACH_TRAP(kern_invalid, 0),                     /* 8 */         /* Unix */
                    103:        MACH_TRAP(kern_invalid, 0),                     /* 9 */         /* Unix */
                    104:        MACH_TRAP(kern_invalid, 0),                     /* 10 */
                    105:        MACH_TRAP(kern_invalid, 0),                     /* 11 */
                    106:        MACH_TRAP(kern_invalid, 0),                     /* 12 */
                    107:        MACH_TRAP(kern_invalid, 0),                     /* 13 */
                    108:        MACH_TRAP(kern_invalid, 0),                     /* 14 */
                    109:        MACH_TRAP(kern_invalid, 0),                     /* 15 */
                    110:        MACH_TRAP(kern_invalid, 0),                     /* 16 */
                    111:        MACH_TRAP(kern_invalid, 0),                     /* 17 */        /* was evc_wait */
                    112:        MACH_TRAP(kern_invalid, 0),                     /* 18 */
                    113:        MACH_TRAP(kern_invalid, 0),                     /* 19 */
                    114:        MACH_TRAP(kern_invalid, 0),                     /* 20 */
                    115:        MACH_TRAP(kern_invalid, 0),                     /* 21 */
                    116:        MACH_TRAP(kern_invalid, 0),                     /* 22 */
                    117:        MACH_TRAP(kern_invalid, 0),                     /* 23 */
                    118:        MACH_TRAP(kern_invalid, 0),                     /* 24 */
                    119:        MACH_TRAP(kern_invalid, 0),                     /* 25 */
                    120:        MACH_TRAP(mach_reply_port, 0),          /* 26 */
                    121:        MACH_TRAP(mach_thread_self, 0),         /* 27 */
                    122:        MACH_TRAP(mach_task_self, 0),           /* 28 */
                    123:        MACH_TRAP(mach_host_self, 0),           /* 29 */
                    124:        MACH_TRAP(kern_invalid, 0),                     /* 30 */
                    125:        MACH_TRAP(kern_invalid, 0),                     /* 31 */
                    126:        MACH_TRAP(mach_msg_overwrite_trap, 9),
                    127:                                                                                /* 32 */
                    128:        MACH_TRAP(kern_invalid, 0),                     /* 33 */
                    129:        MACH_TRAP(kern_invalid, 0),                     /* 34 */
                    130:        MACH_TRAP(kern_invalid, 0),                     /* 35 */
                    131:        MACH_TRAP(kern_invalid, 0),                     /* 36 */
                    132:        MACH_TRAP(kern_invalid, 0),                     /* 37 */
                    133:        MACH_TRAP(kern_invalid, 0),                     /* 38 */
                    134:        MACH_TRAP(kern_invalid, 0),                     /* 39 */
                    135:        MACH_TRAP(kern_invalid, 0),                     /* 40 */
                    136:        MACH_TRAP(init_process, 0),                     /* 41 */
                    137:        MACH_TRAP(kern_invalid, 0),                     /* 42 */
                    138:        MACH_TRAP(map_fd, 5),                           /* 43 */
                    139:        MACH_TRAP(kern_invalid, 0),                     /* 44 */
                    140:        MACH_TRAP(task_for_pid, 3),                     /* 45 */ 
                    141:        MACH_TRAP(pid_for_task, 2),                     /* 46 */
                    142:        MACH_TRAP(mach_swapon, 4),                      /* 47 */
                    143:        MACH_TRAP(macx_swapon, 4),                      /* 48 */
                    144:        MACH_TRAP(macx_swapoff, 2),                     /* 49 */
                    145:        MACH_TRAP(kern_invalid, 0),                     /* 50 */
                    146:        MACH_TRAP(macx_triggers, 4),                    /* 51 */
                    147:        MACH_TRAP(load_shared_file, 7),                 /* 52 */
                    148:        MACH_TRAP(kern_invalid, 0),                     /* 53 */
                    149:        MACH_TRAP(kern_invalid, 0),                     /* 54 */
                    150:        MACH_TRAP(kern_invalid, 0),                     /* 55 */
                    151:        MACH_TRAP(kern_invalid, 0),                     /* 56 */
                    152:        MACH_TRAP(kern_invalid, 0),                     /* 57 */
                    153:        MACH_TRAP(kern_invalid, 0),                     /* 58 */
                    154:        MACH_TRAP(swtch_pri, 1),                        /* 59 */
                    155:        MACH_TRAP(swtch, 0),                            /* 60 */
                    156:        MACH_TRAP(thread_switch, 3),            /* 61 */
                    157:        MACH_TRAP(clock_sleep_trap, 5),         /* 62 */
                    158:        MACH_TRAP(kern_invalid,0),                      /* 63 */
                    159: /* traps 64 - 95 reserved (debo) */
                    160:        MACH_TRAP(kern_invalid,0),                      /* 64 */
                    161:        MACH_TRAP(kern_invalid,0),                      /* 65 */
                    162:        MACH_TRAP(kern_invalid,0),                      /* 66 */
                    163:        MACH_TRAP(kern_invalid,0),                      /* 67 */
                    164:        MACH_TRAP(kern_invalid,0),                      /* 68 */
                    165:        MACH_TRAP(kern_invalid,0),                      /* 69 */
                    166:        MACH_TRAP(kern_invalid,0),                      /* 70 */
                    167:        MACH_TRAP(kern_invalid,0),                      /* 71 */
                    168:        MACH_TRAP(kern_invalid,0),                      /* 72 */
                    169:        MACH_TRAP(kern_invalid,0),                      /* 73 */
                    170:        MACH_TRAP(kern_invalid,0),                      /* 74 */
                    171:        MACH_TRAP(kern_invalid,0),                      /* 75 */
                    172:        MACH_TRAP(kern_invalid,0),                      /* 76 */
                    173:        MACH_TRAP(kern_invalid,0),                      /* 77 */
                    174:        MACH_TRAP(kern_invalid,0),                      /* 78 */
                    175:        MACH_TRAP(kern_invalid,0),                      /* 79 */
                    176:        MACH_TRAP(kern_invalid,0),                      /* 80 */
                    177:        MACH_TRAP(kern_invalid,0),                      /* 81 */
                    178:        MACH_TRAP(kern_invalid,0),                      /* 82 */
                    179:        MACH_TRAP(kern_invalid,0),                      /* 83 */
                    180:        MACH_TRAP(kern_invalid,0),                      /* 84 */
                    181:        MACH_TRAP(kern_invalid,0),                      /* 85 */
                    182:        MACH_TRAP(kern_invalid,0),                      /* 86 */
                    183:        MACH_TRAP(kern_invalid,0),                      /* 87 */
                    184:        MACH_TRAP(kern_invalid,0),                      /* 88 */
                    185:        MACH_TRAP(kern_invalid,0),                      /* 89 */
                    186:        MACH_TRAP(kern_invalid,0),                      /* 90 */
                    187:        MACH_TRAP(kern_invalid,0),                      /* 91 */
                    188:        MACH_TRAP(kern_invalid,0),                      /* 92 */
                    189:        MACH_TRAP(kern_invalid,0),                      /* 93 */
                    190:        MACH_TRAP(kern_invalid,0),                      /* 94 */
                    191:        MACH_TRAP(MKGetTimeBaseInfo, 5),        /* 95 */
                    192: /* traps 64 - 95 reserved (debo) */
                    193:        MACH_TRAP(kern_invalid,0),                      /* 96 */
                    194:        MACH_TRAP(kern_invalid,0),                      /* 97 */
                    195:        MACH_TRAP(kern_invalid,0),                      /* 98 */
                    196:        MACH_TRAP(kern_invalid,0),                      /* 99 */
                    197:        MACH_TRAP(kern_invalid,0),                      /* 100 */
                    198:        MACH_TRAP(kern_invalid,0),                      /* 101 */
                    199:        MACH_TRAP(kern_invalid,0),                      /* 102 */
                    200:        MACH_TRAP(kern_invalid,0),                      /* 103 */
                    201:        MACH_TRAP(kern_invalid,0),                      /* 104 */
                    202:        MACH_TRAP(kern_invalid,0),                      /* 105 */
                    203:        MACH_TRAP(kern_invalid,0),                      /* 106 */
                    204:        MACH_TRAP(kern_invalid,0),                      /* 107 */
                    205:        MACH_TRAP(kern_invalid,0),                      /* 108 */
                    206:        MACH_TRAP(kern_invalid,0),                      /* 109 */
                    207:        MACH_TRAP(kern_invalid,0),                      /* 110 */
                    208:        MACH_TRAP(kern_invalid,0),                      /* 111 */
                    209:        MACH_TRAP(kern_invalid,0),                      /* 112 */
                    210:        MACH_TRAP(kern_invalid,0),                      /* 113 */
                    211:        MACH_TRAP(kern_invalid,0),                      /* 114 */
                    212:        MACH_TRAP(kern_invalid,0),                      /* 115 */
                    213:        MACH_TRAP(kern_invalid,0),                      /* 116 */
                    214:        MACH_TRAP(kern_invalid,0),                      /* 117 */
                    215:        MACH_TRAP(kern_invalid,0),                      /* 118 */
                    216:        MACH_TRAP(kern_invalid,0),                      /* 119 */
                    217:        MACH_TRAP(kern_invalid,0),                      /* 120 */
                    218:        MACH_TRAP(kern_invalid,0),                      /* 121 */
                    219:        MACH_TRAP(kern_invalid,0),                      /* 122 */
                    220:        MACH_TRAP(kern_invalid,0),                      /* 123 */
                    221:        MACH_TRAP(kern_invalid,0),                      /* 124 */
                    222:        MACH_TRAP(kern_invalid,0),                      /* 125 */
                    223:        MACH_TRAP(kern_invalid,0),                      /* 126 */
                    224:        MACH_TRAP(kern_invalid,0),                      /* 127 */
                    225: };
                    226: 
                    227: int    mach_trap_count = (sizeof(mach_trap_table) / sizeof(mach_trap_table[0]));
                    228: 
                    229: mach_port_name_t
                    230: null_port(void)
                    231: {
                    232:        if (kern_invalid_debug) Debugger("null_port mach trap");
                    233:        return(MACH_PORT_NULL);
                    234: }
                    235: 
                    236: kern_return_t
                    237: kern_invalid(void)
                    238: {
                    239:        if (kern_invalid_debug) Debugger("kern_invalid mach trap");
                    240:        return(KERN_INVALID_ARGUMENT);
                    241: }
                    242: 
                    243: kern_return_t
                    244: not_implemented(void)
                    245: {
                    246:        return(MACH_SEND_INTERRUPTED);
                    247: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.