This is gk_rpcUser.c in view mode; [Download] [Up]
#import "../../MiG/Library/gk_rpc_types.h" #include "gk_rpc.h" #include <mach/mach_types.h> #include <mach/message.h> #include <mach/mig_errors.h> #include <mach/msg_type.h> #if !defined(KERNEL) && !defined(MIG_NO_STRINGS) #include <strings.h> #endif /* LINTLIBRARY */ extern port_t mig_get_reply_port(); extern void mig_dealloc_reply_port(); #ifndef mig_internal #define mig_internal static #endif #ifndef TypeCheck #define TypeCheck 1 #endif #ifndef UseExternRCSId #ifdef hc #define UseExternRCSId 1 #endif #endif #ifndef UseStaticMsgType #if !defined(hc) || defined(__STDC__) #define UseStaticMsgType 1 #endif #endif #define msg_request_port msg_remote_port #define msg_reply_port msg_local_port /* Routine set_gk */ mig_external kern_return_t set_gk ( port_t server, int a) { typedef struct { msg_header_t Head; msg_type_t aType; int a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; union { Request In; Reply Out; } Mess; register Request *InP = &Mess.In; register Reply *OutP = &Mess.Out; msg_return_t msg_result; #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size = 32; #if UseStaticMsgType static const msg_type_t aType = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0, }; #endif UseStaticMsgType #if UseStaticMsgType static const msg_type_t RetCodeCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if UseStaticMsgType InP->aType = aType; #else UseStaticMsgType InP->aType.msg_type_name = MSG_TYPE_INTEGER_32; InP->aType.msg_type_size = 32; InP->aType.msg_type_number = 1; InP->aType.msg_type_inline = TRUE; InP->aType.msg_type_longform = FALSE; InP->aType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->a /* a */ = /* a */ a; InP->Head.msg_simple = TRUE; InP->Head.msg_size = msg_size; InP->Head.msg_type = MSG_TYPE_NORMAL | MSG_TYPE_RPC; InP->Head.msg_request_port = server; InP->Head.msg_reply_port = mig_get_reply_port(); InP->Head.msg_id = 100; msg_result = msg_rpc(&InP->Head, RCV_TIMEOUT, sizeof(Reply), 0, 1000); if (msg_result != RPC_SUCCESS) { if ((msg_result == RCV_INVALID_PORT) || (msg_result == RCV_TIMED_OUT)) mig_dealloc_reply_port(); return msg_result; } #if TypeCheck msg_size = OutP->Head.msg_size; msg_simple = OutP->Head.msg_simple; #endif TypeCheck if (OutP->Head.msg_id != 200) return MIG_REPLY_MISMATCH; #if TypeCheck if (((msg_size != 32) || (msg_simple != TRUE)) && ((msg_size != sizeof(death_pill_t)) || (msg_simple != TRUE) || (OutP->RetCode == KERN_SUCCESS))) return MIG_TYPE_ERROR; #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &OutP->RetCodeType != * (int *) &RetCodeCheck) #else UseStaticMsgType if ((OutP->RetCodeType.msg_type_inline != TRUE) || (OutP->RetCodeType.msg_type_longform != FALSE) || (OutP->RetCodeType.msg_type_name != MSG_TYPE_INTEGER_32) || (OutP->RetCodeType.msg_type_number != 1) || (OutP->RetCodeType.msg_type_size != 32)) #endif UseStaticMsgType return MIG_TYPE_ERROR; #endif TypeCheck if (OutP->RetCode != KERN_SUCCESS) return OutP->RetCode; return OutP->RetCode; } /* SimpleRoutine set_gk_oneway */ mig_external kern_return_t set_gk_oneway ( port_t server, int a) { typedef struct { msg_header_t Head; msg_type_t aType; int a; } Request; union { Request In; } Mess; register Request *InP = &Mess.In; unsigned int msg_size = 32; #if UseStaticMsgType static const msg_type_t aType = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0, }; #endif UseStaticMsgType #if UseStaticMsgType InP->aType = aType; #else UseStaticMsgType InP->aType.msg_type_name = MSG_TYPE_INTEGER_32; InP->aType.msg_type_size = 32; InP->aType.msg_type_number = 1; InP->aType.msg_type_inline = TRUE; InP->aType.msg_type_longform = FALSE; InP->aType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->a /* a */ = /* a */ a; InP->Head.msg_simple = TRUE; InP->Head.msg_size = msg_size; InP->Head.msg_type = MSG_TYPE_NORMAL; InP->Head.msg_request_port = server; InP->Head.msg_reply_port = PORT_NULL; InP->Head.msg_id = 101; return msg_send(&InP->Head, MSG_OPTION_NONE, 0); } /* Routine send_string */ mig_external kern_return_t send_string ( port_t server, gk_cstring a) { typedef struct { msg_header_t Head; msg_type_long_t aType; gk_cstring a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; union { Request In; Reply Out; } Mess; register Request *InP = &Mess.In; register Reply *OutP = &Mess.Out; msg_return_t msg_result; #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size = 116; #if UseStaticMsgType static const msg_type_long_t aType = { { /* msg_type_name = */ 0, /* msg_type_size = */ 0, /* msg_type_number = */ 0, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ TRUE, /* msg_type_deallocate = */ FALSE, }, /* msg_type_long_name = */ MSG_TYPE_STRING, /* msg_type_long_size = */ 640, /* msg_type_long_number = */ 1, }; #endif UseStaticMsgType #if UseStaticMsgType static const msg_type_t RetCodeCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if UseStaticMsgType InP->aType = aType; #else UseStaticMsgType InP->aType.msg_type_long_name = MSG_TYPE_STRING; InP->aType.msg_type_long_size = 640; InP->aType.msg_type_long_number = 1; InP->aType.msg_type_header.msg_type_inline = TRUE; InP->aType.msg_type_header.msg_type_longform = TRUE; InP->aType.msg_type_header.msg_type_deallocate = FALSE; #endif UseStaticMsgType (void) strncpy(InP->a /* a */, /* a */ a, 80); InP->a /* a */[79] = '\0'; InP->Head.msg_simple = TRUE; InP->Head.msg_size = msg_size; InP->Head.msg_type = MSG_TYPE_NORMAL | MSG_TYPE_RPC; InP->Head.msg_request_port = server; InP->Head.msg_reply_port = mig_get_reply_port(); InP->Head.msg_id = 102; msg_result = msg_rpc(&InP->Head, RCV_TIMEOUT, sizeof(Reply), 0, 1000); if (msg_result != RPC_SUCCESS) { if ((msg_result == RCV_INVALID_PORT) || (msg_result == RCV_TIMED_OUT)) mig_dealloc_reply_port(); return msg_result; } #if TypeCheck msg_size = OutP->Head.msg_size; msg_simple = OutP->Head.msg_simple; #endif TypeCheck if (OutP->Head.msg_id != 202) return MIG_REPLY_MISMATCH; #if TypeCheck if (((msg_size != 32) || (msg_simple != TRUE)) && ((msg_size != sizeof(death_pill_t)) || (msg_simple != TRUE) || (OutP->RetCode == KERN_SUCCESS))) return MIG_TYPE_ERROR; #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &OutP->RetCodeType != * (int *) &RetCodeCheck) #else UseStaticMsgType if ((OutP->RetCodeType.msg_type_inline != TRUE) || (OutP->RetCodeType.msg_type_longform != FALSE) || (OutP->RetCodeType.msg_type_name != MSG_TYPE_INTEGER_32) || (OutP->RetCodeType.msg_type_number != 1) || (OutP->RetCodeType.msg_type_size != 32)) #endif UseStaticMsgType return MIG_TYPE_ERROR; #endif TypeCheck if (OutP->RetCode != KERN_SUCCESS) return OutP->RetCode; return OutP->RetCode; } /* Routine send_dce_speed */ mig_external kern_return_t send_dce_speed ( port_t server, gk_cstring a) { typedef struct { msg_header_t Head; msg_type_long_t aType; gk_cstring a; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; } Reply; union { Request In; Reply Out; } Mess; register Request *InP = &Mess.In; register Reply *OutP = &Mess.Out; msg_return_t msg_result; #if TypeCheck boolean_t msg_simple; #endif TypeCheck unsigned int msg_size = 116; #if UseStaticMsgType static const msg_type_long_t aType = { { /* msg_type_name = */ 0, /* msg_type_size = */ 0, /* msg_type_number = */ 0, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ TRUE, /* msg_type_deallocate = */ FALSE, }, /* msg_type_long_name = */ MSG_TYPE_STRING, /* msg_type_long_size = */ 640, /* msg_type_long_number = */ 1, }; #endif UseStaticMsgType #if UseStaticMsgType static const msg_type_t RetCodeCheck = { /* msg_type_name = */ MSG_TYPE_INTEGER_32, /* msg_type_size = */ 32, /* msg_type_number = */ 1, /* msg_type_inline = */ TRUE, /* msg_type_longform = */ FALSE, /* msg_type_deallocate = */ FALSE, /* msg_type_unused = */ 0 }; #endif UseStaticMsgType #if UseStaticMsgType InP->aType = aType; #else UseStaticMsgType InP->aType.msg_type_long_name = MSG_TYPE_STRING; InP->aType.msg_type_long_size = 640; InP->aType.msg_type_long_number = 1; InP->aType.msg_type_header.msg_type_inline = TRUE; InP->aType.msg_type_header.msg_type_longform = TRUE; InP->aType.msg_type_header.msg_type_deallocate = FALSE; #endif UseStaticMsgType (void) strncpy(InP->a /* a */, /* a */ a, 80); InP->a /* a */[79] = '\0'; InP->Head.msg_simple = TRUE; InP->Head.msg_size = msg_size; InP->Head.msg_type = MSG_TYPE_NORMAL | MSG_TYPE_RPC; InP->Head.msg_request_port = server; InP->Head.msg_reply_port = mig_get_reply_port(); InP->Head.msg_id = 103; msg_result = msg_rpc(&InP->Head, RCV_TIMEOUT, sizeof(Reply), 0, 1000); if (msg_result != RPC_SUCCESS) { if ((msg_result == RCV_INVALID_PORT) || (msg_result == RCV_TIMED_OUT)) mig_dealloc_reply_port(); return msg_result; } #if TypeCheck msg_size = OutP->Head.msg_size; msg_simple = OutP->Head.msg_simple; #endif TypeCheck if (OutP->Head.msg_id != 203) return MIG_REPLY_MISMATCH; #if TypeCheck if (((msg_size != 32) || (msg_simple != TRUE)) && ((msg_size != sizeof(death_pill_t)) || (msg_simple != TRUE) || (OutP->RetCode == KERN_SUCCESS))) return MIG_TYPE_ERROR; #endif TypeCheck #if TypeCheck #if UseStaticMsgType if (* (int *) &OutP->RetCodeType != * (int *) &RetCodeCheck) #else UseStaticMsgType if ((OutP->RetCodeType.msg_type_inline != TRUE) || (OutP->RetCodeType.msg_type_longform != FALSE) || (OutP->RetCodeType.msg_type_name != MSG_TYPE_INTEGER_32) || (OutP->RetCodeType.msg_type_number != 1) || (OutP->RetCodeType.msg_type_size != 32)) #endif UseStaticMsgType return MIG_TYPE_ERROR; #endif TypeCheck if (OutP->RetCode != KERN_SUCCESS) return OutP->RetCode; return OutP->RetCode; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.