Annotation of XNU/osfmk/kern/syscall_sw.c, revision 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.