拡張同期・通信

 

[EN] cre_mbf(メッセージバッファ生成)

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

・接続機能が利用可能

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

C言語関数

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

引数

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

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

 pk_cmbfの中身

  VP     exinf   拡張情報

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

  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(メッセージバッファ削除)

・接続機能が利用可能

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

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

C言語関数

 ER ercd = del_mbf( ID mbfid );

引数

 ID     mbfid   メッセージバッファID

戻り値

 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)に並ぶ

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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のサイズをリターン

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

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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(メッセージバッファ状態参照)

・接続機能が利用可能

C言語関数

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

引数

 ID     mbfid   メッセージバッファID

 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で呼び出せる

C言語関数

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

引数

 ID     porid   ランデブ用ポートID

 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

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

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

・管理ブロックを解放

C言語関数

 ER ercd = del_por( ID porid );

引数

 ID     porid   ランデブ用ポートID

戻り値

 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が受信できる

・接続機能が利用可能

C言語関数

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

引数

 ID     porid   ランデブ用ポートID

 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が受信できる

・接続機能が利用可能

C言語関数

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

引数

 ID     porid   ランデブ用ポートID

 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

C言語関数

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

引数

 ID     porid   ランデブ用ポートID

 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が受信できる

・接続機能が利用可能

C言語関数

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

引数

 ID     porid   ポートID

 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が受信できる

・接続機能が利用可能

C言語関数

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

引数

 ID     porid   ポートID

 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

・接続機能が利用可能

C言語関数

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

引数

 ID     porid   ポートID

 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 )でリセットする

C言語関数

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

引数

 ID     porid   ランデブ用ポートID

 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を送信できる

C言語関数

 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(ポート状態参照)

・接続機能が利用可能

C言語関数

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

引数

 ID     porid   ランデブ用ポートID

 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が不正