This is mkl.c in view mode; [Download] [Up]
#ifndef _mklisp_MKLisp #define _mklisp_MKLisp /* Module MKLisp */ #include <mach/kern_return.h> #include <mach/port.h> #include <mach/message.h> #ifndef mig_external #define mig_external extern #endif #include <mach/std_types.h> /* contain's mig interface declarations turned off type checking because Lisp does it already */ #ifndef _MKLisp_TYPES_ #define _MKLisp_TYPES_ typedef char my_string[8*50]; typedef double dbl; #endif _MKLisp_TYPES_ #define TypeCheck 0 /* Routine mklisp_reorchestrate */ mig_external kern_return_t mklisp_reorchestrate ( port_t server, int *playing); /* Routine mklisp_tzero */ mig_external kern_return_t mklisp_tzero ( port_t server); /* Routine mklisp_paramid */ mig_external kern_return_t mklisp_paramid ( port_t server, my_string name, int *idnum); /* SimpleRoutine mklisp_makeevent */ mig_external kern_return_t mklisp_makeevent ( port_t server, int notetype, int notetag, dbl dur, int patch); /* SimpleRoutine mklisp_sendevent */ mig_external kern_return_t mklisp_sendevent ( port_t server, dbl delay); /* SimpleRoutine mklisp_addfloatparam */ mig_external kern_return_t mklisp_addfloatparam ( port_t server, int paramid, dbl floatVal); /* SimpleRoutine mklisp_addstringparam */ mig_external kern_return_t mklisp_addstringparam ( port_t server, int paramid, my_string stringVal); /* SimpleRoutine mklisp_addintparam */ mig_external kern_return_t mklisp_addintparam ( port_t server, int paramid, int intVal); #endif _mklisp_MKLisp #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 reorchestrate */ mig_external kern_return_t mklisp_reorchestrate ( port_t server, int *playing) { typedef struct { msg_header_t Head; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; msg_type_t playingType; int playing; } 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 = 24; #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 static const msg_type_t playingCheck = { /* 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 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 = 0; msg_result = msg_rpc(&InP->Head, MSG_OPTION_NONE, sizeof(Reply), 0, 0); if (msg_result != RPC_SUCCESS) { if (msg_result == RCV_INVALID_PORT) 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 != 100) return MIG_REPLY_MISMATCH; #if TypeCheck if (((msg_size != 40) || (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; #if TypeCheck #if UseStaticMsgType if (* (int *) &OutP->playingType != * (int *) &playingCheck) #else UseStaticMsgType if ((OutP->playingType.msg_type_inline != TRUE) || (OutP->playingType.msg_type_longform != FALSE) || (OutP->playingType.msg_type_name != MSG_TYPE_INTEGER_32) || (OutP->playingType.msg_type_number != 1) || (OutP->playingType.msg_type_size != 32)) #endif UseStaticMsgType return MIG_TYPE_ERROR; #endif TypeCheck *playing /* playing */ = /* *playing */ OutP->playing; return OutP->RetCode; } /* Routine tzero */ mig_external kern_return_t mklisp_tzero ( port_t server) { typedef struct { msg_header_t Head; } 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 = 24; #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 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 = 1; msg_result = msg_rpc(&InP->Head, MSG_OPTION_NONE, sizeof(Reply), 0, 0); if (msg_result != RPC_SUCCESS) { if (msg_result == RCV_INVALID_PORT) 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 != 101) 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 paramid */ mig_external kern_return_t mklisp_paramid ( port_t server, my_string name, int *idnum) { typedef struct { msg_header_t Head; msg_type_long_t nameType; my_string name; char namePad[2]; } Request; typedef struct { msg_header_t Head; msg_type_t RetCodeType; kern_return_t RetCode; msg_type_t idnumType; int idnum; } 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 = 88; #if UseStaticMsgType static const msg_type_long_t nameType = { { /* 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 = */ 400, /* 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 static const msg_type_t idnumCheck = { /* 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->nameType = nameType; #else UseStaticMsgType InP->nameType.msg_type_long_name = MSG_TYPE_STRING; InP->nameType.msg_type_long_size = 400; InP->nameType.msg_type_long_number = 1; InP->nameType.msg_type_header.msg_type_inline = TRUE; InP->nameType.msg_type_header.msg_type_longform = TRUE; InP->nameType.msg_type_header.msg_type_deallocate = FALSE; #endif UseStaticMsgType (void) strncpy(InP->name /* name */, /* name */ name, 50); InP->name /* name */[49] = '\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 = 2; msg_result = msg_rpc(&InP->Head, MSG_OPTION_NONE, sizeof(Reply), 0, 0); if (msg_result != RPC_SUCCESS) { if (msg_result == RCV_INVALID_PORT) 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 != 102) return MIG_REPLY_MISMATCH; #if TypeCheck if (((msg_size != 40) || (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; #if TypeCheck #if UseStaticMsgType if (* (int *) &OutP->idnumType != * (int *) &idnumCheck) #else UseStaticMsgType if ((OutP->idnumType.msg_type_inline != TRUE) || (OutP->idnumType.msg_type_longform != FALSE) || (OutP->idnumType.msg_type_name != MSG_TYPE_INTEGER_32) || (OutP->idnumType.msg_type_number != 1) || (OutP->idnumType.msg_type_size != 32)) #endif UseStaticMsgType return MIG_TYPE_ERROR; #endif TypeCheck *idnum /* idnum */ = /* *idnum */ OutP->idnum; return OutP->RetCode; } /* SimpleRoutine makeevent */ mig_external kern_return_t mklisp_makeevent ( port_t server, int notetype, int notetag, dbl dur, int patch) { typedef struct { msg_header_t Head; msg_type_t notetypeType; int notetype; msg_type_t notetagType; int notetag; msg_type_t durType; dbl dur; msg_type_t patchType; int patch; } Request; union { Request In; } Mess; register Request *InP = &Mess.In; unsigned int msg_size = 60; #if UseStaticMsgType static const msg_type_t notetypeType = { /* 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 notetagType = { /* 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 durType = { /* msg_type_name = */ MSG_TYPE_REAL, /* msg_type_size = */ 64, /* 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 patchType = { /* 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->notetypeType = notetypeType; #else UseStaticMsgType InP->notetypeType.msg_type_name = MSG_TYPE_INTEGER_32; InP->notetypeType.msg_type_size = 32; InP->notetypeType.msg_type_number = 1; InP->notetypeType.msg_type_inline = TRUE; InP->notetypeType.msg_type_longform = FALSE; InP->notetypeType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->notetype /* notetype */ = /* notetype */ notetype; #if UseStaticMsgType InP->notetagType = notetagType; #else UseStaticMsgType InP->notetagType.msg_type_name = MSG_TYPE_INTEGER_32; InP->notetagType.msg_type_size = 32; InP->notetagType.msg_type_number = 1; InP->notetagType.msg_type_inline = TRUE; InP->notetagType.msg_type_longform = FALSE; InP->notetagType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->notetag /* notetag */ = /* notetag */ notetag; #if UseStaticMsgType InP->durType = durType; #else UseStaticMsgType InP->durType.msg_type_name = MSG_TYPE_REAL; InP->durType.msg_type_size = 64; InP->durType.msg_type_number = 1; InP->durType.msg_type_inline = TRUE; InP->durType.msg_type_longform = FALSE; InP->durType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->dur /* dur */ = /* dur */ dur; #if UseStaticMsgType InP->patchType = patchType; #else UseStaticMsgType InP->patchType.msg_type_name = MSG_TYPE_INTEGER_32; InP->patchType.msg_type_size = 32; InP->patchType.msg_type_number = 1; InP->patchType.msg_type_inline = TRUE; InP->patchType.msg_type_longform = FALSE; InP->patchType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->patch /* patch */ = /* patch */ patch; 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 = 3; return msg_send(&InP->Head, MSG_OPTION_NONE, 0); } /* SimpleRoutine sendevent */ mig_external kern_return_t mklisp_sendevent ( port_t server, dbl delay) { typedef struct { msg_header_t Head; msg_type_t delayType; dbl delay; } Request; union { Request In; } Mess; register Request *InP = &Mess.In; unsigned int msg_size = 36; #if UseStaticMsgType static const msg_type_t delayType = { /* msg_type_name = */ MSG_TYPE_REAL, /* msg_type_size = */ 64, /* 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->delayType = delayType; #else UseStaticMsgType InP->delayType.msg_type_name = MSG_TYPE_REAL; InP->delayType.msg_type_size = 64; InP->delayType.msg_type_number = 1; InP->delayType.msg_type_inline = TRUE; InP->delayType.msg_type_longform = FALSE; InP->delayType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->delay /* delay */ = /* delay */ delay; 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 = 4; return msg_send(&InP->Head, MSG_OPTION_NONE, 0); } /* SimpleRoutine addfloatparam */ mig_external kern_return_t mklisp_addfloatparam ( port_t server, int paramid, dbl floatVal) { typedef struct { msg_header_t Head; msg_type_t paramidType; int paramid; msg_type_t floatValType; dbl floatVal; } Request; union { Request In; } Mess; register Request *InP = &Mess.In; unsigned int msg_size = 44; #if UseStaticMsgType static const msg_type_t paramidType = { /* 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 floatValType = { /* msg_type_name = */ MSG_TYPE_REAL, /* msg_type_size = */ 64, /* 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->paramidType = paramidType; #else UseStaticMsgType InP->paramidType.msg_type_name = MSG_TYPE_INTEGER_32; InP->paramidType.msg_type_size = 32; InP->paramidType.msg_type_number = 1; InP->paramidType.msg_type_inline = TRUE; InP->paramidType.msg_type_longform = FALSE; InP->paramidType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->paramid /* paramid */ = /* paramid */ paramid; #if UseStaticMsgType InP->floatValType = floatValType; #else UseStaticMsgType InP->floatValType.msg_type_name = MSG_TYPE_REAL; InP->floatValType.msg_type_size = 64; InP->floatValType.msg_type_number = 1; InP->floatValType.msg_type_inline = TRUE; InP->floatValType.msg_type_longform = FALSE; InP->floatValType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->floatVal /* floatVal */ = /* floatVal */ floatVal; 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 = 5; return msg_send(&InP->Head, MSG_OPTION_NONE, 0); } /* SimpleRoutine addstringparam */ mig_external kern_return_t mklisp_addstringparam ( port_t server, int paramid, my_string stringVal) { typedef struct { msg_header_t Head; msg_type_t paramidType; int paramid; msg_type_long_t stringValType; my_string stringVal; char stringValPad[2]; } Request; union { Request In; } Mess; register Request *InP = &Mess.In; unsigned int msg_size = 96; #if UseStaticMsgType static const msg_type_t paramidType = { /* 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_long_t stringValType = { { /* 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 = */ 400, /* msg_type_long_number = */ 1, }; #endif UseStaticMsgType #if UseStaticMsgType InP->paramidType = paramidType; #else UseStaticMsgType InP->paramidType.msg_type_name = MSG_TYPE_INTEGER_32; InP->paramidType.msg_type_size = 32; InP->paramidType.msg_type_number = 1; InP->paramidType.msg_type_inline = TRUE; InP->paramidType.msg_type_longform = FALSE; InP->paramidType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->paramid /* paramid */ = /* paramid */ paramid; #if UseStaticMsgType InP->stringValType = stringValType; #else UseStaticMsgType InP->stringValType.msg_type_long_name = MSG_TYPE_STRING; InP->stringValType.msg_type_long_size = 400; InP->stringValType.msg_type_long_number = 1; InP->stringValType.msg_type_header.msg_type_inline = TRUE; InP->stringValType.msg_type_header.msg_type_longform = TRUE; InP->stringValType.msg_type_header.msg_type_deallocate = FALSE; #endif UseStaticMsgType (void) strncpy(InP->stringVal /* stringVal */, /* stringVal */ stringVal, 50); InP->stringVal /* stringVal */[49] = '\0'; 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 = 6; return msg_send(&InP->Head, MSG_OPTION_NONE, 0); } /* SimpleRoutine addintparam */ mig_external kern_return_t mklisp_addintparam ( port_t server, int paramid, int intVal) { typedef struct { msg_header_t Head; msg_type_t paramidType; int paramid; msg_type_t intValType; int intVal; } Request; union { Request In; } Mess; register Request *InP = &Mess.In; unsigned int msg_size = 40; #if UseStaticMsgType static const msg_type_t paramidType = { /* 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 intValType = { /* 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->paramidType = paramidType; #else UseStaticMsgType InP->paramidType.msg_type_name = MSG_TYPE_INTEGER_32; InP->paramidType.msg_type_size = 32; InP->paramidType.msg_type_number = 1; InP->paramidType.msg_type_inline = TRUE; InP->paramidType.msg_type_longform = FALSE; InP->paramidType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->paramid /* paramid */ = /* paramid */ paramid; #if UseStaticMsgType InP->intValType = intValType; #else UseStaticMsgType InP->intValType.msg_type_name = MSG_TYPE_INTEGER_32; InP->intValType.msg_type_size = 32; InP->intValType.msg_type_number = 1; InP->intValType.msg_type_inline = TRUE; InP->intValType.msg_type_longform = FALSE; InP->intValType.msg_type_deallocate = FALSE; #endif UseStaticMsgType InP->intVal /* intVal */ = /* intVal */ intVal; 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 = 7; return msg_send(&InP->Head, MSG_OPTION_NONE, 0); } /* add.c: Client program for add example */ #import <mach/mach.h> #import <stdio.h> int mklisp_setup() { kern_return_t ret; port_t server; /* Find the server. */ ret = netname_look_up(name_server_port, "", "MKLisp", &server); if (ret != KERN_SUCCESS) { /* Print the network name server's error message. */ mach_error("Lookup of MKLisp server failed", ret); return 0; } if (server == PORT_NULL) { fprintf(stderr, "Couldn't find the MKLisp server.\n"); return 0; } return (int)server; } int mklisp_reorchestrate_rtn(server) port_t server; { kern_return_t ret; int val; ret = mklisp_reorchestrate(server, &val); if (ret != KERN_SUCCESS) mach_error("mklisp_reorchestrate failed", ret); return val; } int mklisp_paramid_rtn(server, str) port_t server; char *str; { kern_return_t ret; int val; ret = mklisp_paramid(server, str, &val); if (ret != KERN_SUCCESS) mach_error("mklisp_paramid failed", ret); return val; }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.