]> git.saurik.com Git - apple/libc.git/blame - mach.subproj/headers.subproj/mig_errors.h
Libc-166.tar.gz
[apple/libc.git] / mach.subproj / headers.subproj / mig_errors.h
CommitLineData
e9ce8d39
A
1/*
2 * Copyright 1996 1995 by Open Software Foundation, Inc. 1997 1996 1995 1994 1993 1992 1991
3 * All Rights Reserved
4 *
5 * Permission to use, copy, modify, and distribute this software and
6 * its documentation for any purpose and without fee is hereby granted,
7 * provided that the above copyright notice appears in all copies and
8 * that both the copyright notice and this permission notice appear in
9 * supporting documentation.
10 *
11 * OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
12 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
13 * FOR A PARTICULAR PURPOSE.
14 *
15 * IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
16 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
17 * LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
18 * NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
19 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * MkLinux
24 */
25
26/*
27 * Mach Operating System
28 * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
29 * All Rights Reserved.
30 *
31 * Permission to use, copy, modify and distribute this software and its
32 * documentation is hereby granted, provided that both the copyright
33 * notice and this permission notice appear in all copies of the
34 * software, derivative works or modified versions, and any portions
35 * thereof, and that both notices appear in supporting documentation.
36 *
37 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
38 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
39 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
40 *
41 * Carnegie Mellon requests users of this software to return to
42 *
43 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
44 * School of Computer Science
45 * Carnegie Mellon University
46 * Pittsburgh PA 15213-3890
47 *
48 * any improvements or extensions that they make and grant Carnegie Mellon
49 * the rights to redistribute these changes.
50 */
51
52/*
53 * Mach Interface Generator errors
54 *
55 */
56
57#ifndef _MACH_MIG_ERRORS_H_
58#define _MACH_MIG_ERRORS_H_
59
60#include <mach/kern_return.h>
61#include <mach/message.h>
62#include <mach/rpc.h>
63#include <mach/vm_types.h>
64
65/*
66 * These error codes should be specified as system 4, subsytem 2.
67 * But alas backwards compatibility makes that impossible.
68 * The problem is old clients of new servers (eg, the kernel)
69 * which get strange large error codes when there is a Mig problem
70 * in the server. Unfortunately, the IPC system doesn't have
71 * the knowledge to convert the codes in this situation.
72 */
73
74#define MIG_TYPE_ERROR -300 /* client type check failure */
75#define MIG_REPLY_MISMATCH -301 /* wrong reply message ID */
76#define MIG_REMOTE_ERROR -302 /* server detected error */
77#define MIG_BAD_ID -303 /* bad request message ID */
78#define MIG_BAD_ARGUMENTS -304 /* server type check failure */
79#define MIG_NO_REPLY -305 /* no reply should be send */
80#define MIG_EXCEPTION -306 /* server raised exception */
81#define MIG_ARRAY_TOO_LARGE -307 /* array not large enough */
82#define MIG_SERVER_DIED -308 /* server died */
83#define MIG_TRAILER_ERROR -309 /* trailer has an unknown format */
84
85#include <mach/ndr.h>
86
87typedef struct {
88 mach_msg_header_t Head;
89 NDR_record_t NDR;
90 kern_return_t RetCode;
91} mig_reply_error_t;
92
93typedef struct mig_symtab {
94 char *ms_routine_name;
95 int ms_routine_number;
96 void (*ms_routine)(void); /* Since the functions in the
97 * symbol table have unknown
98 * signatures, this is the best
99 * we can do...
100 */
101} mig_symtab_t;
102
103/* Client side reply port allocate */
104extern mach_port_t mig_get_reply_port(void);
105
106/* Client side reply port deallocate */
107extern void mig_dealloc_reply_port(mach_port_t reply_port);
108
109/* Client side reply port "deallocation" */
110extern void mig_put_reply_port(mach_port_t reply_port);
111
112/* Allocate memory for out-of-stack mig structures */
113extern char *mig_user_allocate(vm_size_t size);
114
115/* Deallocate memory used for out-of-stack mig structures */
116extern void mig_user_deallocate(char *data, vm_size_t size);
117
118/* Bounded string copy */
119extern int mig_strncpy(
120 char *dest,
121 char *src,
122 int len);
123
124#endif /* _MACH_MIG_ERRORS_H_ */