#include <mach/rpc.h> also included by
<mach/mach.h>mach/rpc.h
Mach RPC Subsystem Interfaces
typedefroutine_arg_offset
typedef unsigned int routine_arg_offset
typedefroutine_arg_size
typedef unsigned int routine_arg_size
structrpc_routine_arg_descriptor
Definitions for a signature's argument and routine descriptor's.
| routine_arg_type | type | Port, Array, etc. |
| routine_arg_size | size | element size in bytes |
| routine_arg_size | count | number of elements |
| routine_arg_offset | offset | Offset in list of routine args |
typedefrpc_routine_arg_descriptor_t
typedef struct rpc_routine_arg_descriptor *rpc_routine_arg_descriptor_t
structrpc_routine_descriptor
| mig_impl_routine_t | impl_routine | Server work func pointer |
| mig_stub_routine_t | stub_routine | Unmarshalling func pointer |
| unsigned int | argc | Number of argument words |
| unsigned int | descr_count | Number of complex argument |
| rpc_routine_arg_descriptor_t | arg_descr | descriptors Pointer to beginning of |
| unsigned int | max_reply_msg | the arg_descr array Max size for reply msg |
typedefrpc_routine_descriptor_t
typedef struct rpc_routine_descriptor *rpc_routine_descriptor_t
macroRPC_DESCR_SIZE
#define RPC_DESCR_SIZE(x) ((x)->descr_count * sizeof(struct rpc_routine_arg_descriptor))
structrpc_signature
| struct rpc_routine_descriptor | rd | |
| struct rpc_routine_arg_descriptor[1] | rad |
macroRPC_SIGBUF_SIZE
#define RPC_SIGBUF_SIZE 8
structrpc_subsystem
A subsystem describes a set of server routines that can be invoked by
mach_rpc() on the ports that are registered with the subsystem. For
each routine, the routine number is given, along with the
address of the implementation function in the server and a
description of the arguments of the routine (it's "signature").
This structure definition is only a template for what is really a
variable-length structure (generated by MIG for each subsystem).
The actual structures do not always have one entry in the routine
array, and also have a varying number of entries in the arg_descr
array. Each routine has an array of zero or more arg descriptors
one for each complex arg. These arrays are all catenated together
to form the arg_descr field of the subsystem struct. The
arg_descr field of each routine entry points to a unique sub-sequence
within this catenated array. The goal is to keep everything
contiguous.
| void * | reserved | Reserved for system use |
| mach_msg_id_t | start | Min routine number |
| mach_msg_id_t | end | Max routine number + 1 |
| unsigned int | maxsize | Max mach_msg size |
| vm_address_t | base_addr | Address of this struct in user |
| struct rpc_routine_descriptor[1] | routine | |
| struct rpc_routine_arg_descriptor[1] | arg_descriptor | count fields for all routines |
typedefrpc_subsystem_t
typedef struct rpc_subsystem *rpc_subsystem_t
macroRPC_SUBSYSTEM_NULL
#define RPC_SUBSYSTEM_NULL ((rpc_subsystem_t) 0)