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.