|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.