﻿
		IPRPC - Inter Process Remote Procedure Call


							　　2013.01.08   V.0.5.0
							　　2013.01.14   V.0.6.0
							　　2013.01.19   V.0.8.0
							　　2013.01.22   V.0.8.1
							　　2013.02.07   V.0.8.2
							　　2013.02.08   V.0.8.3
							　　2013.03.08   V.0.8.4
							　　2013.03.13   V.0.8.5
							　　2013.04.20   V.0.8.6

■　REFERENCE MANUAL

　目次

　０：データ構造
　１：初期化
　２：MARSHALLING
　３：STUB
　４：SKELTON
　５：SHARED MEMORY
　６：LOG
　７：MULTICAST
　８：RENDEZVOUS
　９：OTHERS
　10：SYSTEMCALL WRAPPER



　０：データ構造
　このライブラリで定義される関数の戻り値はほとんどが以下で定義するRpcResult_t又は
RpcBool_tの値を返す。

typedef enum {
	RPC_ERROR_UNKNOWN = 0,
	RPC_SUCCESS = 1,
	RPC_FATAL_ERROR = -1,
	RPC_TIMEOUT_ERROR = -2,
	RPC_NO_MORE_RESOURCE = -3,
	RPC_PARAM_ERROR = -4,
	RPC_CAN_NOT_EXEC = -5,
	RPC_BUSY_ERROR = -6,
	RPC_INTERUPTTED = -7,
	RPC_LOCKING = -8,
	RPC_NOT_READY = -9,
	RPC_SYSCALL_ERROR = -10,
	RPC_ERROR_MAX
} RpcResult_t;

typedef enum {
	RPC_TRUE = 1,
	RPC_FALSE = 0,
	RPC_BOOL_MAX
} RpcBool_t;

　また多くの関数では戻り値以外にエラーコードとして以下に定義する値を返す。

#define	RPC_NO_ERROR				(0)
#define	RPC_ERR_EACCES				(1)
#define	RPC_ERR_EEXIST				(2)
#define	RPC_ERR_EINVAL				(3)
#define	RPC_ERR_ENOENT				(4)
#define	RPC_ERR_ENAMETOOLONG			(5)
#define	RPC_ERR_EFAULT				(6)
#define	RPC_ERR_ELOOP				(7)
#define	RPC_ERR_EISDIR				(8)
#define	RPC_ERR_ENOTDIR				(9)
#define	RPC_ERR_EPERM				(10)
#define	RPC_ERR_EROFS				(11)
#define	RPC_ERR_ETXTBSY				(12)
#define	RPC_ERR_EBADF				(13)
#define	RPC_ERR_ENODEV				(14)
#define	RPC_ERR_EOVERFLOW			(15)
#define	RPC_ERR_EMFILE				(16)
#define	RPC_ERR_ENFILE				(17)
#define	RPC_ERR_ENOMEM				(18)
#define	RPC_ERR_EINTR				(19)
#define	RPC_ERR_EIO				(20)
#define	RPC_ERR_EAGAIN				(21)
#define	RPC_ERR_EFBIG				(22)
#define	RPC_ERR_ENOSYS				(23)
#define	RPC_ERR_E2BIG				(24)
#define	RPC_ERR_ELIBBAD				(25)
#define	RPC_ERR_ENOEXEC				(26)
#define	RPC_ERR_ECHILD				(27)
#define	RPC_ERR_ETIMEDOUT			(28)
#define	RPC_ERR_OTHER				(99)

注）STUBからIPRPCを呼び出す際のパラメタにerrCodeを返すパラメタがあるが、これは
　　基本的にスケルトン側で実行した実行関数の戻り値（RpcResult_t）をキャストして
　　返しているので注意する。



　１：初期化
　このライブラリを使用するためにすべてのプロセスは以下の初期化関数を実行する。

　・IPC_InitIprpc
　　・関数仕様
　　　RpcResult_t IPC_InitIprpc(
　　　　　　RpcBool_t masterProcess, 
　　　　　　RpcBool_t useSkelton, 
　　　　　　RpcBool_t useStub, 
　　　　　　RpcLogLevel_t logLevel);

　　・意味
　　　各プロセスでiprpcを利用できるようにするために初期化を実行する。初期化は以下
　　　のことを行う。
　　　　　・ログの初期化と設定
　　　　　・共有メモリの設定
　　　　　・共有メモリ上のデータベースの初期化
　　　　　・メッセージキューの初期化
　　　　　・MARSHAL/STUB/SKELTONの初期化
　　　　　・RENDEZVOUSの初期化
　　　ログについては後述するLOGの項目を参照せよ。

　　・パラメタ
　　　masterProcess：IN：マスタープロセスかどうかのフラグ。マスタープロセスならば
　　　　　　IPC_TRUE、そうでなければIPC_FALSEを設定する。マスタープロセスはシステ
　　　　　　ム内で１つのみであり、必ず最初にこの初期化関数を呼ぶ。
　　　useSkelton：IN：スケルトンを使用するかどうかのフラグ。スケルトンを使用する
　　　　　　ならばIPC_TRUEを、使用しなければIPC_FALSEを設定する。プロセス内にある
　　　　　　関数をプロセス外部から呼び出すようにする場合は必ずIPC_TRUEを設定する。
　　　useStub：IN：スタブを使用するかどうかのフラグ。スタブを使用するならば
　　　　　　IPC_TRUEを、使用しなければIPC_FALSEを設定する。プロセス外の関数を呼び
　　　　　　出す場合は必ずIPC_TRUEを設定する。
　　　logLevel：IN：各モジュールが出力するログのレベルを設定する。通常は
　　　　　　IPC_LOG_LEVEL_DEFAULTをセットすればよい。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。エラーが発生した場合の原因はerrCodeに格納される。



　２：MARSHALLING
　このライブラリを使って他のプロセスへの手続き呼出しをする際に渡すパラメタ、ある
いは手続きが完了し元のプロセスに制御を戻す際に渡すパラメタを、ローカルなパラメタ
データから転送形式へ、または転送形式からからローカルなパラメタデータへの変換をす
る。ローカルなパラメタデータは以下のデータ構造である。

typedef enum {
	RPC_TYPE_UNKNOWN = 0,
	RPC_INT_TYPE,
	RPC_UINT_TYPE,
	RPC_FLOAT_TYPE,
	RPC_STRING_TYPE,
	RPC_ENUM_TYPE,
	RPC_OCTET_ARRAY_TYPE,
	RPC_BOOLEAN_TYPE,
	RPC_REFERENCE_TYPE,
	RPC_MAX_TYPE
} RpcParamType_t;

typedef struct {
	RpcParamType_t paramType;
	uint32_t paramLeng;
} RpcParamSpec_t;

typedef struct {
	RpcParamSpec_t paramSpec;
	uint8_t *paramData;
} RpcParamData_t;


　MarshallingではパラメタのデータはRpcPaaramData_tタイプの配列から、共有メモリ上
に転送形式のデータに変換される。、
パラメタのデータとして渡される各タイプのデータは以下の形式のものを扱う。

　　RPC_INT_TYPE：intXX_t（XXは8, 16, 32, 64）として扱う
　　RPC_UINT_TYPE：uintXX_t（XXは8, 16, 32, 64）として扱う
　　RPC_FLOAT_TYPE：float, double, long doubleとして扱う（注）
　　RPC_STRING_TYPE：C言語での文字列として扱う
　　RPC_ENUM_TYPE：uint32_tとして扱う。個別のenumタイプにマッピングする必要がある
　　RPC_OCTET_ARRAY_TYPE：uint8_tの配列として扱う
　　RPC_BOOLEAN_TYPE：RpcBool_tとして扱う
　　RPC_REFERENCE_TYPE：ポインタとして扱う

（注）RPC_FLOAT_TYPEはデータの形式がIEEE 754のbinaryである必要がある。
　　　一部のコンパイラではlong double型が定義されていても、IEEE 754のbinary形式
　　　でないものがあるので注意する。その場合にはlong doubleを指定してはいけない。

なお、RPC_REFERENCE_TYPEで同一デバイス上でのRPC、すなわちIPRPCではポインタを渡す
が、ポインタが指す先は共有メモリ上でなければならない。また、違うデバイスでのRPC、
すなわちIDRPCではparamDataの上位64ビットはデバイスのIDを指定するが、現在この機能
はサポートされていない。
　Marshallingした結果は以下の構造のデータとなる。

　　　　　　　　|------------------------------|
　　　　　　　　|　　　　　　 長さ 　　　　　　|　　Marshallingされたパラメタ全
　　　　　　　　--------------------------------　　体の長さ
　　　　　　　　|　　　　　 リザーブ 　　　　　|
　　　　　　　　--------------------------------　　--
　　　　　　　　|　　　　　　タイプ　　　　　　|　　 |
　　　　　　　　--------------------------------　　 |
　　　　　　　　|　　　　　　 長さ 　　　　　　|　　 |
　　　　　　　　--------------------------------　　 |　　個々のパラメタを
　　　　　　　　|　　　　　　　　　　　　　　　|　　 |　　Marshallingした結果
　　　　　　　　|　　　　　　　値　　　　　　　|　　 |　　のデータ
　　　　　　　　|　　　　　　　　　　　　　　　|　　 |
　　　　　　　　|　　　　　　　　　　　　　　　|　　 |
　　　　　　　　--------------------------------　　--
　　　　　　　　　　　　　　　・・・　　　　　　

　Marshallingした各パラメタの長さは以下のようになる。

　　RPC_INT_TYPE：1, 2, 4, 8オクテット、指定されるパラメタのサイズによる
　　RPC_UINT_TYPE：1, 2, 4, 8オクテット、指定されるパラメタのサイズによる
　　RPC_FLOAT_TYPE：4, 8, 16オクテット、指定されるパラメタのサイズによる
　　RPC_STRING_TYPE：文字列の長さ分のオクテット数、ただしNULL文字は含まない
　　RPC_ENUM_TYPE：4オクテット
　　RPC_OCTET_ARRAY_TYPE：指定された配列のサイズ分のオクテット数
　　RPC_BOOLEAN_TYPE：1オクテット、1はTRUE、0はFALSEを示す
　　RPC_REFERENCE_TYPE：8または16オクテット、ただし16オクテットは現在サポートし
　　　　　ていない

なお、各パラメタの値は8オクテット単位でPADDINGされる。例えば1オクテットのデータ
であっても7オクテット分はPADDINGされる。また、RPC_INT_TYPE, RPC_UINT_TYPE, 
RPC_FLOAT_TYPE, RPC_ENUM_TYPE, RPC_REFERENCE_TYPEはライブラリ生成時のコンフィグ
レーション時にCHECK_BYTEORDERをYESとすると、バイトオーダーをネットワークバイト
オーダー（ビッグエンディアン）に変換してMarshallingされる。

　変換関数の仕様は以下の通りである。

　・IPC_Marshal
　　・関数仕様
　　　RpcResult_t IPC_Marshal(
　　　　　　RpcParamData_t *inData, 
　　　　　　void **outData, 
　　　　　　uint32_t *outSize);

　　・意味
　　　inDataで指定されたパラメタをパッケージ化しoutDataに格納する。パッケージ化
　　　　　　したデータを格納する領域は関数内で共有メモリ上から確保する。

　　・パラメタ
　　　inData：IN：パッケージ化するパラメタデータの配列。パラメタデータ配列の最後
　　　　　　はUNKNOWNタイプでなければならない。
　　　outData：OUT：パッケージ化されたパラメタデータを格納する領域。関数内で共有
　　　　　　メモリ領域を割り当てる。
　　　outSize：OUT：関数内で割り当てたoutDataのサイズ。バイト単位で指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。

　・IPC_Unmarshal
　　・関数仕様
　　　RpcResult_t IPC_Unmarshal(
　　　　　　void *inData, 
　　　　　　uint32_t inSzie, 
　　　　　　void *outData, 
　　　　　　uint32_t outSize);

　　・意味
　　　パッケージ化されたパラメタデータinDataをアンパーケージし、パラメタデータを
　　　outDataに格納する。outDataにアンパーケージ化されたパラメタデータが
　　　IPFFC_ParamDataの配列として格納される。パラメタの値もoutData内に格納される。
　　　inDataは共有メモリ上に確保されている必要があり、この関数を呼び出すとinData
　　　は解放される。

　　・パラメタ
　　　inData：IN：パッケージ化されたパラメタデータ。パラメタデータ最後はUNKNOWN
　　　　　　タイプでなければならない。共有メモリ上に確保された領域でなければなら
　　　　　　ない。この関数を呼び出した後inDataは解放されているのでアクセスしては
　　　　　　いけない。
　　　inSize：IN：inDataのサイズ。バイト単位で指定する。
　　　outData：OUT：アンパーケージされたパラメタデータを格納する領域。呼び出し側
　　　　　　が用意する。outDataは8バイト境界に合わせること。
　　　outSize：IN：呼び出し側が用意したoutDataのサイズ。バイト単位で指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。

　・IPC_FreeMarshaledSharedData
　　・関数仕様
　　　void IPC_FreeMarshaledSharedData(
　　　　　　void *data);

　　・意味
　　　IPC_Marshal関数を実行して共有メモリ上に割り当てられたメモリ領域を解放する。
　　　　　　通常は使用しなくてもよい。

　　・パラメタ
　　　data：IN：共有メモリ上に割り当てられたメモリ領域のポインタ。IPC_Marshal関数
　　　　　　のoutDataを代入する。

　　・戻り値
　　　なし

　・IPC_GetMarshaledDataSize
　　・関数仕様
　　　 uint32_t IPC_GetMarshaledDataSize(
　　　　　　void *data);

　　・意味
　　　IPC_Marshal関数を実行して共有メモリ上に割り当てられたメモリ領域のサイズを
　　　　　　求める

　　・パラメタ
　　　data：IN：共有メモリ上に割り当てられたメモリ領域のポインタ。IPC_Marshal関数
　　　　　　のoutDataを代入する。

　　・戻り値
　　　入力パラメタdataで示される共有メモリ上に割り当てられたメモリ領域のサイズ。

　・IPC_DuplicateMarshaledData
　　・関数仕様
　　　void *IPC_DuplicateMarshaledData(
　　　　　　void *packedData,
　　　　　　uint32_t packedDataSize);

　　・意味
　　　IPC_Marshal関数を実行して共有メモリ上に割り当てられたメモリ領域の内容を、
　　　同じ共有メモリ領域上に領域を確保しデータをコピーする。

　　・パラメタ
　　　packedData：IN：共有メモリ上に割り当てられたメモリ領域
　　　packedDataSize：IN：packedDataのサイズ。バイト単位で指定する

　　・戻り値
　　　void*：コピーしたメモリ領域の先頭のポインタ



　３：STUB
　非同期型のRPCを呼び出した場合は、手続きの実行の結果はライブラリからコールバック
関数を呼び出すことで結果を返す。コールバック関数のタイプは以下の通りである。
　スタブの関数の実行中はタスク（スレッド）のキャンセルは実行できない。またスタブ
のコールバック関数を実行するタスク（スレッド）を終了させるようなキャンセルを実行
してはいけない。

　・IPC_CallbackFunc_t
　　・関数仕様
　　　void (*IPC_CallbackFunc_t)(
　　　　　　uint32_t seqNum,
　　　　　　void *outData,
　　　　　　uint32_t outSize,
　　　　　　uint32_t errCode);

　　・パラメタ
　　　seqNum：OUT：コールバック関数呼出しに関連付けられるシーケンス番号。シーケン
　　　　　　ス番号は非同期RPCを呼び出したときに割り当てられる。
　　　outData：OUT：RPCの戻りパラメタ。転送構文の形式でパラメタが格納されている
　　　　　　ので、IPC_Unmarshal関数を使ってローカルなパラメタデータに変換する必要
　　　　　　がある。
　　　outSize：OUT：outDataのサイズ。バイト単位で指定される。
　　　errCode：OUT：RPCを実行したときのエラーコードを格納する。RPCが成功した場合
　　　　　　は、IPC_NO_ERRRORが格納される。

　　・戻り値
　　　なし

　STUB関数の仕様は以下の通りである。

　・IPC_CallStubSync
　　・関数仕様
　　　RpcResult_t IPC_CallStubSync(
　　　　　　uint32_t funcID, 
　　　　　　void *inData, 
　　　　　　uint32_t inSize, 
　　　　　　void **outData, 
　　　　　　uint32_t *outSize, 
　　　　　　uint32_t timeOut, 
　　　　　　uint32_t *errCode);

　　・意味
　　　同期型のスタブ関数を呼び出す。入力パラメタはパッケージ化された状態でinData
　　　に格納する。出力パラメタはoutDataに格納される。入力パラメタinDataはスケルト
　　　ン側にそのまま渡されるので、共有メモリ上になければならない。出力パラメタは
　　　スケルトン側から渡された共有メモリ上の領域をそのまま渡す。

　　・パラメタ
　　　funcID：IN：呼び出し関数のID
　　　inData：IN：パッケージ化された入力パラメタデータ。パラメタデータ最後は
　　　　　　UNKNOWNタイプでなければならない。共有メモリ上になければならない。
　　　　　　inDataはこの関数を呼び出したあとはアクセスしてはいけない。
　　　inSize：IN：inDataのサイズ。バイト単位で指定する。
　　　outData：OUT：パッケージ化された出力パラメタデータを格納する領域。共有メモ
　　　　　　リ上の領域となる。
　　　outSize：IN：outDataのサイズ。バイト単位で指定される。
　　　timeOut：IN：関数実行のタイムアウト時間を指定する。単位はmSec。0を指定した
　　　　　　場合はデフォルト（30秒）となる。
　　　errCode：OUT：エラーコードを格納する。成功した場合はRPC_NO_ERRORを格納する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。エラーが発生した場合の原因はerrCodeに格納される。

　・IPC_CallStubAsync
　　・関数仕様
　　　RpcResult_t IPC_CallStubAsync(
　　　　　　uint32_t funcID, 
　　　　　　void *inData, 
　　　　　　uint32_t inSize, 
　　　　　　uint32_t timeOut,
　　　　　　IPC_CallbackFunc_t callback , 
　　　　　　uint32_t *seqNum,
　　　　　　uint32_t *errCode);

　　・意味
　　　非同期型のスタブ関数を呼び出す。入力パラメタはパッケージ化された状態で
　　　inDataに格納する。入力パラメタinDataはスケルトン側にそのまま渡されるので、
　　　共有メモリ上になければならない。

　　・パラメタ
　　　funcID：IN：呼び出し関数のID
　　　inData：IN：パッケージ化された入力パラメタデータ。パラメタデータ最後は
　　　　　　UNKNOWNタイプでなければならない。共有メモリ上になければならない。
　　　　　　この関数を呼び出したあとはアクセスしてはいけない。
　　　inSize：IN：inDataのサイズ。バイト単位で指定する。
　　　timeOut：IN：関数実行のタイムアウト時間を指定する。単位はmSec。0を指定した
　　　　　　場合はデフォルト（30秒）となる。
　　　callback：IN：結果を返すコールバック関数を指定する。
　　　errCode：OUT：エラーコードを格納する、成功した場合はRPC_NO_ERRORSを返す。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。エラーが発生した場合の原因はerrCodeに格納される。

　・IPC_StubSyncCancel
　　・関数仕様
　　　RpcResult_t IPC_StubSyncCancel(
　　　　　　IpcTaskID_t taskId,
　　　　　　uint32_t *errCode);

　　・意味
　　　同期型スタブ関数の実行をキャンセルする。実際に実行する関数の仕様としてキャ
　　　ンセルをサポートしていない場合があるため、スケルトン側のキャンセルが実行さ
　　　れる保証はされない。スケルトン側でキャンセル関数が実行できれば成功を返す。
　　　ただし、成功を返してもキャンセルが実行できるとは限らないので注意すること。

　　・パラメタ
　　　taskID：IN：同期型スタブ関数を実行しているタスクIDを指定する。
　　　errCode：OUT：エラーコードを格納する。キャンセルが成功した場合は
　　　　　　RPC_NO_ERRORを返す。 

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。エラーが発生した場合の原因はerrCodeに格納される。

　・IPC_StbuAsyncCancel
　　・関数仕様
　　　RpcResult_t IPC_StbuAsyncCancel(
　　　　　　uint32_t seqNum,
　　　　　　uint32_t *errCode);

　　・意味
　　　非同期型スタブ関数の実行をキャンセルする実際に実行する関数の仕様としてキャ
　　　ンセルをサポートしていない場合があるため、スケルトン側のキャンセルが実行さ
　　　れる保証はされない。スケルトン側でキャンセル関数が実行できれば成功を返す。
　　　ただし、成功を返してもキャンセルが実行できるとは限らないので注意すること。

　　・パラメタ
　　　seqNum：IN：シーケンス番号。非同期スタブ関数で返されるseqNumを指定する。
　　　errCode：OUT：エラーコードを格納する。キャンセルが成功した場合は
　　　　　　RPC_NO_ERRORを返す。 

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを返す。エラーの場合はそれ以外の値
　　　　　　を返す。エラーが発生した場合の原因はerrCodeに格納される。



　４：SKELTON
　スタブから呼び出された関数コールは、一旦スケルトンで受けてそのあと、ユーザが
実装した関数を呼び出す。キャンセル関数も同様にスタブから呼び出されたキャンセル関
数コールをいったんスケルトンで受けたあと、ユーザが実装したキャンセル関数を呼び出
す。ユーザが実装する関数およびキャンセル関数の仕様は以下の通りである。
　スケルトンを実行するタスク（スレッド）を終了させるようなキャンセルを実行しては
いけない。

　・IPC_SkeltonFunc_t
　　・関数仕様
　　　RpcResult_t (*IPC_SkeltonFunc_t)(
　　　　　　uint32_t processId, 
　　　　　　uint32_t seqNum, 
　　　　　　void *inData ,
　　　　　　uint32_t inSize, 
　　　　　　void **outData, 
　　　　　　int32_t *outSize, 
　　　　　　uint32_t timeOut);

　　・パラメタ
　　　processId：IN：この関数を呼び出したプロセスのプロセスID
　　　seqNum：IN：この関数を呼び出したプロセスのSTUBが生成したシーケンス番号。
　　　　　　processIdとseqNumですべてのトランザクションが特定できる。
　　　inData：IN：呼出し元が設定したこの関数の入力パラメタ。パッケージ化された
　　　　　　データ。
　　　inSize：IN：inDataのサイズ。バイト単位で指定される。
　　　outData：OUT：この関数の出力パラメタ。この関数内で設定される。パッケージ化
　　　　　　されたデータでなければならない。
　　　outSize：OUT：outDataのサイズ。バイト単位で設定される。
　　　timeOut：IN：この関数のタイムアウト時間をmsec単位で指定する。この関数内で
　　　　　　タイムアウト機能が実装されていなくても、STUB内でタイムアウトが発生す
　　　　　　れば、呼出し元へはタイムアウトが発生したものとして処理される。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・IPC_SkeltonCancelFunc_t
　　・関数仕様
　　　RpcResult_t (*IPC_SkeltonCancelFunc_t)(
　　　　　　uint32_t processId, 
　　　　　　uint32_t seqNum);

　　・パラメタ
　　　processId：IN：キャンセルを実行するトランザクションを特定するための、呼出し
　　　　　　元のプロセスID。
　　　seqNum：IN：キャンセルを実行するトランザクションクを特定するためのシーケン
　　　　　　ス番号。processIdとseqNumでキャンセルを実行するトランザクションを特定
　　　　　　する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　SKLETON関数の仕様は以下の通りである。

　・IPC_SkeltonRegisterFunction
　　・関数仕様
　　　RpcResult_t IPC_SkeltonRegisterFunction(
　　　　　　uint32_t funcId,
　　　　　　IPC_SkeltonFunc_t func,
　　　　　　IPC_SkeltonCancelFunc_t cancelFunc);

　　・意味
　　　スケルトン側で実行する関数を登録する。登録する関数は本関数とキャンセル関数
　　　の２つ。キャンセル関数を実装しない場合はNULLとする。

　　・パラメタ
　　　funcID：IN：関数IDを指定する。
　　　func：IN：スケルトンから呼び出される関数を指定する。
　　　cancelFunc：IN：スケルトンから呼び出されるキャンセル関数を指定する。実装し
　　　　　　ていない場合はNULLを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・IPC_SkeltonUnregisterFunction
　　・関数仕様
　　　RpcResult_t IPC_SkeltonUnregisterFunction(
　　　　　　uint32_t funcId);

　　・意味
　　　登録されている関数を解除する。

　　・パラメタ
　　　funcId：IN：関数IDを指定する。
　　　errCode：OUT：：エラーコードを格納する。登録の解除に成功した場合は
　　　　　　RPC_NO_ERRORを設定する。 

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。



　５：SHARED MEMORY
　このライブラリはプロセス間の通信(IPC)のために共有メモリを使用している。以下に
共有メモリから領域を割り当てたりするための関数を説明する。但し、ここでは利用者に
とって有益と思われるもののみを説明する。

　・IPC_GetShmInfo
　　・関数仕様
　　　RpcResult_t IPC_GetShmInfo(
　　　　　　char *name, 
　　　　　　int32_t *fd, 
　　　　　　void **addr, 
　　　　　　uint32_t *size);

　　・意味
　　　このライブラリで使用している共有メモリのディスクリプタ、アドレス、サイズを
　　　取得する。このライブラリでは、
　　　　　・共有データベース用の共有メモリ
　　　　　・プロセス間のメッセージ通信のためのキュー用の共有メモリ
　　　　　・関数のパラメタデータなど、そのほかのデータための共有メモリ
　　　の３つの共有メモリ領域を確保している。この関数ではそれぞれの共有メモリの
　　　領域の情報を取得することができる。

　　・パラメタ
　　　name：IN：共有メモリを示すファイルのパス。パス名はコンフィグレーション情報
　　　　　　を参照すること。
　　　fd：OUT：共有メモリのファイルディスクリプタ
　　　addr：OUT：共有メモリの先頭のアドレス
　　　size：OUT：割り当てられている共有メモリのサイズ

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・IPC_AllocShmMem
　　・関数仕様
　　　void *IPC_AllocShmMem(
　　　　　　int fd, 
　　　　　　uint32_t size);

　　・意味
　　　指定された共有メモリのディスクリプタから指定したサイズのメモリを割り当てる。
　　　割り当てに失敗した場合はNULLを返す。

　　・パラメタ
　　　fd：IN：共有メモリのファイルディスクリプタ
　　　size：IN：割り当てるメモリのサイズ

　　・戻り値
　　　void *：割り当てられたメモリの先頭のアドレス。割り当てられなかった場合には
　　　　　　NULLを返す。

　・IPC_FreeShmMem
　　・関数仕様
　　　void IPC_FreeShmMem(
　　　　int fd, 
　　　　void *addr);

　　・意味
　　　割り当てられている共有メモリ上の領域を解放する。この関数を呼び出した後は元
　　　の領域にアクセスしてはいけない。

　　・パラメタ
　　　fd：IN：共有メモリのファイルディスクリプタ
　　　addr：IN：割り当てられている領域の先頭アドレス

　　・戻り値
　　　なし

　・IPC_AllocatedSizeShmMem
　　・関数仕様
　　　uint32_t IPC_AllocatedSizeShmMem(
　　　　　　int fd, 
　　　　　　void *addr);

　　・意味
　　　割り当てられている共有メモリの領域のサイズを返す。

　　・パラメタ
　　　fd：IN：共有メモリのファイルディスクリプタ
　　　addr：IN：割り当てられている領域の先頭アドレス

　　・戻り値
　　　uint32_t：指定された領域のサイズを返す。

　・IPC_ReallocShmMem
　　・関数仕様
　　　void *IPC_ReallocShmMem(
　　　　　　int fd, 
　　　　　　void *addr, 
　　　　　　uint32_t newSize);

　　・意味
　　　すでに割り当てられている共有メモリ上の領域の再割り当てを行う。この関数以降
　　　は元の領域にアクセスしていはいけない。

　　・パラメタ
　　　fd：IN：共有メモリのファイルディスクリプタ
　　　add：IN：割り当てられている領域の先頭アドレス
　　　newSize：IN：割り当てるべき新しい領域のサイズ

　　・戻り値
　　　void *：割り当てられた新しい領域の先頭のアドレスを返す。失敗した場合はNULL
　　　　　　を返す。



　６：LOG
　このシステムで使われているログ出力ためのライブラリルーチンである。現在の実装で
はログはfprintf関数を使って実装され、stdoutに出力するようにしている。
　ログモジュール毎にログの出力レベルを設定することができる。定義されている
モジュールとログのレベルを以下に示す。

typedef enum {
	RPC_LOG_MODULE_UNKNOWN = 0,
	RPC_LOG_MODULE_MAIN,
	RPC_LOG_MODULE_SYSCALL,
	RPC_LOG_MODULE_MSG_QUE,
	RPC_LOG_MODULE_SHM,
	RPC_LOG_MODULE_SHM_DB,
	RPC_LOG_MODULE_LIB,
	RPC_LOG_MODULE_MARSHAL,
	RPC_LOG_MODULE_STUB,
	RPC_LOG_MODULE_SKELTON,
	RPC_LOG_MODULE_RENDEZV,
	RPC_LOG_MODULE_MLTCST,
	RPC_LOG_MODULE_MAX
} RpcLogModule_t;

typedef enum {
	RPC_LOG_LEVEL_UNKNOWN = 0,
	RPC_LOG_LEVEL_INFO,
	RPC_LOG_LEVEL_DEBUG3,
	RPC_LOG_LEVEL_DEBUG2,	
	RPC_LOG_LEVEL_DEBUG1,
	RPC_LOG_LEVEL_WARNING,
	RPC_LOG_LEVEL_DEFAULT,	/* NOT USE THIS LEVEL IN LogPrint */
	RPC_LOG_LEVEL_ERROR,
	RPC_LOG_LEVEL_FATAL,
	RPC_LOG_LEVEL_URGENT,
	RPC_LOG_LEVEL_MAX
} RpcLogLevel_t;

後述するが、ログのレベルでRPC_LOG_LEVEL_DEFAULTはモジュールの出力設定にのみ使用
すること。ログ出力時には使用してはいけない。

　ログの出力設定関数、ログ出力関数は以下の通りである。

　・RPC_LogSetLevel
　　・関数仕様
　　　RpcResult_t RPC_LogSetLevel(
　　　　　　RpcLogModule_t module, 
　　　　　　RpcLogLevel_t level);

　　・意味
　　　特定のモジュールのログの出力レベルを設定する。この設定をすると、そのモ
　　　ジュールは設定されたログの出力レベル以上のものでないと出力しない。

　　・パラメタ
　　　module：IN：出力レベルを設定するモジュールを指定する。
　　　level：IN：出力レベルを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・RPC_LogSetAll
　　・関数仕様
　　　RpcResult_t RPC_LogSetAll(
　　　　　　RpcLogLevel_t level);

　　・意味
　　　すべてのモジュールのログの出力レベルを設定する。IPC_InitIprpcではこの関数
　　　を呼び出してログのレベルを設定している。

　　・パラメタ
　　　level：IN：出力レベルを設定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・RPC_LogPrint
　　・関数仕様
　　　RpcResult_t RPC_LogPrint(
　　　　　　RpcLogModule_t module, 
　　　　　　RpcLogLevel_t level, 
　　　　　　char *format, ...);

　　・意味
　　　ログを出力する。この関数の内部で指定されたモジュールの設定されている出力
　　　レベルを比較し、設定されているレベルがこの関数で指定されるレベル以下であれ
　　　ばログを出力する。実際に出力するフォーマットはfprintf等で指定するフォーマット
　　　パラメタと同一である。ニューライン文字('\n')は自動てきに付加される。
　　　出力する形式は以下の通りである。
　　　　　MAIN  :DEBUG1:　....
　　　すなわち、ログを出力するモジュール名とログのレベルが行の先頭に付加される。

　　・パラメタ
　　　module：IN：モジュールを指定する
　　　level：IN：出力するレベルを指定する。IPC_LOG_LEVEL_DEFAULTは指定していはい
　　　　　けない。
　　　format,,,：IN：出力するログのフォーマットを指定する。基本的にfprintf等で指
　　　　　　定するケースと同一である。例えば、
　　　　　　　　　　"OUTPUT PARAM:0x%x", outParam
　　　　　　のように指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・RPC_LogPrintNomark
　　・関数仕様
　　　RpcResult_t RPC_LogPrintNomark(
　　　　　　RpcLogModule_t module, 
　　　　　　RpcLogLevel_t level, 
　　　　　　char *fmt, ...);

　　・意味
　　　ログを出力する。この関数の内部で指定されたモジュールの設定されている出力
　　　レベルを比較し、設定されているレベルがこの関数で指定されるレベル以下であれ
　　　ばログを出力する。実際に出力するフォーマットはfprintf等で指定するフォーマット
　　　パラメタと同一である。ニューライン文字('\n')は付加されない。またモジュール
　　　名、ログのレベルも出力されない。

　　・パラメタ
　　　module：IN：モジュールを指定する
　　　level：IN：出力するレベルを指定する。IPC_LOG_LEVEL_DEFAULTは指定していはい
　　　　　けない。
　　　format,,,：IN：出力するログのフォーマットを指定する。基本的にfprintf等で指
　　　　　　定するケースと同一である。例えば、
　　　　　　　　　　"OUTPUT PARAM:0x%x", outParam
　　　　　　のように指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・RPC_LogConvertResultCode
　　・関数仕様
　　　char *IRPC_LogConvertResultCode(
　　　　　　RpcResult_t ret);

　　・意味
　　　retを文字列に変換する。例えば、retにIPC_TIMEOUT_ERRORを指定すると、戻り値
　　　として"TIMEOUT"を返す。

　　・パラメタ
　　　ret：IN：変換するRpcResult_t型の値を指定する。

　　・戻り値
　　　char *：変換した結果の文字列のポインタを返す。

　・RPC_LogConvertErrCode
　　・関数仕様
　　　char *RPC_LogConvertErrCode(
　　　　uint32_t errCode);

　　・意味
　　　エラーコードを文字列に変換する。例えば、errCodeにIPC_ERR_ETXTBSYを指定する
　　　と、戻り値として"ETXTBSY"を返す。

　　・パラメタ
　　　errCode：IN：文字列に変換するエラーコードを指定する。

　　・戻り値
　　　char *：変換した結果の文字列のポインタを返す。



　７：MULTICAST

　7.1：MULTICAST RPCの登録
　・IPC_RegisterMulticastFunc
　　・関数仕様
　　　RpcResult_t IPC_RegisterMulticastFunc(
　　　　　　uint32_t mltcstFuncId);

　　・意味
　　　MULTICAST RPCの関数IDを登録する。

　　・パラメタ
　　　mltcstFuncId：IN：MULTICAST RPCの関数ID

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する

　・IPC_UnregisterMulticastFunc
　　・関数仕様
　　　RpcResult_t IPC_UnregisterMulticastFunc(
　　　　　　uint32_t mltcstFuncId);

　　・意味
　　　登録されているMULTICAST RPCの関数IDを削除する。

　　・パラメタ
　　　mltcstFuncId：IN：MULTICAST RPCの関数ID

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。

　・IPC_SignupMulticastFunc
　　・関数仕様
　　　RpcResult_t IPC_SignupMulticastFunc(
　　　　　　uint32_t mltcstFuncId, 
　　　　　　uint32_t funcId);

　　・意味
　　　MULTICAST RPCの関数IDに特定の関数IDを結びつける。これによって、呼び出し元
　　　がmltcstFuncIdでRPCの呼び出しをすると、funcIdのSKELTON側の動作関数を呼び出す。
　　　funcIdの動作関数を動作させるためには、IPC_SkeltonRegisterFunctionで登録を
　　　する必要がある。なお、mltcstFuncIdが登録されていない場合はmltcstFuncIdの登
　　　録も行う。
　　　なおfuncIdとしてMULTICAST RPCのIDを登録しても実際のMULTICAST RPCを呼び出す
　　　ことはできない。

　　・パラメタ
　　　mltcstFuncId：IN：MULTICAST RPCの関数ID
　　　funcId：IN：SKELTON側の動作関数を示すfuncId。ここにmltcstFuncIdを指定する
　　　　　　ことはできない。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。

　・IPC_ResignMulticastFunc
　　・関数仕様
　　　IPC_ResignMulticastFunc(
　　　　　　uint32_t mltcstFuncId, 
　　　　　　uint32_t funcId);

　　・意味
　　　MULTICAST RPCの実行先として登録されているfuncIdをMULTICAST RPCから削除する。

　　・パラメタ
　　　mltcstFuncId：IN：MULTICAST RPCの関数ID
　　　funcId：IN：SKELTON側の動作関数を示すfuncId。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　7.2：MULTICAST RPCの呼び出し
　MULTICAST RPCの戻り値は以下に定義する構造体の配列で結果を返す。

typedef struct {
	uint32_t resPid;
	uint32_t errCode;
	void *retParam;
	uint32_t retParamSize;
} IpcMulticastRetData_t;

　MULTICAST RPCのSTUB側のラッパー実装者は上記データ構造で返される結果を解析して
元の呼び出し元に結果を返すようにする。ここでretParamはここのSKELTON側から返された
結果であり、通常のRPCと同様IPC_Unmarshal関数を使って出力パラメタの取り出しをする。
　非同期型のMULTICAST RPCを呼び出した場合は、手続きの実行の結果はライブラリから
コールバック関数を呼び出すことで結果を返す。コールバック関数のタイプは以下の通り
である。

　・IPC_MultticastCallbackFunc_t
　　・関数仕様
　　　void (*IPC_MultticastCallbackFunc_t)(
　　　　　　uint32_t seqNum,
　　　　　　uint32_t numOfRet,
　　　　　　IpcMulticastRetData_t *retData,
　　　　　　uint32_t errCode);

　・IPC_CallStubSyncMulticast
　　・関数仕様
　　　RpcResult_t IPC_CallStubSyncMulticast(
　　　　　　uint32_t mltcstFuncId,
　　　　　　void *inParams,
　　　　　　uint32_t inParamsSize,
　　　　　　uint32_t *numOfRet,
　　　　　　IpcMulticastRetData_t **retData,
　　　　　　uint32_t timeOut,
　　　　　　uint32_t *errCode);

　　・意味
　　　MULTICAST RPCを呼び出す。この関数内ではmltcstFuncIdに対応付けられた各Funcid
　　　からそれぞれの実行関数を呼び出す。実行関数の呼び出しは非同期のRPCで呼び出す。
　　　従って、各実行関数の実行は並行して行われる。
　　　各実行関数の結果はretDataに配列として呼び出し元に返される。途中でタイムアウ
　　　トが発生した場合は、それまでに結果が返ってきたものについては呼び出し元に結
　　　果を返す。それ以外のエラーが発生した場合は原則として結果を返さない。実行関
　　　数の結果は構造体IpcMulticastRetData_t内のretParamに格納されるが、IPC_Marshal
　　　でパックされた状態で出力パラメタが格納されているので、STUB側のラッパー関数
　　　内でIPC_Unpackeを使って各出力パラメタと取り出す必要がある。またretDataの領
　　　域はこの関数内で動的に確保されるので、この関数を呼び出した後
　　　IPC_FreeMulticastOutParamsで領域を解放する必要がある。

　　・パラメタ
　　　mltcstFuncId：IN：MULTICAST RPCの呼び出すための関数IDを指定する。このIDは
　　　　　　事前にIPC_RegisterMulticastFuncで登録する必要がある。
　　　inParams：IN：各実行関数に渡す入力パラメタ、IPC_Marshalでパック化してある
　　　　　　ものを渡す。
　　　inParamsSize：IN：inParamsのサイズ。バイト単位で指定する。
　　　numOfRet：OUT：実行関数から結果が戻ってきた数。retDataで指定される出力パラ
　　　　　　メタIpcMulticastRetData_tの配列の数。
　　　retData：OUT：各実行関数からの結果を格納。IpcMulticastRetData_tの配列。配列
　　　　　　の領域はこの関数内で動的に確保する。
　　　timeOut：IN：この関数呼び出しのタイムアウト時間をmsec単位で指定する。タイム
　　　　　　アウトが発生した場合は、それまでに実行関数から返ってきた結果のみを呼
　　　　　　び出し元に返す。
　　　errCode：OUT：：エラーコードを格納する。成功した場合はRPC_NO_ERRORを返す。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーが発生した場合の原因はerrCodeに格納する。


　・IPC_CallStubAsyncMulticast
　　・関数仕様
　　　RpcResult_t IPC_CallStubAsyncMulticast(
　　　　　　uint32_t mltcstFuncId,
　　　　　　void *inParams,
　　　　　　uint32_t inParamsSize,
　　　　　　uint32_t timeOut,
　　　　　　IPC_MultticastCallbackFunc_t mltcstCallback, 
　　　　　　uint32_t *seqNum, 
　　　　　　uint32_t *errCode);

　　・意味
　　　MULTICAST RPCを非同期で呼び出す。この関数内ではmltcstFuncIdに対応付けられた
　　　各Funcidからそれぞれの実行関数を呼び出す。実行関数の呼び出しは非同期のRPCで
　　　呼び出す。従って、各実行関数の実行は並行して行われる。
　　　各実行関数の結果はコールバック関数で呼び出し元に返す。各実行関数の結果は配
　　　列としてコールバック関数のパラメタで渡される。途中でタイムアウトが発生した
　　　場合は、それまでに結果が返ってきたものについてはコールバック関数で呼び出し
　　　元に結果を返す。それ以外のエラーが発生した場合は原則として結果を返さない。
　　　実行関数の結果は構造体IpcMulticastRetData_t内のretParamに格納されるが、
　　　IPC_Marshalでパックされた状態で出力パラメタが格納されているので、コールバッ
　　　ク関数内でIPC_Unpackeを使って各出力パラメタと取り出す必要がある。また結果を
　　　格納する領域はコールバック関数を呼び出す前に動的に確保されるので、コール
　　　バック関数内で解放する必要がある。

　　・パラメタ
　　　mltcstFuncId：IN：MULTICAST RPCの呼び出すための関数IDを指定する。このIDは
　　　　　　事前にIPC_RegisterMulticastFuncで登録する必要がある。
　　　inParams：IN：各実行関数に渡す入力パラメタ、IPC_Marshalでパック化してある
　　　　　　ものを渡す。
　　　inParamsSize：IN：inParamsのサイズ。バイト単位で指定する。
　　　timeOut：IN：この関数呼び出しのタイムアウト時間をmsec単位で指定する。タイム
　　　　　　アウトが発生した場合は、それまでに実行関数から返ってきた結果のみを呼
　　　　　　び出し元に返す。
　　　mltcstCallback：IN：結果を返すコールバック関数を指定する。このパラメタを
　　　　　　NULLに指定した場合は結果を返さない。
　　　seqNum：OUT：この呼び出しのシーケンス番号を返す。シーケンス番号はプロセス
　　　　　　内で一意の値となる。
　　　errCode：OUT：：エラーコードを格納する。成功した場合はRPC_NO_ERRORを返す。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーが発生した場合の原因はerrCodeに格納する。

　・IPC_FreeMulticastOutParams
　　・関数仕様
　　　void IPC_FreeMulticastOutParams(
　　　　　　IpcMulticastRetData_t *retData);

　　・意味
　　　IPC_CallStubSyncMulticastを呼び出したときの各実行関数の結果を格納する領域、
　　　またはIPC_CallStubAsyncMulticastを呼び出した後、結果を返すコールバック関数
　　　で実行関数の結果を格納する領域は、それぞれ内部で動的に割り当てられた領域に
　　　格納される。その領域を解放するために必ずこの関数を呼び出す。

　　・パラメタ
　　　retData：IN：実行関数の結果を格納する領域、IPC_CallStubSyncMulticastでretData
　　　　　　で渡された値、またはコールバック関数で渡された値。

　　・戻り値
　　　なし



　８：RENDEZVOUS
　ランデブは２つのタスク（スレッド）の同期をとるための機能である。２つのタスクが
ランデブポイントで動作の同期をとることができる。また２つのタスクが同期していると
きにタスク間でデータの送受信を行うことができる。
　ランデブを実行中はタスク（スレッド）をキャンセルさせることができない。

　・IPC_InitRendezv
　　・関数仕様
　　　RpcResult_t IPC_InitRendezv(
　　　　　　RpcBool_t masterProcess);

　　・意味
　　　ランデブポイントを管理する領域の初期化をする。ランデブを利用するプロセスは
　　　最初にこの関数を呼ぶ。ランデブポイントは共有メモリ上またはローカルメモリ上
　　　に生成される。
　　　IPC_InitIprpcを呼ぶと内部でこの関数が呼び出されるので、通常利用者はこの関数
　　　を直接呼び出す必要はない。

　　・パラメタ
　　　masterProcess：IN：マスタープロセスかどうかのフラグ。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_CreateRendezv
　　・関数仕様
　　　RpcResult_t IPC_CreateRendezv(
　　　　　　RpcBool_t IpcFlag, 
　　　　　　uint32_t *rendezvId);

　　・意味
　　　ランデブポイントを生成する。ランデブポイントの生成場所は同期をとるスレッド
　　　が同一プロセス上のものかかまたは違うプロセス上のものかで異なる。（同一プロ
　　　セス上であっても共有メモリ上に生成したランデブポイントならば同期をとることが
　　　できる。）
　　　ランデブポイントは再利用が可能である。従っていったん２つのタスクのランデブ
　　　に使用した後は引き続きそのランデブポイントをタスクのランデブに使用すること
　　　ができる。

　　・パラメタ
　　　IpcFlag：IN：ランデブポイント生成する場所を示すフラグ。RPC_TRUEなら共有メモ
　　　リ上に生成され、RPC_FALSEならローカルメモリ上に生成される。
　　　rendezvId：OUT：生成されたランデブポイント示すID。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_DestoryRendezv
　　・関数仕様
　　　RpcResult_t IPC_DestoryRendezv(
　　　　　　uint32_t rendezvId);

　　・意味
　　　ランデブポイントを破棄する。ランデブポイントが使用中の場合は破棄することが
　　　できない。

　　・パラメタ
　　　rendezvId：IN：破棄するランデブポイントのID。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_RendezvSend
　　・関数仕様
　　　RpcResult_t IPC_RendezvSend(
　　　　　　uint32_t rendezvId, 
　　　　　　RpcTaskID_t recvTask,
　　　　　　void *sendData, 
　　　　　　uint32_t sendSize,
　　　　　　void **replyData, 
　　　　　　uint32_t *replySize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントへデータを送信する。送信するデータは送信側が用意する。受信
　　　タスクへはデータのポインタとサイズのみが渡されるので、スタティック上または
　　　ヒープ上なければならない。
　　　送信側から渡すデータは受信側がメモリ領域のフリー等の後処理をしなければなら
　　　ない。またこの関数内でエラーが発生した場合、戻り値がRPC_INTERUPTTEDの場合は
　　　データが受信側に渡ってしまっているので、受信側でフリー等の後処理をするが、
　　　そうでない場合は受信側にデータが渡っていないため送信側がフリー等の後処理を
　　　しなければならない。
　　　ランデブポイントの指定はIDで行われる。受信側のタスク（スレッド）を指定する
　　　場合はrecvTaskに受信側のスレッドIDを指定する。指定しない場合は0を指定する。
　　　なお受信側のタスク（スレッド）はこの関数を実行したタスク（スレッド）と同一
　　　のプロセス内を指定する必要がある。

　　・パラメタ
　　　rendezvId：IN：使用するランデブポイントのID
　　　recvTask：IN：宛先のスレッド。宛先のスレッドを指定しない場合は0を指定設定
　　　　　　する。
　　　sendData：IN：宛先のスレッドに送信するデータ。宛先のスレッドへはポインタのみ
　　　　　　が渡される。
　　　sendSize：IN：送信するデータのサイズ
　　　replyData：OUT：相手のスレッドから渡されるリプライデータ。ポインタのみが渡
　　　　　　される。渡されたデータ領域は受け取った側がフリー等の処理をする。
　　　replySize：OUT：渡されたデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーの場合の戻り値がRPC_INTERUPTTEDの場合は送信
　　　　　　データは受信側に渡っているが、そうでない場合は送信データは受信側に渡
　　　　　　っていない。


　・IPC_RendezvSendByTask
　　・関数仕様
　　　RpcResult_t IPC_RendezvSendByTask(
　　　　　　RpcBool_t IPCFlag, 
　　　　　　RpcTaskID_t recvTask,
　　　　　　void *sendData, 
　　　　　　uint32_t sendSize,
　　　　　　void **replyData, 
　　　　　　uint32_t *replySize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントへデータを送信する。送信するデータは送信側が用意する。受信
　　　タスクへはデータのポインタとサイズのみが渡されるので、スタティック上または
　　　ヒープ上になければならない。
　　　送信側から渡すデータは受信側がメモリ領域のフリー等の後処理をしなければなら
　　　ない。またこの関数内でエラーが発生した場合、戻り値がRPC_INTERUPTTEDの場合は
　　　データが受信側に渡ってしまっているので、受信側でフリー等の後処理をするが、
　　　そうでない場合は受信側にデータが渡っていないため送信側がフリー等の後処理を
　　　しなければならない。
　　　指定した受信側のスレッドがランデブポイントで待機中でない場合は新たにランデ
　　　ブポイントが生成される。
　　　なお受信側のタスク（スレッド）はこの関数を実行したタスク（スレッド）と同一
　　　のプロセス内を指定する必要がある。

　　・パラメタ
　　　IpcFlag：IN：ランデブポイントを生成する場所を示すフラグ。RPC_TRUEならば共有
　　　　　　メモリ上に、RPC_FALSEならばローカルメモリ上にとられる。
　　　recvTask：IN：宛先のスレッド。
　　　sendData：IN：宛先のスレッドに送信するデータ。宛先のスレッドへはポインタのみ
　　　　　　が渡される。
　　　sendSize：IN：送信するデータのサイズ
　　　replyData：OUT：相手のスレッドから渡されるリプライデータ。ポインタのみが渡
　　　　　　される。渡されたデータ領域は受け取った側がフリー等の処理をする。
　　　replySize：OUT：渡されたデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーの場合の戻り値がRPC_INTERUPTTEDの場合は送信
　　　　　　データは受信側に渡っているが、そうでない場合は送信データは受信側に渡
　　　　　　っていない。


　・IPC_RendezvSendByRendezvId
　　・関数仕様
　　　RpcResult_t IPC_RendezvSendByRendezvId(
　　　　　　uint32_t rendezvId, 
　　　　　　void *sendData, 
　　　　　　uint32_t sendSize,
　　　　　　void **replyData, 
　　　　　　uint32_t *replySize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントへデータを送信する。送信するデータは送信側が用意する。受信
　　　タスクへはデータのポインタとサイズのみが渡されるので、宛先のスレッドがプロ
　　　セス内であればスタティック上またはヒープ上に、別のプロセスであれば共有メモ
　　　リ上になければならない。また指定するランデブポイントも、宛先のスレッドが別
　　　のプロセスならば共有メモリ上のランデブポイントでないといけない。
　　　送信側から渡すデータは受信側がメモリ領域のフリー等の後処理をしなければなら
　　　ない。またこの関数内でエラーが発生した場合、戻り値がRPC_INTERUPTTEDの場合は
　　　データが受信側に渡ってしまっているので、受信側でフリー等の後処理をするが、
　　　そうでない場合は受信側にデータが渡っていないため送信側がフリー等の後処理を
　　　しなければならない。
　　　ランデブポイントの指定はIDで行われる。

　　・パラメタ
　　　rendezvId：IN：ランデブポイントのID
　　　sendData：IN：宛先のスレッドに送信するデータ。宛先のスレッドへはポインタのみ
　　　　　　が渡される。
　　　sendSize：IN：送信するデータのサイズ
　　　replyData：OUT：相手のスレッドから渡されるリプライデータ。ポインタのみが渡
　　　　　　される。渡されたデータ領域は受け取った側がフリー等の処理をする。
　　　replySize：OUT：渡されたデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーの場合の戻り値がRPC_INTERUPTTEDの場合は送信
　　　　　　データは受信側に渡っているが、そうでない場合は送信データは受信側に渡
　　　　　　っていない。


　・IPC_RendezvRecv
　　・関数仕様
　　　RpcResult_t IPC_RendezvRecv(
　　　　　　uint32_t rendezvId, 
　　　　　　RpcTaskID_t sendTask, 
　　　　　　void **recvData, 
　　　　　　uint32_t *recvSize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントで送信側から送られデータを受信する。受信したデータは受信側
　　　がフリー等の処理をしなければならない。
　　　受信側はこの関数を呼び出した後、IPC_RendezvReplyを呼び出さないと呼び出し側
　　　のスレッドがブロックしたままになっているので注意する。
　　　ランデブポイントの指定はIDで行われる。送信側のタスク（スレッド）を指定する
　　　場合はsendTaskに送信側のスレッドIDを指定する。指定しない場合は0を指定する。
　　　なお送信側のタスク（スレッド）はこの関数を実行したタスク（スレッド）と同一
　　　のプロセス内を指定する必要がある。

　　・パラメタ
　　　rendezvId：IN：使用するランデブポイントのID。
　　　sendTask：IN：送信側のスレッド。送信側のスレッドを指定しない場合は0を指定
　　　　　　設定する。
　　　recvData：OUT：受信するデータ。データはポインタのみが渡される。
　　　recvSize：OUT：送信するデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_RendezvRecvByTask
　　・関数仕様
　　　RpcResult_t IPC_RendezvRecvByTask(
　　　　　　RpcBool_t IPCFlag,
　　　　　　RpcTaskID_t sendTask, 
　　　　　　uint32_t *rendezvId, 
　　　　　　void **recvData, 
　　　　　　uint32_t *recvSize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントで送信側から送られデータを受信する。受信したデータは受信側
　　　がフリー等の処理をしなければならない。この関数を呼び出したとき送信側がまだ
　　　ランデブポイントに到達していなければ、ランデブポイントを生成する。
　　　受信側はこの関数を呼び出した後、IPC_RendezvReplyを呼び出さないと呼び出し側
　　　のスレッドがブロックしたままになっているので注意する。
　　　なお送信側のタスク（スレッド）はこの関数を実行したタスク（スレッド）と同一
　　　のプロセス内を指定する必要がある。

　　・パラメタ
　　　IpcFlag：IN：ランデブポイントを生成する場所を示すフラグ。RPC_TRUEならば共有
　　　　　　メモリ上に、RPC_FALSEならばローカルメモリ上にとられる。
　　　sendTask：IN：送信側のスレッド。
　　　rendezvId：OUT：生成された、または使用しているランデブポイントのID
　　　recvData：OUT：受信するデータ。データはポインタのみが渡される。
　　　recvSize：OUT：送信するデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_RendezvRecvByRendezvId
　　・関数仕様
　　　RpcResult_t IPC_RendezvRecvByRendezvId(
　　　　　　uint32_t rendezvId, 
　　　　　　void **recvData, 
　　　　　　uint32_t *recvSize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントで送信側から送られデータを受信する。受信したデータは受信側
　　　がフリー等の処理をしなければならない。
　　　受信側はこの関数を呼び出した後、IPC_RendezvReplyを呼び出さないと呼び出し側
　　　のスレッドがブロックしたままになっているので注意する。
　　　ランデブポイントの指定はIDで行われる。

　　・パラメタ
　　　rendezvId：IN：使用するランデブポイントのID。
　　　recvData：OUT：受信するデータ。データはポインタのみが渡される。
　　　recvSize：OUT：送信するデータのサイズ。
　　　timeOut：IN：タイムアウト時間。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_RendezvReply
　　・関数仕様
　　　RpcResult_t IPC_RendezvReply(
　　　　　　uint32_t rendezvId, 
　　　　　　void *replyData, 
　　　　　　uint32_t replySize);

　　・意味
　　　リプライデータを送信側に送信する。この関数を呼び出すことによって送信側はブ
　　　ロック状態から解放される。
　　　ランデブポイントの指定はIDで行われる。この関数を呼び出す前に呼び出される
　　　IPC_RendezvRecvXXXでランデブポイントは確定されているので、そのIDを指定する。

　　・パラメタ
　　　rendezvId：IN：使用するランデブポイントのID。
　　　replyData：IN：送信するデータ。データはポインタのみが渡される。送信したリプ
　　　　　　ライデータは送信側でフリー等の処理をしなければならない。
　　　replySize：IN：送信するデータのサイズ。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。この関数が成功しなかった場合は送信側にデータが送ら
　　　　　　れいないのでこの関数を呼び出した側で処理をする必要がある。


　・IPC_RendezvSendExt
　　・関数仕様
　　　RpcResult_t IPC_RendezvSendExt(
　　　　　　uint32_t rendezvId, 
　　　　　　uint32_t recvPid,
　　　　　　RpcTaskID_t recvTask,
　　　　　　void *sendData, 
　　　　　　uint32_t sendSize,
　　　　　　void **replyData, 
　　　　　　uint32_t *replySize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントへデータを送信する。送信するデータは送信側が用意する。受信
　　　タスクへはデータのポインタとサイズのみが渡されるので、宛先のスレッドがプロ
　　　セス内であればスタティック上またはヒープ上に、別のプロセスであれば共有メモ
　　　リ上になければならない。また指定するランデブポイントも、宛先のスレッドが別
　　　のプロセスならば共有メモリ上のランデブポイントでないといけない。
　　　送信側から渡すデータは受信側がメモリ領域のフリー等の後処理をしなければなら
　　　ない。またこの関数内でエラーが発生した場合、戻り値がRPC_INTERUPTTEDの場合は
　　　データが受信側に渡ってしまっているので、受信側でフリー等の後処理をするが、
　　　そうでない場合は受信側にデータが渡っていないため送信側がフリー等の後処理を
　　　しなければならない。
　　　ランデブポイントの指定はIDで行われる。受信側のタスク（スレッド）を指定する
　　　場合はrecvTaskに受信側のスレッドIDを指定する。指定しない場合は0を指定する。

　　・パラメタ
　　　rendezvId：IN：使用するランデブポイントのID
　　　recvPid：IN：
　　　recvTask：IN：宛先のスレッド。宛先のスレッドを指定しない場合は0を指定設定
　　　　　　する。
　　　sendData：IN：宛先のスレッドに送信するデータ。宛先のスレッドへはポインタのみ
　　　　　　が渡される。
　　　sendSize：IN：送信するデータのサイズ
　　　replyData：OUT：相手のスレッドから渡されるリプライデータ。ポインタのみが渡
　　　　　　される。渡されたデータ領域は受け取った側がフリー等の処理をする。
　　　replySize：OUT：渡されたデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーの場合の戻り値がRPC_INTERUPTTEDの場合は送信
　　　　　　データは受信側に渡っているが、そうでない場合は送信データは受信側に渡
　　　　　　っていない。


　・IPC_RendezvSendByTaskExt
　　・関数仕様
　　　RpcResult_t IPC_RendezvSendByTaskExt(
　　　　　　RpcBool_t IPCFlag, 
　　　　　　uint32_t recvPid,
　　　　　　RpcTaskID_t recvTask,
　　　　　　void *sendData, 
　　　　　　uint32_t sendSize,
　　　　　　void **replyData, 
　　　　　　uint32_t *replySize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントへデータを送信する。送信するデータは送信側が用意する。受信
　　　タスクへはデータのポインタとサイズのみが渡されるので、宛先のスレッドがプロ
　　　セス内であればスタティック上またはヒープ上に、別のプロセスであれば共有メモ
　　　リ上になければならない。また指定するランデブポイントも、宛先のスレッドが別
　　　のプロセスならば共有メモリ上のランデブポイントでないといけない。
　　　送信側から渡すデータは受信側がメモリ領域のフリー等の後処理をしなければなら
　　　ない。またこの関数内でエラーが発生した場合、戻り値がRPC_INTERUPTTEDの場合は
　　　データが受信側に渡ってしまっているので、受信側でフリー等の後処理をするが、
　　　そうでない場合は受信側にデータが渡っていないため送信側がフリー等の後処理を
　　　しなければならない。
　　　指定した受信側のスレッドがランデブポイントで待機中でない場合は新たにランデ
　　　ブポイントが生成される。

　　・パラメタ
　　　IpcFlag：IN：ランデブポイントを生成する場所を示すフラグ。RPC_TRUEならば共有
　　　　　　メモリ上に、RPC_FALSEならばローカルメモリ上にとられる。
　　　recvPid：IN：
　　　recvTask：IN：宛先のスレッド。
　　　sendData：IN：宛先のスレッドに送信するデータ。宛先のスレッドへはポインタのみ
　　　　　　が渡される。
　　　sendSize：IN：送信するデータのサイズ
　　　replyData：OUT：相手のスレッドから渡されるリプライデータ。ポインタのみが渡
　　　　　　される。渡されたデータ領域は受け取った側がフリー等の処理をする。
　　　replySize：OUT：渡されたデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。エラーの場合の戻り値がRPC_INTERUPTTEDの場合は送信
　　　　　　データは受信側に渡っているが、そうでない場合は送信データは受信側に渡
　　　　　　っていない。


　・IPC_RendezvRecvExt
　　・関数仕様
　　　RpcResult_t IPC_RendezvRecvExt(
　　　　　　uint32_t rendezvId, 
　　　　　　uint32_t sendPid,
　　　　　　RpcTaskID_t sendTask, 
　　　　　　void **recvData, 
　　　　　　uint32_t *recvSize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントで送信側から送られデータを受信する。受信したデータは受信側
　　　がフリー等の処理をしなければならない。
　　　受信側はこの関数を呼び出した後、IPC_RendezvReplyを呼び出さないと呼び出し側
　　　のスレッドがブロックしたままになっているので注意する。
　　　ランデブポイントの指定はIDで行われる。送信側のタスク（スレッド）を指定する
　　　場合はsendTaskに送信側のスレッドIDを指定する。指定しない場合は0を指定する。
　　　なお送信側のタスク（スレッド）はこの関数を実行したタスク（スレッド）と同一
　　　のプロセス内を指定する必要がある。

　　・パラメタ
　　　rendezvId：IN：使用するランデブポイントのID。
　　　sendPid：IN：
　　　sendTask：IN：送信側のスレッド。送信側のスレッドを指定しない場合は0を指定
　　　　　　設定する。
　　　recvData：OUT：受信するデータ。データはポインタのみが渡される。
　　　recvSize：OUT：送信するデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_RendezvRecvByTaskExt
　　・関数仕様
　　　RpcResult_t IPC_RendezvRecvByTaskExt(
　　　　　　RpcBool_t IPCFlag,
　　　　　　uint32_t sendPid,
　　　　　　RpcTaskID_t sendTask, 
　　　　　　uint32_t *rendezvId, 
　　　　　　void **recvData, 
　　　　　　uint32_t *recvSize, 
　　　　　　uint32_t timeOut);

　　・意味
　　　ランデブポイントで送信側から送られデータを受信する。受信したデータは受信側
　　　がフリー等の処理をしなければならない。この関数を呼び出したとき送信側がまだ
　　　ランデブポイントに到達していなければ、ランデブポイントを生成する。
　　　受信側はこの関数を呼び出した後、IPC_RendezvReplyを呼び出さないと呼び出し側
　　　のスレッドがブロックしたままになっているので注意する。
　　　なお送信側のタスク（スレッド）はこの関数を実行したタスク（スレッド）と同一
　　　のプロセス内を指定する必要がある。

　　・パラメタ
　　　IpcFlag：IN：ランデブポイントを生成する場所を示すフラグ。RPC_TRUEならば共有
　　　　　　メモリ上に、RPC_FALSEならばローカルメモリ上にとられる。
　　　sendPid：IN：
　　　sendTask：IN：送信側のスレッド。
　　　rendezvId：OUT：生成された、または使用しているランデブポイントのID
　　　recvData：OUT：受信するデータ。データはポインタのみが渡される。
　　　recvSize：OUT：送信するデータのサイズ
　　　timeOut：IN：タイムアウト時間

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。



　９：OTHERS
　以上でこのライブラリを使ってIPRPCとRENDEZVOUSの機能を使用するプログラムの実装
ができるが、このライブラリには、IPRPCとRENDEZVOUSを実装するためのいくつかの有益
な関数が実装されている。以下はそれらについて解説する。

　9.1：TASK CONTROL
　TASK CONTROLは特定のタスク（スレッド）の実行を停止させたり、停止しているタスク
の実行を再開するためのものである。タスクの停止は自分で行わなければならないが、停
止しているタスクの実行の再開は外部のタスク（スレッド）から行う。外部のタスクは同
一のプロセス内のタスクからでも他のプロセスのタスク（スレッド）からでも可能である。

　・RPC_CreateTaskControl
　　・関数仕様
　　　RpcResult_t RPC_CreateTaskControl(
　　　　　　RpcBool_t IpcFlag,
　　　　　　RpcTaskControl_t *tskCntl);

　　・意味
　　　TASK CONTROLのためのオブジェクトを生成する。オブジェクトはビルドにUSE_SEMAPHORE
　　　が指定されていればセマフォを、そうでなければMutexとCondを生成する。オブジェ
　　　クトの情報は呼び出し元が用意する領域に格納される。呼び出し元が用意する領域
　　　は制御のターゲットとなるタスク（スレッド）、ターゲットのタスクを再開させる
　　　タスク（スレッド）からアクセス可能な領域に確保されていなければならない。
　　　タスクを再開させるためのタスク（スレッド）が他のプロセスにある場合は、
　　　IpcFlagをRPC_TRUEに設定する必要がある。

　　・パラメタ
　　　IpcFlag：IN：TASK CONTROLを生成する場所を示すフラグ。RPC_TRUEならば共有メ
　　　　　　モリ上に、RPC_FALSEならばローカルメモリ上にとられる。
　　　tskCntl：OUT：生成されたTASK CONTROLの情報を格納する領域。呼び出し側が領域
　　　　　　を確保する。制御のターゲットとなるタスク（スレッド）、ターゲットのタ
　　　　　　スクを再開させるタスク（スレッド）からアクセス可能な領域に確保されて
　　　　　　いなければならない。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・RPC_DestroyTaskControl
　　・関数仕様
　　　void RPC_DestroyTaskControl(
　　　　　　RpcTaskControl_t *tskCntl)

　　・意味
　　　RPC_CreateTaskControlで生成されたTASK CONTROLのオブジェクトを解放する。こ
　　　の関数を呼び出した後はこのオブジェクトのTASK CONTROLを実行していはいけない。

　　・パラメタ
　　　tskCntl：IN：RPC_CreateTaskControlで格納されたTASK CONTROLの情報の領域を指
　　　　　　定する。

　　・戻り値
　　　なし


　・RPC_TaskControlWait
　　・関数仕様
　　　RpcResult_t RPC_TaskControlWait(
　　　　　　RpcTaskControl_t *tskCntl);

　　・意味
　　　TASK CONTROLのオブジェクトを使って自分自身の実行を停止する。実行の再開には
　　　別のタスク（スレッド）がここで指定されているTASK CONTROLのオブジェクトを
　　　使って、実行の再開動作を発生させなければならない。
　　　RPC_SUCCESSで戻る場合はこの関数を実行して停止していたこのタスク（スレッド）
　　　が、別のタスク（スレッド）により実行の再開動作が発生したときである。

　　・パラメタ
　　　tskCntl：IN：RPC_CreateTaskControlで格納されたTASK CONTROLの情報の領域を指
　　　　　　定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。RPC_SUCCESSで戻る場合はこの関数を実行して停止して
　　　　　　いたこのタスク（スレッド）が、別のタスク（スレッド）により実行の再開
　　　　　　動作が発生したときである。


　・RPC_TaskControlTimedWait
　　・関数仕様
　　　RpcResult_t RPC_TaskControlTimedWait(
　　　　　　RpcTaskControl_t *tskCntl, 
　　　　　　struct timespec *specTime);

　　・意味
　　　TASK CONTROLのオブジェクトを使って自分自身の実行を停止する。実行の再開には
　　　別のタスク（スレッド）がここで指定されているTASK CONTROLのオブジェクトを
　　　使って、実行の再開動作を発生させなければならない。
　　　RPC_SUCCESSで戻る場合はこの関数を実行して停止していたこのタスク（スレッド）
　　　が、別のタスク（スレッド）により実行の再開動作が発生したときである。
　　　タイムアウト時間を設定し、タイムアウト時間内に別のタスク（スレッド）から実
　　　行の再開動作が発生しなかった場合はTIMEOUTエラーとなる。


　　・パラメタ
　　　tskCntl：IN：RPC_CreateTaskControlで格納されたTASK CONTROLの情報の領域を指
　　　　　　定する。
　　　specTime：タイムアウトまでの時間を設定する。時間はUNIX EPOCHタイムからの経
　　　　　　過時間で設定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。RPC_SUCCESSで戻る場合はこの関数を実行して停止して
　　　　　　いたこのタスク（スレッド）が、別のタスク（スレッド）により実行の再開
　　　　　　動作が発生したときである。


　・RPC_TaskControlSignal
　　・関数仕様
　　　RpcResult_t RPC_TaskControlSignal(
　　　　　　RpcTaskControl_t *tskCntl);

　　・意味
　　　TASK CONTROLオブジェクトで停止しているタスク（スレッド）を実行の再開動作を
　　　　　　する。

　　・パラメタ
　　　tskCntl：IN：RPC_CreateTaskControlで格納されたTASK CONTROLの情報の領域を指
　　　　　　定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_ResetTaskControl
　　・関数仕様
　　　void IPC_ResetTaskControl(
　　　　　　RpcTaskControl_t *tskCntl)

　　・意味
　　　TASK CONTROLオブジェクトの情報をリセットする。具体的にセマフォの値を0にす
　　　る。ビルド時にUSE_SEMAPHOREが設定されていない場合は何もしない。

　　・パラメタ
　　　tskCntl：IN：RPC_CreateTaskControlで格納されたTASK CONTROLの情報の領域を指
　　　　　　定する。

　　・戻り値
　　　なし



　9.2：HASH
　このライブラリで使用しているHASH関数である。ここで使用しているHASH関数は乱数表
を使って計算している。なお、このライブラリでは乱数表を共有メモリに置き、このライ
ブラリを利用するどのプロセスからでもアクセスできるようにしている。
　ハッシュテーブルのサイズは2のべき乗のサイズでなければならない。また、ここで使用
しているハッシュテーブルはオープンハッシュを利用している。

　・RPC_RegisterHashTable
　　・関数仕様
　　　void RPC_RegisterHashTable(
　　　　　　uint32_t *hashRandTable);

　　・意味
　　　HASH関数で使用する乱数テーブルの設定をする。この関数はこのライブラリを初期
　　　化するときに呼び出されるので、通常利用者はこの関数を呼び出す必要がない。
　　　乱数表のサイズはIPC_HASH_RAND_NUM_SIZE_OF_TABLE x IPC_HASH_RAND_NUM_SIZE_OF_TBL_NUM
　　　である。

　　・パラメタ
　　　hashRandTable：IN：HASH関数で利用する乱数表のポインタを指定する。

　　・戻り値
　　　なし


　・RPC_AddHashEntry
　　・関数仕様
　　　RpcResult_t RPC_AddHashEntry(
　　　　　　RpcHashEntry_t *hashTblTop,
　　　　　　void *entry,
　　　　　　uint8_t *val, 
　　　　　　uint32_t valSize,
　　　　　　uint32_t tblSize)

　　・意味
　　　HASH値を計算しENTRYをハッシュテーブルに格納する。HASH値はパラメタのvalから
　　　計算される。計算されたHASH値の場所にすでにENTRYが格納されている場合は、ハッ
　　　シュテーブルの配列の次の要素に格納する。

　　・パラメタ
　　　hashTblTop：IN：ハッシュテーブルのポインタを指定する。ハッシュテーブルは
　　　　　　RpcHashEntry_tの配列である。
　　　entry：IN：ハッシュテーブルに格納するENTRYを指定する。
　　　val：IN：HASH値を計算するための検索キーをポインタを指定する。
　　　valSize：IN：valのサイズをバイト単位で指定する。
　　　tblSize：IN：ハッシュテーブルの配列のサイズを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・RPC_DeleteHashEntry
　　・関数仕様
　　　RpcResult_t RPC_DeleteHashEntry(
　　　　　　RpcHashEntry_t *hashTblTop,
　　　　　　uint8_t *val, 
　　　　　　uint32_t valSize,
　　　　　　uint32_t tblSize,
　　　　　　RPC_CompareHashVal_t compareHashVal);

　　・意味
　　　ハッシュテーブルからENTRYを削除する。検索キーはパラメタのvalで与えられる。

　　・パラメタ
　　　hashTblTop：IN：ENTRYが格納されているハッシュテーブルのポインタを指定する。
　　　　　　ハッシュテーブルはRpcHashEntry_tの配列である。
　　　val：IN：HASH値を計算するための検索キーをポインタを指定する。
　　　valSize：IN：valのサイズをバイト単位で指定する。
　　　tblSize：IN：ハッシュテーブルの配列のサイズを指定する。
　　　compareHashVal：IN：ENTRYを示す値(val)を比較するための関数を指定する。この
　　　　　　関数の内部でここで設定した関数が呼び出され、削除するENTRYかどうかの
　　　　　　判定を行う。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・RPC_SearchEntryByHash
　　・関数仕様
　　　void *RPC_SearchEntryByHash(
　　　　　　RpcHashEntry_t *hashTblTop, 
　　　　　　uint8_t *val, 
　　　　　　uint32_t valSize, 
　　　　　　uint32_t tblSize, 
　　　　　　RPC_CompareHashVal_t compareHashVal);

　　・意味
　　　ハッシュテーブルからENTRYを検索する。検索キーはパラメタのvalで与えられる。

　　・パラメタ
　　　hashTblTop：IN：ENTRYが格納されているハッシュテーブルのポインタを指定する。
　　　　　　ハッシュテーブルはRpcHashEntry_tの配列である。
　　　val：IN：HASH値を計算するための検索キーをポインタを指定する。
　　　valSize：IN：valのサイズをバイト単位で指定する。
　　　tblSize：IN：ハッシュテーブルの配列のサイズを指定する。
　　　compareHashVal：IN：ENTRYを示す値(val)を比較するための関数を指定する。この
　　　　　　関数の内部でここで設定した関数が呼び出され、検索対象のENTRYかどうか
　　　　　　の判定を行う。

　　・戻り値
　　　成功すればENTRYのポインタを返す。ハッシュテーブルにエントリがなければNULL
　　　をを返す。


　・HASH関数
　　ここで使用しているHASH関数は乱数表とビット毎の排他的論理和を使って計算してい
　る。乱数表は0から255で示されるバイトの値から乱数の値を引くようになっており、そ
　の乱数表を複数持つことにより値が偏らないようになっている。具体的には以下のよう
　になっている。

	hashVal = 0;
	i = j = 0;
	while( i < keyLength) {
		hashVal ^= RpcHashRandTable[j*IPC_HASH_RAND_NUM_SIZE_OF_TBL_NUM+key[i++]];
		j++;
		j &= (IPC_HASH_RAND_NUM_SIZE_OF_TBL_NUM -1);
	}
	return (hashVal & (tableSize - 1));

　ここでIPC_HASH_RAND_NUM_SIZE_OF_TBL_NUMは用意されている乱数表の数である。ハッ
　シュテーブルのサイズは2のべき乗としているため、最終的なHASH値はtableSize-1と
　ビット毎のアンドをとって計算している。



　9.3：LIST
　このライブラリで使用しているリスト処理関数である。ここではシングルリスト構造の
ものを対象にしている。リストのデータ構造は以下の通りである。

typedef struct _RpcListStruct_ {
	struct _RpcListStruct_ *next;
	void *entry;
} RpcList_t;

　LISTを操作するための関数の仕様は以下の通りである。


　・RPC_AllocListData
　　・関数仕様
　　　void *RPC_AllocListData(
　　　　　　RpcList_t **listTop,
　　　　　　uint32_t entitySize,
　　　　　　uint32_t allocId,
　　　　　　RPC_AllocFunc_t allocFunc,
　　　　　　RPC_FreeFunc_t freeFunc);

　　・意味
　　　新しくエントリをアロケートしリスト構造につなげる。新しく生成した
　　　エントリはリストの先頭に配置される。

　　・パラメタ
　　　listTop：IN/OUT：リストの先頭のデータが格納された領域のポインタを指定する。
　　　　　　新しく生成されたエントリはこのリストの先頭に配置される。
　　　entitySize：IN：新しく生成されるエントリのサイズ。
　　　allocId：IN：アロケーション関数に渡される領域を指し示すID。共有メモリ上に
　　　　　　領域を確保する場合のアロケーション関数で使用する。ヒープ領域にアロ
　　　　　　ケーションする場合は使用しない。詳しくは5 SHARED MEMORYを参照せよ。
　　　allocFunc：IN：領域を確保する関数のポインタを指定する。
　　　freeFunc：IN：領域を解放する関数のポインタを指定する。

　　・戻り値
　　　void *：生成されたデータのポインタを返す。アロケーションできなかった場合は、
　　　　　　NULLを返す。


　・RPC_FreeListData
　　・関数仕様
　　　void RPC_FreeListData(
　　　　　　RpcList_t **listTop,
　　　　　　void *delEntry,
　　　　　　uint32_t allocId,
　　　　　　RPC_FreeFunc_t freeFunc);

　　・意味
　　　パラメタで指定されるリストのエントリをリストから削除し、メモリ領域の解放を
　　　行う。この関数を実行したあとそのエントリへアクセスしてはいけない。

　　・パラメタ
　　　listTop：IN/OUT：リストの先頭のデータが格納された領域のポインタを指定する。
　　　delEntry：削除すべきエントリのデータのポインタを指定する。
　　　allocId：IN：メモリフリー関数に渡される領域を指し示すID。共有メモリ上に確
　　　　　　保領された領域をフリーする場合に使用する。ヒープ領域に確保されている
　　　　　　領域を解放する場合は使用しない。詳しくは5 SHARED MEMORYを参照せよ。
　　　freeFunc：IN：領域を解放する関数のポインタを指定する。

　　・戻り値
　　　なし


　・RPC_RemoveListEntry
　　・関数仕様
　　　RpcList_t *RPC_RemoveListEntry(
　　　　　　RpcList_t **listTop,
　　　　　　void *remEntry);

　　・意味
　　　パラメタで指定されるリストのエントリをリストから削除する。削除されたリスト
　　　データを戻り値として返しその領域は解放されない。

　　・パラメタ
　　　listTop：IN/OUT：リストの先頭のデータが格納された領域のポインタを指定する。
　　　remEntry：リストから削除するエントリのデータのポインタを指定する。

　　・戻り値
　　　リストから削除されたデータのポインタを返す。エントリが見つからずリストから
　　　削除できなかった場合はNULLを返す。


　・RPC_SearchAndFreeListData
　　・関数仕様
　　　void RPC_SearchAndFreeListData(
　　　　　　RpcList_t **ListTop,
　　　　　　uint32_t id,
　　　　　　uint32_t allocId,
　　　　　　RPC_CompareFunc_t compareFunc,
　　　　　　RPC_FreeFunc_t freeFunc);

　　・意味
　　　パラメタで指定されるidからリストを検索しエントリを見つけ、そのエントリをリ
　　　ストから削除し、メモリ領域の解放を行う。この関数を実行したあとそのエントリ
　　　へアクセスしてはいけない。

　　・パラメタ
　　　listTop：IN/OUT：リストの先頭のデータが格納された領域のポインタを指定する。
　　　id：IN：エントリを検索するためのキーとなるidを指定する。
　　　allocId：メモリフリー関数に渡される領域を指し示すID。共有メモリ上に確
　　　　　　保領された領域をフリーする場合に使用する。ヒープ領域に確保されている
　　　　　　領域を解放する場合は使用しない。詳しくは5 SHARED MEMORYを参照せよ。
　　　compareFunc：IN：キーからエントリを検索するときのキーを比較するための関数
　　　　　　のポインタを指定する。
　　　freeFunc：IN：領域を解放する関数のポインタを指定する。

　　・戻り値
　　　なし


　・RPC_ShmAllocMemWrapper
　　・関数仕様
　　　void *RPC_ShmAllocMemWrapper(
　　　　　　uint32_t allocId,
　　　　　　uint32_t size);

　　・意味
　　　共有メモリ上から領域をアロケーションするための関数のラッパー関数。共有メモ
　　　リ上に領域を確保する際にRPC_AllocListDataで使用する。

　　・パラメタ
　　　allocId：IN：共有メモリ上の領域を指し示すIDを指定する。詳しくは5 SHARED 
　　　　　　MEMORYを参照せよ。
　　　size：IN：確保する領域のサイズを指定する。バイト単位で指定する。

　　・戻り値
　　　void *：確保された領域のポインタを返す。領域の確保に失敗した場合はNULLを返
　　　　　　す。


　・RPC_ShmFreeMemWrapper
　　・関数仕様
　　　void RPC_ShmFreeMemWrapper(
　　　　　　uint32_t allocId,
　　　　　　void *area);

　　・意味
　　　共有メモリ上から確保した領域をフリーするための関数のラッパー関数。共有メモ
　　　リ上に領域をフリーする際にRPC_AllocListData等で使用する。

　　・パラメタ
　　　・allocId：In：共有メモリ上の領域を指し示すIDを指定する。詳しくは5 SHARED 
　　　　　　MEMORYを参照せよ。
　　　・area：IN：フリーをする領域のポインタを指定する。

　　・戻り値
　　　なし


　・RPC_LclAllocMemWrapper
　　・関数仕様
　　　void *RPC_LclAllocMemWrapper(
　　　　　　uint32_t allocId,
　　　　　　uint32_t size);

　　・意味
　　　ヒープ領域から領域をアロケーションするための関数のラッパー関数。ヒープ領域
　　　上に領域を確保する際にRPC_AllocListDataで使用する。

　　・パラメタ
　　　allocId：IN：使用しないため0を指定する。RPC_ShmAllocMemWrapperとパラメタを
　　　　　　合わせるために存在する。
　　　size：IN：確保する領域のサイズを指定する。バイト単位で指定する。

　　・戻り値
　　　void *：確保された領域のポインタを返す。領域の確保に失敗した場合はNULLを返
　　　　　　す。


　・RPC_LclFreeMemWrapper
　　・関数仕様
　　　void RPC_LclFreeMemWrapper(
　　　　　　uint32_t allocId,
　　　　　　void *area);

　　・意味
　　　共有メモリ上から確保した領域をフリーするための関数のラッパー関数。共有メモ
　　　リ上に領域をフリーする際にRPC_AllocListData等で使用する。

　　・パラメタ
　　　・allocId：In：使用しないため0を指定する。RPC_ShmAllocMemWrapperとパラメタを
　　　　　　合わせるために存在する。
　　　・area：IN：フリーをする領域のポインタを指定する。

　　・戻り値
　　　なし


　・RPC_SearchListEntryById
　　・関数仕様
　　　void *RPC_SearchListEntryById(
　　　　　　RpcList_t *listTop, 
　　　　　　uint32_t id, 
　　　　　　RPC_CompareFunc_t compareFunc);

　　・意味
　　　リストからエントリを検索する。検索のためのキーはパラメタで指定されるidを使
　　　用する。検索のためのキーを比較するための関数もパラメタで関数のポインタを指
　　　定する。

　　・パラメタ
　　　listTop：IN：リストの先頭のデータが格納された領域のポインタを指定する。
　　　id：IN：エントリを検索するためのキーとなるidを指定する。
　　　compareFunc：IN：キーからエントリを検索するときのキーを比較するための関数
　　　　　　のポインタを指定する。

　　・戻り値
　　　void *：検索した結果のエントリのポインタを返す。エントリが見つからなければ
　　　　　　NULLを返す。


　・RPC_SearchListEntryByIds
　　・関数仕様
　　　void *RPC_SearchListEntryByIds(
　　　　　　RpcList_t *listTop,
　　　　　　uint32_t id1,
　　　　　　uint32_t id2,
　　　　　　RPC_compareFuncByIds_t compareFunc);

　　・意味
　　　リストからエントリを検索する。検索のためのキーはパラメタで指定されるidを使
　　　用する。idは2つ使用する。検索のためのキーを比較するための関数もパラメタで
　　　関数のポインタを指定する。２つのidを使って目的のエントリを検索する。

　　・パラメタ
　　　listTop：IN：リストの先頭のデータが格納された領域のポインタを指定する。
　　　id1：IN：エントリを検索するためのキーとなるidを指定する。
　　　id2：IN：エントリを検索するためのキーとなるidを指定する。
　　　compareFunc：IN：キーからエントリを検索するときのキーを比較するための関数
　　　　　　のポインタを指定する。

　　・戻り値
　　　void *：検索した結果のエントリのポインタを返す。エントリが見つからなければ
　　　　　　NULLを返す。


　・RPC_SearchListEntryByString
　　・関数仕様
　　　void *RPC_SearchListEntryByString(
　　　　　　RpcList_t *listTop,
　　　　　　uint8_t *str,
　　　　　　uint32_t strLen,
　　　　　　RPC_compareFuncByString_t compareFunc);

　　・意味
　　　リストからエントリを検索する。検索のためのキーはパラメタで指定される文字列
　　　を使用する。検索のためのキーを比較するための関数もパラメタで関数のポインタ
　　　を指定する。

　　・パラメタ
　　　listTop：IN：リストの先頭のデータが格納された領域のポインタを指定する。
　　　str：IN：検索のためのキーとなる文字列を指定する。
　　　strLen：IN：検索のためのキーとなる文字列の長さを指定する。
　　　compareFunc：IN：キーからエントリを検索するときのキーを比較するための関数
　　　　　　のポインタを指定する。

　　・戻り値
　　　void *：検索した結果のエントリのポインタを返す。エントリが見つからなければ
　　　　　　NULLを返す。


　・RPC_CountNumOfListEntry
　　・関数仕様
　　　uint32_t RPC_CountNumOfListEntry(
　　　　　　RpcList_t *listTop);

　　・意味
　　　リストのエントリの数を返す。

　　・パラメタ
　　　listTop：IN：リストの先頭のデータが格納された領域のポインタを指定する。

　　・戻り値
　　　　uint32_t：エントリの数を返す。エントリがなければ0を返す。


　・RPC_SearchListEntryByDwordId
　　・関数仕様
　　　void *RPC_SearchListEntryById(
　　　　　　RpcList_t *listTop, 
　　　　　　uint64_t id, 
　　　　　　RPC_CompareDwordFunc_t compareFunc);

　　・意味
　　　この関数は64bit LINUXのときのみ有効である。
　　　リストからエントリを検索する。検索のためのキーはパラメタで指定されるidを使
　　　用する。検索のためのキーを比較するための関数もパラメタで関数のポインタを指
　　　定する。

　　・パラメタ
　　　listTop：IN：リストの先頭のデータが格納された領域のポインタを指定する。
　　　id：IN：エントリを検索するためのキーとなるidを指定する。
　　　compareFunc：IN：キーからエントリを検索するときのキーを比較するための関数
　　　　　　のポインタを指定する。

　　・戻り値
　　　void *：検索した結果のエントリのポインタを返す。エントリが見つからなければ
　　　　　　NULLを返す。



　9.4：TIME
　このライブラリで使用している時間関係のユーティリティ関数である。なお、システム
に時間を設定するための関数、システムの時間を読み出す関数、タスク（スレッド）をス
リープするための関数等はこの関数群とは別の場所で定義されている。

　・RPC_SetTimeout
　　・関数仕様
　　　RpcBool_t RPC_SetTimeout(
　　　　　　uint32_t timeout, 
　　　　　　struct timeval *absTime);

　　・意味
　　　ミリ秒単位で指定される相対的なタイムアウト時間を、絶対的にタイムアウト時間
　　　に変換する。絶対的なタイムアウト時間はUNIXのエポックタイムからの経過時間で
　　　指定される。

　　・パラメタ
　　　timeout:IN：相対的なタイムアウト時間をミリ秒単位で指定する。
　　　absTime：OUT：絶対的なタイムアウト時間を指定する。格納する構造体の領域は呼
　　　　　　び出し側が確保する。

　　・戻り値
　　　RpbBool_t：タイムアウト時間を設定できたときはRPC_TRUEを、失敗したときには
　　　　　　RPC_FALSEを返す。失敗するケースはパラメタがおかしいとき、絶対時間が
　　　　　　取得できなかったときである。


　・RPC_CheckTimeout
　　・関数仕様
　　　RpcBool_t RPC_CheckTimeout(
　　　　　　struct timeval *timeout);

　　・意味
　　　パラメタで指定されているタイムアウト時間が過ぎているかどうかチェックする。
　　　タイムアウトが過ぎていればRPC_FALSEを、過ぎていなければRPC_TRUEを返す。

　　・パラメタ
　　　timeout：IN：チェックするタイムアウト時間を指定する。

　　・戻り値
　　　RpcBool_t：タイムアウト時間が過ぎていればRPC_FALSEを、過ぎていなければ
　　　　　　RPC_TRUEを返す。


　・RPC_GetRestTimeout
　　・関数仕様
　　　RpcBool_t RPC_GetRestTimeout(
　　　　　　struct timeval *absTime,
　　　　　　uint32_t *restTimeout)

　　・意味
　　　パラメタで指定されたタイムアウト時間までの残りの時間を返す。残りの時間はミ
　　　リ秒単位で返す。タイムアウト時間が過ぎていなければRPC_TRUEを、タイムアウト
　　　時間が過ぎている場合はRPC_FALSEを返す。

　　・パラメタ
　　　absTime：IN：残りの時間を計算するタイムアウト時間を指定する。
　　　restTimeout：OUT：残りの時間をミリ秒単位で設定する。タイムアウト時間が過ぎ
　　　　　　ている場合は0を返す。

　　・戻り値
　　　RpcBool_t：タイムアウト時間が過ぎていなければRPC_TRUEを、タイムアウト時間
　　　　　　が過ぎている場合はRPC_FALSEを返す。


　・RPC_ConvertTime
　　・関数仕様
　　　　void RPC_ConvertTime(
　　　　　　　struct timeval *timeVal,
　　　　　　　struct timespec *timeSpec)

　　・意味
　　　struct timeval構造体で示される時間をstruct timespec構造体で示される時間に
　　　変換する。

　　・パラメタ
　　　timeVal：IN：変換する時間を設定する
　　　timeSpec：OUT：変換後の時間を格納する領域を指定する。

　　・戻り値
　　　なし


　・RPC_ConvertTimeoutToTimeval
　　・関数仕様
　　　void RPC_ConvertTimeoutToTimeval(
　　　　　　uint32_t timeout,
　　　　　　struct timeval *timeVal)

　　・意味
　　　ミリ秒単位で指定される相対的タイムアウト時間を絶対時間（UNIXのエポック時間
　　　からの経過時間）に変換する。変換後の値はstruct timeval構造体で格納される。

　　・パラメタ
　　　timeout：IN：相対的なタイムアウト時間をミリ秒単位で指定する。
　　　timeVal：OUT：変換後の値を格納する領域を指定する。

　　・戻り値
　　　なし


　・RPC_ConvertTimevalToTimeout
　　・関数仕様
　　　void RPC_ConvertTimevalToTimeout(
　　　　　　struct timeval *timeVal,
　　　　　　uint32_t *timeout)

　　・意味
　　　絶対時間（UNIXのエポック時間からの経過時間）で指定されるタイムアウト時間を
　　　ミリ秒単位で指定される相対的なタイムアウト時間に変換する。

　　・パラメタ
　　　timeVal：IN：絶対時間（UNIXのエポック時間からの経過時間）で指定されるタイ
　　　　　　ムアウト時間を指定する。
　　　timeout：OUT：返還後の値を格納する領域を指定する。

　　・戻り値
　　　なし



　9.5：MESSAGE QUEUE
　IPRPCではプロセス間での機能の呼び出し、実行結果を呼び出し元に戻すためにメッセー
ジキューを使用している。また、プロセス内でのタスク（スレッド）間でのデータ、イベ
ントの送受信にメッセージキューを使用している。
　このライブラリではメッセージキューを使用するために2段階の手続きを踏むようになっ
ている。これはメッセージキューを削除するときに他のタスク（スレッド）がメッセージ
キューにアクセスしないようにするためにそのようにしている。具体的には、
IPC_CreateQueでメッセージキューを生成した後、IPC_EnableQueでメッセージキューを
アクティブにしなければならない。まだ、メッセージキューを削除するためには、まず
IPC_DisalbeQueでメッセージキューをインアクティブにしたあと、IPC_SweepMsgFromQue
でキューの内部に溜まっているメッセージを削除した後、IPC_DestroyQueでメッセージ
キューの削除を実行する。
　このライブラリでのメッセージキューのメッセージは以下ようにメッセージIDと、メッ
セージパラメタからなる。

typedef enum {
	RPC_MSG_ID_UNKNOWN = 0,
	IPC_MSG_ID_SITE_GLOBAL_START = 0x00000000,
	IPC_MSG_ID_SITE_GLOBAL_END = 0x00FFFFFF,
	IPC_MSG_ID_SITE_LOCAL_START = 0x01000000,
	IPC_MSG_ID_STUB_LOCAL_START = 0x01001000,
	IPC_MSG_ID_STUB_LOCAL_END = 0x01001FFF,
	IPC_MSG_ID_SKELTON_LOCAL_START = 0x01002000,
	IPC_MSG_ID_SKELTON_LOCAL_END = 0x01002FFF,
	IPC_MSG_ID_SITE_LOCAL_END = 0x01FFFFFF,
	IPC_MSG_ID_USER_DEFINED_START = 0x08000000,
		/* DEFINED BY IPC USER */
	IPC_MSG_ID_USER_DEFINED_END = 0x0FFFFFFF,
	IDC_MSG_ID_DEV_GLOBAL_START = 0x10000000,
		/* DEFINED BY IDC MODULE */
	IDC_MSG_ID_DEV_GLOBAL_END = 0x7FFFFFFF,
	IDC_MSG_ID_DEV_LOCAL_START = 0x80000000,
		/* DEFINED BY IDC MODULE */
	IDC_MSG_ID_DEV_LOCAL_END = 0xFFFFFFFF,
	RPC_MSG_ID_MAX = 0xFFFFFFFF
} RpcMsgId_t;

typedef struct {
	uint32_t funcId;
	uint32_t srcPid;
	uint32_t srcQueId;
	uint32_t seqNum;
	uint32_t extData;
	void *extParam;
} ipcMsgParam_t;

typedef struct {
	union {
		ipcMsgParam_t msgParam;
		uint8_t paramData[MSG_PARAM_DATA_SIZE];
	}u;
} RpcMsgParam_t;

　メッセージIDは利用者が上記のカテゴリに従ってIDを付与する。メッセージパラメタは
現在のところ24オクテット（4オクテットx6）、または64bitLINUXの場合は28オクテットで
構成されている。IPRPCでは上記のようにメッセージパラメタはIpcMsgParam_t構造体とし
て渡される。利用者はパラメタをこの範囲内に収まるように設計すること。

　以下にメッセージキューの関数仕様を示す。

　・IPC_InitQue
　　・関数仕様
　　　RpcResult_t IPC_InitQue(
　　　　　　RpcBool_t masterProcess,
　　　　　　RpcBool_t IpcFlag);

　　・意味
　　　メッセージキューシステムを初期化する。メッセージキューはプロセス内部でのみ
　　　使用するもの、プロセス間で使用するものの2種類あり、それぞれについてこの初
　　　期化の関数を呼び出す必要がある。この関数はIPC_InitIprpcないから呼び出され
　　　るので、一般の利用者がこの関数を呼び出すことはない。

　　・パラメタ
　　　masterProcess：IN：マスタープロセスかどうかのフラグ
　　　IpcFlag：IN：初期化するメッセージキューが共有メモリ上のものか、ローカルメ
　　　　　　モリ上のものかのフラグ。RPC_TRUEなら共有メモリ上のものであり、
　　　　　　RPC_FALSEならばローカルメモリ上のものを初期化する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_CreateQue
　　・関数仕様
　　　RpcResult_t IPC_CreateQue(
　　　　　　RpcBool_t IpcFlag,
　　　　　　uint32_t queSize, 
　　　　　　uint32_t *queId);

　　・意味
　　　メッセージキューを生成する。利用者はこの関数を使ってメッセージキューを生成
　　　した後、IPC_EnableQue関数を呼び出してメッセージキューをアクティブ状態にし、
　　　メッセージキューを利用可能にする。メッセージキューはローカルメモリまたは共
　　　有メモリ上に生成される。

　　・パラメタ
　　　IpcFlag：IN：メッセージキューを生成する場所を指定する。RPC_TRUEならば共有
　　　　　　メモリ上に生成され、RPC_FALSEならばローカルメモリ上に生成される。ロ
　　　　　　ーカルメモリ上に生成される場合はプロセスのヒープ領域に生成される。
　　　queSize：IN：メッセージキューのサイズを指定する。サイズはキューに格納でき
　　　　　　るメッセージの数である。
　　　queId：OUT：生成されたメッセージキューのIDを返す。メッセージキューのIDは、
　　　　　　そのプロセス内で一意となる値が設定される。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_DestroyQue
　　・関数仕様
　　　RpcResult_t IPC_DestroyQue(
　　　　　　uint32_t queId);

　　・意味
　　　生成したメッセージキューを破棄する。この関数を呼び出す前に、メッセージ
　　　キューをインアクティブにして、内部に溜まっているメッセージをすべてクリーン
　　　する必要がある。

　　・パラメタ
　　　queId：IN：破棄するメッセージキューのIDを指定する

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_EnableQue
　　・関数仕様
　　　RpcResult_t IPC_EnableQue(
　　　　　　uint32_t queId);

　　・意味
　　　生成したメッセージキューをアクティブ状態にする。この関数を呼び出してメッ
　　　セージキューをアクティブ状態にしなければメッセージキューを使うことができな
　　　い。

　　・パラメタ
　　　queId:IN：アクティブにするメッセージキューのIDを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_DisableQue
　　・関数仕様
　　　RpcResult_t IPC_DisableQue(
　　　　　　uint32_t queId);

　　・意味
　　　アクティブなメッセージキューをインアクティブにする。インアクティブ状態の
　　　メッセージキューは基本的にキューからメッセージを取り出したり、メッセージを
　　　置いたりすることができない。メッセージキューを破棄する場合は、まずこの関数
　　　を呼び出して、メッセージキューをインアクティブの状態にしなければならない。

　　・パラメタ
　　　queId：IN：インアクティブにするメッセージキューのIDを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_GetMsgFromQue
　　・関数仕様
　　　RpcResult_t IPC_GetMsgFromQue(
　　　　　　uint32_t queId, 
　　　　　　uint32_t *msgId, 
　　　　　　RpcMsgParam_t *msgParam, 
　　　　　　uint32_t timeout);

　　・意味
　　　メッセージキューに格納されているメッセージを１つ取り出す。取り出されるメッ
　　　セージはメッセージキューから削除される。メッセージはキューに一番最後に置か
　　　れたメッセージが取り出される（First In First Out）。

　　・パラメタ
　　　queId：IN：メッセージを取り出すメッセージキューのIDを指定する。
　　　msgId：OUT：取り出したメッセージのIDを格納する。領域は呼び出し側が確保する。
　　　msgParam：OUT：取り出したメッセージのパラメタを格納する。領域は呼び出し側
　　　　　　が確保する。
　　　timeout:IN：メッセージキューからメッセージを取り出すまでのタイムアウト時間
　　　　　　をミリ秒単位で指定する。指定したタイムアウト時間までにメッセージを取
　　　　　　り出すことができなければタイムアウトエラーを返す。なおこのパラメタに
　　　　　　IPC_MSG_QUE_WAIT_FOREVERを指定した場合は、メッセージが取得できるまで
　　　　　　待ち続ける。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_SweepMsgFromQue
　　・関数仕様
　　　RpcResult_t IPC_SweepMsgFromQue(
　　　　　　uint32_t queId, 
　　　　　　uint32_t *msgId, 
　　　　　　RpcMsgParam_t *msgParam);

　　・意味
　　　メッセージキューに格納されているメッセージを１つ取り出す。この関数はメッ
　　　セージキューがアクティブでなくてもメッセージを取り出すことができる。利用者
　　　はメッセージキューをインアクティブの状態にした後、この関数を使ってメッセー
　　　ジキュー内部に溜まっているメッセージを取り出し、メッセージキューをクリーン
　　　にしてからメッセージキューの破棄を実施する。

　　・パラメタ
　　　queId：IN：メッセージを取り出すメッセージキューのIDを指定する。
　　　msgId：OUT：取り出したメッセージのIDを格納する。領域は呼び出し側が確保する。
　　　msgParam：OUT：取り出したメッセージのパラメタを格納する。領域は呼び出し側
　　　　　　が確保する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_PutMsgToQue
　　・関数仕様
　　　RpcResult_t IPC_PutMsgToQue(
　　　　　　uint32_t queId, 
　　　　　　uint32_t msgId, 
　　　　　　RpcMsgParam_t *msgParam, 
　　　　　　uint32_t timeout);

　　・意味
　　　メッセージキューの最後にメッセージを置く。この関数を呼び出すときはメッセー
　　　ジキューはアクティブの状態でなければならない。置かれたメッセージはキューの
　　　最後に追加されるため、この関数を呼び出したときよりも前に追加されたメッセー
　　　ジがすべて取り出された後にこのメッセージの取り出しが可能となる。

　　・パラメタ
　　　queId：IN：メッセージを置くメッセージキューのIDを指定する。
　　　msgId：IN：メッセージキューに置くメッセージのIDを指定する。
　　　msgParam：IN：メッセージのパラメタを格納する。パラメタの値はメッセージ
　　　　　　キュー内の領域にコピーされる。
　　　timeout:IN：メッセージキューからメッセージを置くまでのタイムアウト時間をミ
　　　　　　リ秒単位で指定する。指定したタイムアウト時間までにメッセージを置くこ
　　　　　　とができなければタイムアウトエラーを返す。なおこのパラメタに
　　　　　　IPC_MSG_QUE_WAIT_FOREVERを指定した場合は、メッセージを置くことができ
　　　　　　るまで待ち続ける。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_PutMsgToQueUrgent
　　・関数仕様
　　　RpcResult_t IPC_PutMsgToQueUrgent(
　　　　　　uint32_t queId, 
　　　　　　uint32_t msgId, 
　　　　　　RpcMsgParam_t *msgParam, 
　　　　　　uint32_t timeout);

　　・意味
　　　メッセージキューの先頭にメッセージを置く。この関数を呼び出すときはメッセー
　　　ジキューはアクティブの状態でなければならない。置かれたメッセージはキューの
　　　先頭に追加されるため、次にメッセージを取り出すときにはこのメッセージが取り
　　　出される。

　　・パラメタ
　　　queId：IN：メッセージを置くメッセージキューのIDを指定する。
　　　msgId：IN：メッセージキューに置くメッセージのIDを指定する。
　　　msgParam：IN：メッセージのパラメタを格納する。パラメタの値はメッセージ
　　　　　　キュー内の領域にコピーされる。
　　　timeout:IN：メッセージキューからメッセージを置くまでのタイムアウト時間をミ
　　　　　　リ秒単位で指定する。指定したタイムアウト時間までにメッセージを置くこ
　　　　　　とができなければタイムアウトエラーを返す。なおこのパラメタに
　　　　　　IPC_MSG_QUE_WAIT_FOREVERを指定した場合は、メッセージを置くことができ
　　　　　　るまで待ち続ける。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_GetNumOfMsg
　　・関数仕様
　　　RpcResult_t IPC_GetNumOfMsg(
　　　　　　uint32_t queId, 
　　　　　　uint32_t *numOfMsg);

　　・意味
　　　メッセージキューに格納されているメッセージの数を取得する。

　　・パラメタ
　　　queId：IN：メッセージを置くメッセージキューのIDを指定する。
　　　numOfMsg：OUT：メッセージの数を格納する領域を指定する。領域は呼び出し側が
　　　　　　用意する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　以下に示す関数は基本的に上記メッセージキューの関数の共有メモリ版である。上記
メッセージキューの関数でも共有メモリでのメッセージキューの生成、メッセージの取得
メッセージの追加は可能であるが、キューの検索がローカルメモリ上にあるキューから検
索するため共有メモリ上にあるキューの検索には時間がかかる。そのため下記関数を用意
し効率的にメッセージの取得、追加ができるようにする。

　・IPC_InitExtQue
　　・関数仕様
　　　RpcResult_t IPC_InitExtQue(
　　　　　　RpcBool_t masterProcess);

　　・意味
　　　メッセージキューシステムを初期化する。メッセージキューはプロセス内部でのみ
　　　使用するもの、プロセス間で使用するものの2種類ありるかこの関数はプロセス間
　　　で使用するものについて初期化をする。この関数はIPC_InitIprpcないから呼び出
　　　されるので、一般の利用者がこの関数を呼び出すことはない。

　　・パラメタ
　　　masterProcess：IN：マスタープロセスかどうかのフラグ

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_CreateExtQue
　　・関数仕様
　　　RpcResult_t IPC_CreateExtQue(
　　　　　　RpcBool_t IpcFlag,
　　　　　　uint32_t queSize, 
　　　　　　uint32_t *queId);

　　・意味
　　　メッセージキューを生成する。利用者はこの関数を使ってメッセージキューを生成
　　　した後、IPC_EnableExtQue関数を呼び出してメッセージキューをアクティブ状態に
　　　し、メッセージキューを利用可能にする。メッセージキューは共有メモリ上に生成
　　　される。

　　・パラメタ
　　　queSize：IN：メッセージキューのサイズを指定する。サイズはキューに格納でき
　　　　　　るメッセージの数である。
　　　queId：OUT：生成されたメッセージキューのIDを返す。メッセージキューのIDは、
　　　　　　そのプロセス内で一意となる値が設定される。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_DestroyExtQue
　　・関数仕様
　　　RpcResult_t IPC_DestroyExtQue(
　　　　　　uint32_t queId);

　　・意味
　　　生成したメッセージキューを破棄する。この関数を呼び出す前に、メッセージ
　　　キューをインアクティブにして、内部に溜まっているメッセージをすべてクリーン
　　　する必要がある。

　　・パラメタ
　　　queId：IN：破棄するメッセージキューのIDを指定する

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_EnableExtQue
　　・関数仕様
　　　RpcResult_t IPC_EnableExtQue(
　　　　　　uint32_t queId);

　　・意味
　　　生成したメッセージキューをアクティブ状態にする。この関数を呼び出してメッ
　　　セージキューをアクティブ状態にしなければメッセージキューを使うことができな
　　　い。

　　・パラメタ
　　　queId:IN：アクティブにするメッセージキューのIDを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_DisableQue
　　・関数仕様
　　　RpcResult_t IPC_DisableExtQue(
　　　　　　uint32_t queId);

　　・意味
　　　アクティブなメッセージキューをインアクティブにする。インアクティブ状態の
　　　メッセージキューは基本的にキューからメッセージを取り出したり、メッセージを
　　　置いたりすることができない。メッセージキューを破棄する場合は、まずこの関数
　　　を呼び出して、メッセージキューをインアクティブの状態にしなければならない。

　　・パラメタ
　　　queId：IN：インアクティブにするメッセージキューのIDを指定する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_GetMsgFromExtQue
　　・関数仕様
　　　RpcResult_t IPC_GetMsgFromExtQue(
　　　　　　uint32_t queId, 
　　　　　　uint32_t *msgId, 
　　　　　　RpcMsgParam_t *msgParam, 
　　　　　　uint32_t timeout);

　　・意味
　　　メッセージキューに格納されているメッセージを１つ取り出す。取り出されるメッ
　　　セージはメッセージキューから削除される。メッセージはキューに一番最後に置か
　　　れたメッセージが取り出される（First In First Out）。

　　・パラメタ
　　　queId：IN：メッセージを取り出すメッセージキューのIDを指定する。
　　　msgId：OUT：取り出したメッセージのIDを格納する。領域は呼び出し側が確保する。
　　　msgParam：OUT：取り出したメッセージのパラメタを格納する。領域は呼び出し側
　　　　　　が確保する。
　　　timeout:IN：メッセージキューからメッセージを取り出すまでのタイムアウト時間
　　　　　　をミリ秒単位で指定する。指定したタイムアウト時間までにメッセージを取
　　　　　　り出すことができなければタイムアウトエラーを返す。なおこのパラメタに
　　　　　　IPC_MSG_QUE_WAIT_FOREVERを指定した場合は、メッセージが取得できるまで
　　　　　　待ち続ける。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_SweepMsgFromExtQue
　　・関数仕様
　　　RpcResult_t IPC_SweepMsgFromExtQue(
　　　　　　uint32_t queId, 
　　　　　　uint32_t *msgId, 
　　　　　　RpcMsgParam_t *msgParam);

　　・意味
　　　メッセージキューに格納されているメッセージを１つ取り出す。この関数はメッ
　　　セージキューがアクティブでなくてもメッセージを取り出すことができる。利用者
　　　はメッセージキューをインアクティブの状態にした後、この関数を使ってメッセー
　　　ジキュー内部に溜まっているメッセージを取り出し、メッセージキューをクリーン
　　　にしてからメッセージキューの破棄を実施する。

　　・パラメタ
　　　queId：IN：メッセージを取り出すメッセージキューのIDを指定する。
　　　msgId：OUT：取り出したメッセージのIDを格納する。領域は呼び出し側が確保する。
　　　msgParam：OUT：取り出したメッセージのパラメタを格納する。領域は呼び出し側
　　　　　　が確保する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_PutMsgToExtQue
　　・関数仕様
　　　RpcResult_t IPC_PutMsgToExtQue(
　　　　　　uint32_t queId, 
　　　　　　uint32_t msgId, 
　　　　　　RpcMsgParam_t *msgParam, 
　　　　　　uint32_t timeout);

　　・意味
　　　メッセージキューの最後にメッセージを置く。この関数を呼び出すときはメッセー
　　　ジキューはアクティブの状態でなければならない。置かれたメッセージはキューの
　　　最後に追加されるため、この関数を呼び出したときよりも前に追加されたメッセー
　　　ジがすべて取り出された後にこのメッセージの取り出しが可能となる。

　　・パラメタ
　　　queId：IN：メッセージを置くメッセージキューのIDを指定する。
　　　msgId：IN：メッセージキューに置くメッセージのIDを指定する。
　　　msgParam：IN：メッセージのパラメタを格納する。パラメタの値はメッセージ
　　　　　　キュー内の領域にコピーされる。
　　　timeout:IN：メッセージキューからメッセージを置くまでのタイムアウト時間をミ
　　　　　　リ秒単位で指定する。指定したタイムアウト時間までにメッセージを置くこ
　　　　　　とができなければタイムアウトエラーを返す。なおこのパラメタに
　　　　　　IPC_MSG_QUE_WAIT_FOREVERを指定した場合は、メッセージを置くことができ
　　　　　　るまで待ち続ける。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_PutMsgToExtQueUrgent
　　・関数仕様
　　　RpcResult_t IPC_PutMsgToExtQueUrgent(
　　　　　　uint32_t queId, 
　　　　　　uint32_t msgId, 
　　　　　　RpcMsgParam_t *msgParam, 
　　　　　　uint32_t timeout);

　　・意味
　　　メッセージキューの先頭にメッセージを置く。この関数を呼び出すときはメッセー
　　　ジキューはアクティブの状態でなければならない。置かれたメッセージはキューの
　　　先頭に追加されるため、次にメッセージを取り出すときにはこのメッセージが取り
　　　出される。

　　・パラメタ
　　　queId：IN：メッセージを置くメッセージキューのIDを指定する。
　　　msgId：IN：メッセージキューに置くメッセージのIDを指定する。
　　　msgParam：IN：メッセージのパラメタを格納する。パラメタの値はメッセージ
　　　　　　キュー内の領域にコピーされる。
　　　timeout:IN：メッセージキューからメッセージを置くまでのタイムアウト時間をミ
　　　　　　リ秒単位で指定する。指定したタイムアウト時間までにメッセージを置くこ
　　　　　　とができなければタイムアウトエラーを返す。なおこのパラメタに
　　　　　　IPC_MSG_QUE_WAIT_FOREVERを指定した場合は、メッセージを置くことができ
　　　　　　るまで待ち続ける。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。


　・IPC_GetNumOfMsg
　　・関数仕様
　　　RpcResult_t IPC_GetNumOfMsgExt(
　　　　　　uint32_t queId, 
　　　　　　uint32_t *numOfMsg);

　　・意味
　　　メッセージキューに格納されているメッセージの数を取得する。

　　・パラメタ
　　　queId：IN：メッセージを置くメッセージキューのIDを指定する。
　　　numOfMsg：OUT：メッセージの数を格納する領域を指定する。領域は呼び出し側が
　　　　　　用意する。

　　・戻り値
　　　RpcResult_t：成功した場合にはRPC_SUCCESSを設定する。エラーの場合はそれ以
　　　　　　外の値を設定する。



　9.6：DATABASE
　このライブラリでは共有メモリ上に関数DB、スケルトンDB、マルチキャストRPCDBの3つ
のDBが生成される。各プロセスはこれらのDBにデータの追加、検索を行ってRPCの処理を
実行する。通常これらの関数は一般の利用者からアクセスされることはない。


　10：SYSTEMCALL WRAPPER
　このライブラリで使用しているシステムコールおよびpthread等のいくつかのライブラ
リ関数のラッパー関数を定義している。



