`拡張同期・通信`

`[EN]` `cre_mbf``（メッセージバッファ生成）`

`・管理ブロックとメッセージ用バッファの確保`

`・接続機能が利用可能`

`・exinfの拡張情報はref_mbfで利用可`

`Ｃ言語関数`

`ER ercd = cre_mbf( ID mbfid, T_CMBF *pk_cmbf );`

`引数`

`ID　　　　 mbxid　　　メッセージバッファＩＤ（TMBF_DB = -3(デバッグ時使用)、TMBF_OS = -4(エラーログ``)）`

`T_CMBF*　　pk_cmbf　　メッセージバッファ生成情報`

`pk_cmbfの中身`

`VP　　　 　exinf　　　拡張情報`

`ATR　　　　mbfatr　　 メッセージバッファ属性（TA_TFIFO(タスクはFIFO) or TA_TPRI(タスクは優先度順-レベルＸ)）`

`INT　　　　bufsz　　　メッセージバッファのサイズ`

`INT　　　　maxmsz　　 メッセージの最大長`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_NOMEM　　 管理ブロックやリングバッファ用の領域が確保できない`

`E_RSATR　　 mbfatrが不正`

`E_RAR　　　 pk_cmbfが不正、bufsz、maxmszが負または不正`

`E_ID　　　　mbfidが不正`

`E_OBJ　　　 mbfidのメッセージバッファが既に存在`

`E_OACV　　　tskid＜-4のメッセージバッファは利用不可インプリメント依存`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_PAR　　　対象ノードでexinf、mbfatr、bufsz、maxmszが不正`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのメッセージバッファを指定`

`[EN]` `del_mbf``（メッセージバッファ削除）`

`・接続機能が利用可能`

`・管理ブロックとメッセージ用のバッファの解放`

`・複数のタスクを管理するメッセージバッファを削除後の同優先度の順序はインプリメント依存`

`Ｃ言語関数`

`ER ercd = del_mbf( ID mbfid );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_NOMEM　　 管理ブロックやリングバッファ用の領域が確保できない`

`E_RSATR　　 mbfatrが不正`

`E_ID　　　　mbfidが不正`

`E_NOEXS　　 mbfidのメッセージバッファが存在していない`

`E_OACV　　　tskid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのメッセージバッファを指定`

`[EN]` `snd_mbf``（メッセージバッファへ送信）`

`・接続機能が利用可能`

`・送信バッファに余裕があるときmsgをメッセージキュー(リングバッファ)に送信`

`・送信バッファに余裕がないとき送信待ち行列(キューイングはFIFO)に並ぶ`

`Ｃ言語関数`

`ER ercd = snd_mbf( ID mbfid, VP msg, INT msgz );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`INT　　　　msgsz　　　送信メッセージのサイズ`

`VP　　　　 msg　　　　送信メッセージのアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 msgsz≦0、msgsz＞maxmsz、msgが不正`

`E_NOEXS　　 mbfidのメッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中にメッセージバッファが削除された`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_PAR　　　対象ノードでmsgszが不正`

`[EN]` `psnd_mbf``（メッセージバッファへ送信（ポーリング））`

`・接続機能が利用可能`

`・送信バッファに余裕があるときmsgをメッセージキュー(リングバッファ)に送信`

`・送信バッファに余裕がないときE_TMOUT`

`Ｃ言語関数`

`ER ercd = psnd_mbf( ID mbfid, VP msg, INT msgz );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`INT　　　　msgsz　　　送信メッセージのサイズ`

`VP　　　　 msg　　　　送信メッセージのアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 msgsz≦0、msgsz＞maxmsz、msgが不正`

`E_NOEXS　　 mbfidのメッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行（インプリメント依存）`

`E_DLT　　　 待機中にメッセージバッファが削除された`

`E_TMOUT　　 ポーリング失敗`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_PAR　　　対象ノードでmsgszが不正`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのメッセージバッファを指定（インプリメント依存）`

`[EN]` `tsnd_mbf``（メッセージバッファへ送信（タイムアウト有））`

`・接続機能が利用可能`

`・送信バッファに余裕があるときmsgをメッセージキュー(リングバッファ)に送信`

`・送信バッファに余裕がないとき送信待ち行列(キューイングはFIFO)に並ぶ、tmout経過後E_TMOUT`

`・tmoutがTMO_POLならばpsnd_mbf、TMO_FEVRならばsnd_mbf`

`Ｃ言語関数`

`ER ercd = tsnd_mbf( ID mbfid, VP msg, INT msgz, TMO tmout );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`INT　　　　msgsz　　　送信メッセージのサイズ`

`VP　　　　 msg　　　　送信メッセージのアドレス`

`TMO　　　　tmout　　　タイムアウト時間（TMO_POL = 0(0)、TMO_FEVR = -1(∞)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 msgsz≦0、msgsz＞maxmsz、msgが不正、tmout≦-2`

`E_NOEXS　　 mbfidのメッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行（tsnd_mbf(tmout=TMO_POL）限る``、インプリメント依存）`

`E_DLT　　　 待機中にメッセージバッファが削除された`

`E_TMOUT　　 タイムアウト`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

```EN_PAR　　　対象ノードでmsgsz、tmoutがサポートされていない`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのメッセージバッファを指定（tsnd_mbf（tmout=TMO_POL）に限る、インプリメント依存）`

`[EN]` `rcv_mbf``（メッセージバッファから受信）`

`・接続機能が利用可能`

`・受信バッファにメッセージが有るときメッセージキューからmsgに受信`

`・受信後msgのサイズをリターン`

`・受信バッファにメッセージが無いとき受信待ち行列に並ぶ`

`Ｃ言語関数`

`ER ercd = rcv_mbf( VP msg, INT *p_msgsz, ID mbfid );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`VP　　　　 msg　　　　受信メッセージのアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`INT　　　　msgsz　　　受信メッセージのサイズ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 msgが不正`

`E_NOEXS　　 mbfidのメッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中メッセージバッファが削除された`

`E_TMOUT　　 タイムアウト`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_PAR　　　対象ノードでtmoutがサポートされていない`

`EN_RPAR　　 対象ノードから返されたmsgszが不正`

`[EN]` `prcv_mbf``（メッセージバッファから受信（ポーリング））`

`・接続機能が利用可能`

`・受信バッファにメッセージが有るときメッセージキューからmsgに受信`

`・受信後msgのサイズをリターン`

`・受信バッファにメッセージが届いていないときE_TMOUT`

`Ｃ言語関数`

`ER ercd = prcv_mbf( VP msg, INT *p_msgsz, ID mbfid );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`VP　　　　 msg　　　　受信メッセージのアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`INT　　　　msgsz　　　受信メッセージのサイズ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 msgが不正`

`E_NOEXS　　 メッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中にメッセージバッファが削除された`

`E_TMOUT　　 ポーリング失敗`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_RPAR　　 対象ノードから返ってきたmsgszが不正`

`[EN]` `trcv_mbf``（メッセージバッファから受信（タイムアウト有））`

`・接続機能が利用可能`

`・受信バッファにメッセージが有るときメッセージキューからmsgに受信`

`・受信後msgのサイズをリターン`

`・受信バッファにメッセージが無いとき受信待ち行列に並ぶ、tmout経過後E_TMOUT`

`・tmoutがTMO_POLならばprcv_mbf、TMO_FEVRならばrcv_mbf`

`Ｃ言語関数`

`ER ercd = trcv_mbf( VP msg, INT *p_msgsz, ID mbfid, TMO tmout );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`VP　　　　 msg　　　　受信メッセージのアドレス`

`TMO　　　　tmout　　　タイムアウト時間（TMO_POL = 0(0)、TMO_FEVR = -1(∞)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`INT　　　　msgsz　　　受信メッセージのサイズ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 msgが不正、tmout≦-2`

`E_NOEXS　　 mbfidのメッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中にメッセージバッファが削除された`

`E_TMOUT　　 タイムアウト`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_PAR　　　対象ノードでtmoutがサポートされていない`

`EN_RPAR　　 対象ノードから返ってきたmsgszが不正`

`[EN]` `ref_mbf``（メッセージバッファ状態参照）`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = ref_mbf( T_RMBF *pk_rmbf, ID mbfid );`

`引数`

`ID　　　　 mbfid　　　メッセージバッファＩＤ`

`TRMBF*　　 pk_rmbf　　メッセージバッファ状態のアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`pk_rmbfの中身`

`VP　　　 　exinf　　　拡張情報`

`BOOL_ID　　wtsk　　 　受信待機アドレスの有無（FALSE = 0(無し)）`

`BOOL_ID　　stsk　　　 送信待機アドレスの有無（FALSE = 0(無し)）`

`INT　　　　msgsz　　　次に受信されるメッセージの大きさ`

`INT　　　　frbufsz　　空きバッファの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbfidが不正`

`E_PAR　　　 pk_rmbfが不正`

`E_NOEXS　　 mbfidのメッセージバッファが存在しない`

`E_OACV　　　mbfid＜-4のメッセージバッファは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのmbfidのメッセージバッファが不正または存在しない`

`EN_RPAR　　 対象ノードから返ってきたexinf、wtsk、stsk、msgsz、frbufszが不正`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのメッセージバッファを指定`

`[EN]` `cre_por``（ランデブポート生成）`

`・管理ブロックを確保`

`・接続機能が利用可能`

`・poratrにはTA_NULL`

`・exinf(拡張情報)はref_porで呼び出せる`

`Ｃ言語関数`

`ER ercd = cre_por( ID porid, T_CPOR *pk_cpor );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`T_CMBF*　　pk_cpor　　ランデブ用ポート生成情報`

`pk_cporの中身`

`VP　　　 　exinf　　　拡張情報`

`ATR　　　　poratr　　 ポート属性（TA_NULL = 0(デフォルト)）`

`INT　　　　maxcmsz　　呼出時メッセージの最大長`

`INT　　　　maxrmsz　　返答用メッセージの最大長`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_NOMEM　　 管理ブロックが確保できない`

`E_RSATR　　 poratrが不正`

`E_RAR　　　 pk_cpor、maxcmsz、maxrmszが不正`

`E_ID　　　　poridが不正`

`E_OBJ　　　 poridのポートが既に存在`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのporidのポートが不正または存在しない`

`EN_PAR　　　対象ノードでexinf、poratr、maxcmsz、maxrmszがサポートされていない`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのポートを指定`

`[EN]` `del_por``（ランデブポート削除）`

`・接続機能が利用可能`

`・削除後ポートに待機中のタスクはE_DLT`

`・ランデブ成立済みタスクを削除してもエラーにならない`

`・複数のタスクを管理するポートを削除後、同優先度の順序はインプリメント依存`

`・管理ブロックを解放`

`Ｃ言語関数`

`ER ercd = del_por( ID porid );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノード側のporidのポートが不正または存在しない`

`EN_CTXID　　タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのポートを指定`

`[EN]` `cal_por``（ポートに対するランデブの呼出）`

`・指定ポートにWAIT状態(ランデブ受付待ち)で受付側acpptnと呼出側calptnの積が0以外のとき、ランデブ成立で受付側がREADY状態に、呼出側がWAIT状態(ランデブ終了待ち)になる`

`・指定ポートに複数の受付状態タスクがあるときは先頭から順番に条件を比較していく`

`・指定ポートにWAIT状態(ランデブ受付待ち)で受付側acpptnと呼出側calptnの積が0以外のタスクがないときWAIT状態(ランデブ呼出待ち)になる`

`・ランデブ成立時に受付側にcmsgszのmsgが送信できる`

`・ランデブ終了時に呼出側にp_rmsgszのmsgが受信できる`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = cal_por( VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`UINT　　　 calptn　　 呼出側選択条件のビットパターン`

`VP　　　　 msg　　　　メッセージアドレス`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`INT　　　　p_rmsgsz　 返答メッセージの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_PAR　　　 cmsgsz≦0、cmsgsz＞maxcmsz、calptn=0、msgが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中に対象ポートが削除された`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのporidのポートが不正または存在しない`

`EN_PAR　　　対象ノードでcalptn、cmsgszがサポートされていない`

`EN_RPAR　　 対象ノードから返されたp_rmsgszが不正`

`[EN]` `pcal_por``（ポートに対するランデブの呼出（ポーリング））`

`・指定ポートにWAIT状態(ランデブ受付待ち)で受付側acpptnと呼出側calptnの積が0以外のとき、ランデブ成立で受付側がREADY状態に、呼出側がWAIT状態(ランデブ終了待ち)になる`

`・指定ポートに複数の受付状態タスクがあるときは先頭から順番に条件を比較していく`

`・指定ポートにWAIT状態(ランデブ受付待ち)で受付側acpptnと呼出側calptnの積が0以外のタスクがないときE_TMOUT`

`・ランデブ成立時に受付側にcmsgszのmsgが送信できる`

`・ランデブ終了時に呼出側にp_rmsgszのmsgが受信できる`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = pcal_por( VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`UINT　　　 calptn　　 呼出側選択条件のビットパターン`

`VP　　　　 msg　　　　メッセージアドレス`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`INT　　　　p_rmsgsz　 返答メッセージの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_PAR　　　 cmsgsz≦0、cmsgsz＞maxcmsz、calptn=0、msgが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

``E_TMOUT　　 ポーリング失敗``

`EN_OBJNO　　対象ノードのporidのポートが不正または存在しない`

`EN_PAR　　　対象ノードでcalptn、cmsgszがサポートされていない`

`EN_RPAR　　 対象ノードから返されたp_rmsgszが不正`

`[EN]` `tcal_por``（ポートに対するランデブの呼出（タイムアウト有））`

`・指定ポートにWAIT状態(ランデブ受付待ち)で受付側acpptnと呼出側calptnの積が0以外のとき、ランデブ成立で受付側がREADY状態に、呼出側がWAIT状態(ランデブ終了待ち)になる`

`・指定ポートに複数の受付状態タスクがあるときは先頭から順番に条件を比較していく`

`・指定ポートにWAIT状態(ランデブ受付待ち)で受付側acpptnと呼出側calptnの積が0以外のタスクがないときWAIT状態(ランデブ呼出待ち)に、tmout経過後E_TMOUT`

`・ランデブ成立時に受付側にcmsgszのmsgが送信できる`

`・ランデブ終了時に呼出側にp_rmsgszのmsgが受信できる`

`・接続機能が利用可能`

`・tmoutがTMO_POLならpcal_por、TMO_FEVRならcal_por`

`Ｃ言語関数`

`ER ercd = tcal_por( VP msg, INT *p_rmsgsz, ID porid, UINT calptn, INT cmsgsz, TMO tmout );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`UINT　　　 calptn　　 呼出側選択条件のビットパターン`

`VP　　　　 msg　　　　メッセージアドレス`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`TMO　　　　tmout　　　タイムアウト時間（TMO_POL = 0(0)、TMO_FEVR = -1(∞)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`INT　　　　p_rmsgsz　 返答メッセージの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_PAR　　　 cmsgsz≦0、cmsgsz＞maxcmsz、calptn=0、msgが不正、tmout≦-2`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　ユーザタスクからporid＜(-4)のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中に対象ポートが削除された`

`E_TMOUT　　 タイムアウト`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_OBJNO　　対象ノードのporidのポートが不正または存在しない`

`EN_PAR　　　対象ノードでcalptn、cmsgsz、tmoutがサポートされていない`

`EN_RPAR　　 対象ノードから返されたp_rmsgszが不正`

`[E]` `acp_por``（ポートに対するランデブ受付）`

`・指定ポートに呼出状態(ランデブ呼出待ち)で受付側acpptnと呼出側calptnの積が0以外ならランデブ成立で受付側がREADY状態に、呼出側がWAIT状態(ランデブ終了待ち)になる`

`・指定ポートに呼出状態(ランデブ呼出待ち)で受付側acpptnと呼出側calptnの積が0以外の条件を満たすタスクがないとき受付状態(ランデブ受付待ち)で行列を作る`

`・再度実行する(外部から影響)可能性がある場合、rdvnoは呼出側の状態を判断できるようにする`

`・ランデブ成立時に呼出側からp_cmsgszのmsgが受信できる`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = acp_por( RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn );`

`引数`

`ID　　　　 porid　　　ポートＩＤ`

`UINT　　　 acpptn　　 受信側選択条件のビットパターン`

`VP　　　　 msg　　　　呼出メッセージアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`RNO　　　　rdvno　　　ランデブ番号`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_PAR　　　 acpptn=0、msgが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中にポートが削除された`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_NOSPT　　サポートされていない接続機能`

`[E]` `pacp_por``（ポートに対するランデブ受付（ポーリング））`

`・指定ポートに呼出状態(ランデブ呼出待ち)で受付側acpptnと呼出側calptnの積が0以外ならランデブ成立で受付側がREADY状態に、呼出側がWAIT状態(ランデブ終了待ち)になる`

`・指定ポートに呼出状態(ランデブ呼出待ち)で受付側acpptnと呼出側calptnの積が0以外の条件を満たすタスクがないときE_TMOUT`

`・再度実行する(外部から影響)可能性がある場合、rdvnoは呼出側の状態を判断できるようにする`

`・ランデブ成立時に呼出側からp_cmsgszのmsgが受信できる`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = pacp_por( RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn );`

`引数`

`ID　　　　 porid　　　ポートＩＤ`

`UINT　　　 acpptn　　 受信側選択条件のビットパターン`

`VP　　　　 msg　　　　呼出メッセージアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`RNO　　　　rdvno　　　ランデブ番号`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_PAR　　　 acpptn=0、msgが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_TMOUT　　 ポーリング失敗`

`EN_NOSPT　　サポートされていない接続機能`

`[E]` `tacp_por``（ポートに対するランデブ受付（タイムアウト有））`

`・指定ポートに呼出状態(ランデブ呼出待ち)で受付側acpptnと呼出側calptnの積が0以外ならランデブ成立で受付側がREADY状態に、呼出側がWAIT状態(ランデブ終了待ち)になる`

`・指定ポートに呼出状態(ランデブ呼出待ち)で受付側acpptnと呼出側calptnの積が0以外の条件を満たすタスクがないとき受付状態(ランデブ受付待ち)で行列を作る、tmout経過後E_TMOUT`

`・再度実行する(外部から影響)可能性がある場合、rdvnoは呼出側の状態を判断できるようにする`

`・ランデブ成立時に呼出側からp_cmsgszのmsgが受信できる`

`・tmoutがTMO_POLならpacp_por、TMO_FEVRならacp_por`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = tacp_por( RNO *p_rdvno, VP msg, INT *p_cmsgsz, ID porid, UINT acpptn, TMO tmout );`

`引数`

`ID　　　　 porid　　　ポートＩＤ`

`UINT　　　 acpptn　　 受信側選択条件のビットパターン`

`VP　　　　 msg　　　　呼出メッセージアドレス`

`TMO　　　　tmout　　　タイムアウト時間（TMO_POL = 0(0)、TMO_FEVR = -1(∞)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`RNO　　　　rdvno　　　ランデブ番号`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正`

`E_PAR　　　 acpptn=0、msgが不正、tmout≦-2`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`E_DLT　　　 待機中にポートが削除された`

`E_TMOUT　　 タイムアウト`

`E_RLWAI` `待機中に待機強制解除(rel_wai)を受け付け`

`EN_NOSPT　　サポートされていない接続機能`

`[E]` `fwd_por``（ポートに対するランデブ回送）`

`・呼出側(rdvno)、受付側(自タスク)のランデブを終了する`

`・呼出側を`cal_por( msg, 終了メッセージの大きさ, porid, calptn, cmsgsz )でリセットする``

`Ｃ言語関数`

`ER ercd = fwd_por( ID porid, UINT calptn, RNO rdvno, VP msg, INT cmsgsz );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`UINT　　　 calptn　　 呼出側選択条件のビットパターン`

`RNO　　　　rdvno　　　回送前のランデブ番号`

`VP　　　　 msg　　　　メッセージアドレス`

`INT　　　　cmsgsz　　 呼出メッセージの大きさ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正あるいは利用できない、poridが他ノードのポート`

`E_PAR　　　 cmsgsz≦0、cmsgsz＞回送後のmaxcmsz、cmsgsz＞回送前のmaxrmsz、calptn=0、msgが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OBJ　　　 rdvnoが不正、回送後のmaxrmsz＞回送前のmaxrmsz`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`E_CTX　　　 タスク独立部またはディスパッチ禁止状態で実行`

`EN_NOSPT　　サポートされていない接続機能`

`[E]` `rpl_rdv``（ランデブ返答）`

`・受付側の処理終了を呼出側(rdvno、ランデブ終了待ち)に通知して、自タスクはWAIT状態になる`

`・呼出側にcmsgszの大きさのmsgを送信できる`

`Ｃ言語関数`

`ER ercd = rpl_rdv( RNO rdvno, VP msg, INT rmsgsz );`

`引数`

`RNO　　　　rdvno　　　ランデブ番号`

`VP　　　　 msg　　　　返答メッセージアドレス`

`INT　　　　cmsgsz　　 返答メッセージの大きさ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_PAR　　　 rmsgsz≦0、rmsgsz＞maxrmsz、msgが不正`

`E_OBJ　　　 rdvnoが不正`

`E_CTX　　　 タスク独立部から発行（インプリメント依存）`

`EN_CTXID　　ディスパッチ禁止状態から呼出側タスクが他ノードのポートを指定（インプリメント依存）`

`[EN]` `ref_por``（ポート状態参照）`

`・接続機能が利用可能`

`Ｃ言語関数`

`ER ercd = ref_por( T_RPOR *pk_rpor, ID porid );`

`引数`

`ID　　　　 porid　　　ランデブ用ポートＩＤ`

`T_RPOR*　　pk_rpor　　ポート状態のアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`pk_rpor`

`VP　　　 　exinf　　　拡張情報`

`BOOL_ID　　wtsk　　　 呼出待機タスクの有無（FALSE = 0(無し)）`

`BOOL_ID　　atsk　　　 受信待機タスクの有無（FALSE = 0(無し)）`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　poridが不正、poridが他ノードのポート`

`E_PAR　　　 pk_rporが不正`

`E_NOEXS　　 poridのポートが存在しない`

`E_OACV　　　porid＜-4のポートは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのporidのポートが不正または存在しない`

`EN_PAR　　　対象ノードでcalptn、cmsgsz、tmoutがサポートされていない`

`EN_RPAR　　 対象ノードから返ってきたrmsgszが不正`