1 /* 2 * Copyright 1991-1998 by Open Software Foundation, Inc. 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 * cmk1.1 23 */ 24 /* 25 * Mach Operating System 26 * Copyright (c) 1991,1990 Carnegie Mellon University 27 * All Rights Reserved. 28 * 29 * Permission to use, copy, modify and distribute this software and its 30 * documentation is hereby granted, provided that both the copyright 31 * notice and this permission notice appear in all copies of the 32 * software, derivative works or modified versions, and any portions 33 * thereof, and that both notices appear in supporting documentation. 34 * 35 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS 36 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 37 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 38 * 39 * Carnegie Mellon requests users of this software to return to 40 * 41 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 42 * School of Computer Science 43 * Carnegie Mellon University 44 * Pittsburgh PA 15213-3890 45 * 46 * any improvements or extensions that they make and grant Carnegie the 47 * rights to redistribute these changes. 48 */ 49 /* 50 * 91/06/25 10:32:47 rpd 51 * Changed WriteVarDecl to WriteUserVarDecl. 52 * Added WriteServerVarDecl. 53 * [91/05/23 rpd] 54 * 55 * 91/02/05 17:56:33 mrt 56 * Changed to new Mach copyright 57 * [91/02/01 17:56:48 mrt] 58 * 59 * 90/06/02 15:06:16 rpd 60 * Created for new IPC. 61 * [90/03/26 21:15:06 rpd] 62 * 63 * 07-Apr-89 Richard Draves (rpd) at Carnegie-Mellon University 64 * Extensive revamping. Added polymorphic arguments. 65 * Allow multiple variable-sized inline arguments in messages. 66 * 67 * 28-May-87 Richard Draves (rpd) at Carnegie-Mellon University 68 * Created. 69 */ 70 71 #ifndef _UTILS_H 72 #define _UTILS_H 73 74 #include "type.h" 75 76 /* definitions used by the Event Logger */ 77 78 #define LOG_USER 0 79 #define LOG_SERVER 1 80 81 #define LOG_REQUEST 0 82 #define LOG_REPLY 1 83 84 /* stuff used by more than one of header.c, user.c, server.c */ 85 86 extern void WriteMigExternal(FILE *file); 87 extern void WriteMigInternal(FILE *file); 88 89 extern void WriteImport(FILE *file, string_t filename); 90 extern void WriteRCSDecl(FILE *file, identifier_t name, string_t rcs); 91 extern void WriteBogusDefines(FILE *file); 92 93 extern void WriteList(FILE *file, argument_t *args, 94 void (*func)(FILE *file, argument_t *arg), 95 u_int mask, const char *between, const char *after); 96 97 extern void WriteReverseList(FILE *file, argument_t *args, 98 void (*func)(FILE *file, argument_t *arg), 99 u_int mask, const char *between, const char *after); 100 101 /* good as arguments to WriteList */ 102 extern void WriteNameDecl(FILE *file, argument_t *arg); 103 extern void WriteUserVarDecl(FILE *file, argument_t *arg); 104 extern void WriteServerVarDecl(FILE *file, argument_t *arg); 105 extern void WriteTemplateDeclIn(FILE *file, argument_t *arg); 106 extern void WriteTemplateDeclOut(FILE *file, argument_t *arg); 107 extern void WriteTemplateKPD_port(FILE *file, argument_t *arg, boolean_t in); 108 extern void WriteTemplateKPD_ool(FILE *file, argument_t *arg, boolean_t in __unused); 109 extern void WriteTemplateKPD_oolport(FILE *file, argument_t *arg, boolean_t in __unused); 110 extern void WriteLogDefines(FILE *file, string_t who); 111 extern void WriteCheckDecl(FILE *file, argument_t *arg); 112 113 extern const char *ReturnTypeStr( routine_t *rt ); 114 115 extern const char *FetchUserType( ipc_type_t *it ); 116 extern const char *FetchServerType( ipc_type_t *it ); 117 extern const char *FetchKPDType( ipc_type_t *it ); 118 extern void WriteKPDFieldDecl(FILE *file, argument_t *arg); 119 120 extern void WriteFieldDeclPrim( FILE *file, argument_t *arg, const char *(*tfunc)(ipc_type_t *it) ); 121 122 extern void WriteStructDecl(FILE *file, argument_t *args, 123 void (*func)(FILE *file, argument_t *arg), 124 u_int mask, const char *name, 125 boolean_t simple, boolean_t trailer, 126 boolean_t isuser, 127 boolean_t template_only ); 128 129 extern void WriteStaticDecl( FILE *file, argument_t *arg ); 130 131 extern void WriteCopyType(FILE *file, ipc_type_t *it, const char *left, const char *right, ...); 132 133 extern void WriteCopyArg(FILE *file, argument_t *arg, const char *left, const char *right, ...); 134 135 extern void WriteLogMsg( FILE *file, routine_t *rt, int where, int what ); 136 137 extern void WriteCheckTrailerHead( FILE *file, routine_t *rt, boolean_t isuser ); 138 139 extern void WriteCheckTrailerSize( FILE *file, boolean_t isuser, argument_t *arg ); 140 141 extern void WriteReturnMsgError( FILE *file, routine_t *rt, boolean_t isuser, argument_t *arg, string_t error ); 142 143 extern void WriteRPCRoutineDescriptor( FILE *file, routine_t *rt, int arg_count, int descr_count, string_t stub_routine, string_t sig_array ); 144 145 extern void WriteRPCRoutineArgDescriptor( FILE *file, routine_t *rt ); 146 147 extern void WriteRequestTypes( FILE *file, statement_t *stats); 148 extern void WriteCheckRequests( FILE *file, statement_t *stats); 149 extern void WriteUserRequestUnion( FILE *file, statement_t *stats ); 150 extern void WriteServerRequestUnion( FILE *file, statement_t *stats ); 151 152 extern void WriteReplyTypes( FILE *file, statement_t *stats); 153 extern void WriteCheckReplies( FILE *file, statement_t *stats); 154 extern void WriteUserReplyUnion( FILE *file, statement_t *stats ); 155 extern void WriteServerReplyUnion( FILE *file, statement_t *stats ); 156 157 extern void WriteNDRConvertArgDecl( FILE *file, argument_t *arg, const char *convert, const char *dir); 158 extern void WriteIdentificationString(FILE *file); 159 160 extern void KPD_error(FILE *file,argument_t *arg); 161 extern void KPD_noop(FILE *file,argument_t *arg); 162 163 164 #endif /* _UTILS_H */ 165