`同期・通信`

`[EN]` `cre_sem``（セマフォ生成）`

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

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

`・拡張情報はref_semで利用可`

`Ｃ言語関数`

`ER ercd = cre_sem( ID semid, T_CSEM *pk_csem );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`T_CSEM*　　pk_csem　　セマフォ生成情報`

`pk_csemの中身`

`VP　　　 　exinf　　　拡張情報`

`ATR　　　　sematr　　 セマフォ情報（TA_TFIFO(FIFO) || TA_TPRI(優先度)）`

`INT　　　　isemcnt　　セマフォ初期値（レベルＸ）`

`INT　　　　maxsem　　 セマフォ最大値（レベルＸ）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

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

`E_RSATR　　 sematrが不正`

`E_RAR　　　 pk_csemが不正、isemcnt、maxsemが負または不正`

`E_ID　　　　semidが-4〜0あるいは範囲外`

`E_OBJ　　　 semidのセマフォが既に存在`

`E_OACV　　　tskid＜-4のセマフォは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

`EN_PAR　　　対象ノードでexinf、sematr、isemcnt、maxsemがサポートされていない`

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

`[EN]` `del_sem``（セマフォ削除）`

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

`・削除後の同優先度の順番はインプリメント依存`

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

`Ｃ言語関数`

`ER ercd = del_sem( ID semid );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが不正`

`E_NOEXS　　 semidのセマフォが存在しない`

`E_OACV　　　tskid＜-4のセマフォは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

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

`[RN]` `sig_sem``（セマフォ資源返却）`

`・セマフォが先頭に確保しているタスクをREADYにする`

`・セマフォにタスクがないときは返却要求数(semcnt)を増やす`

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

`Ｃ言語関数`

`ER ercd = sig_sem( ID semid );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが(-4)〜0あるいは範囲``外`

`E_NOEXS　　 semidのセマフォが存在しない`

`E_OACV　　　tskid＜(-4)のセマフォは利用不可（インプリメント依存）`

`E_QOVR　　　semcnt(現在値)がmaxsem(最高値)を越えた[レベルＸ]`

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

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

`[RN]` `wai_sem``（セマフォ資源獲得）`

`・セマフォの資源に余裕がある(semcnt≧1)ときsemcntを減らして自タスクが実行される`

`・セマフォの資源に余裕がない(semcnt＝0)とき`セマフォ資源獲得`待ち`

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

`Ｃ言語関数`

`ER ercd = wai_sem( ID semid );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが不正`

`E_NOEXS　　 semidのセマフォが存在しない`

`E_OACV　　　tskid＜-4のセマフォは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に対象セマフォが削除された`

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

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

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

`[RN]` `preq_sem``（セマフォ資源獲得（ポーリング））`

`・セマフォの資源に余裕がある(semcnt≧1)ときsemcntを減らして自タスクが実行される`

`・セマフォの資源に余裕がない(semcnt＝0)とき自タスクはE_TMOUT`

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

`Ｃ言語関数`

`ER ercd = preq_sem( ID semid );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが不正`

`E_NOEXS　　 semidのセマフォが存在しない`

`E_OACV　　　tskid＜-4のセマフォは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に対象セマフォが削除された`

`E_TMOUT　　 ポーリング失敗`

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

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

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

`[EN]` `twai_sem``（セマフォ資源獲得（タイムアウト有））`

`・セマフォの資源に余裕がある(semcnt≧1)とき、semcntを減らして自タスクが実行される`

`・セマフォの資源に余裕がない(semcnt＝0)ときセマフォ資源獲得待ち、tmout経過後E_TMOUT`

`・tmoutがTMO_POLならpreq_sem、TMO_FEVRならwai_sem`

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

`Ｃ言語関数`

`ER ercd = twai_sem( ID semid, TMO tmout );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`TMO　　　　tmout　　　タイムアウト指定（TMO_POL = 0(0)、TMO_FEVR = 0(∞)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが不正`

`E_PAR　　　 tmout≦-2`

`E_NOEXS　　 semidのセマフォが存在しない`

`E_OACV　　　tskid＜-4のセマフォは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に対象セマフォが削除された`

`E_TMOUT　　 タイムアウト`

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

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

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

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

`[EN]` `ref_sem``（セマフォ状態参照）`

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

`Ｃ言語関数`

`ER ercd = ref_sem( T_RSEM *pk_rsem, ID semid );`

`引数`

`ID　　　　 semid　　　セマフォＩＤ`

`T_RSEM*　　pk_rsem　　セマフォ状態のアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`pk_rsemの中身`

`VP　　　 exinf　　　拡張情報`

`BOOL_ID　wtsk　　　 待機タスクの有無（FALSE＝0(無し)、0以外の場合タスクのID(レベルＸ)）`

`INT　　　semcnt　　 現在のセマフォカウント値`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが不正`

`E_PAR　　　 pk_rsemが不正`

`E_NOEXS　　 semidのセマフォが存在しない`

`E_OACV　　　tskid＜-4のセマフォが利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのsemidのセマフォが不正または存在しない`

`EN_RPAR　　 対象ノードから返されたexinf、wtsk、semcntが不正`

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

`[EN]` `cre_flg``（イベントフラグ生成）`

`・管理ブロックを確保（1word単位）`

`・拡張情報はref_flgで利用可`

`Ｃ言語関数`

`ER ercd = cre_flg( ID flgid, T_CFLG *pk_cflg );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`T_CFLG*　　pk_cflg　　イベント生成情報`

`pk_cflgの中身`

`VP　　　 　exinf　　　拡張情報`

`ATR　　　　flgatr　　 イベントフラグ情報（TA_WMUL(複数タスクの待機許可)(レベルＸ) || TA_WSGL(複数タスクの待機不許可)）`

`UINT　　　 isemcnt　　イベントフラグ初期値`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_NOMEM　　 管理ブロック用の領域が確保できない`

`E_RSATR　　 flgatrが不正`

`E_RAR　　　 pk_cflgが不正`

`E_ID　　　　flgidが不正`

`E_OBJ　　　 flgidのタスクが既に存在`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードにflgidのイベントフラグが不正または存在しない`

`EN_PAR　　　対象ノードでexinf、flgatr、iflgptnがサポートされていない`

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

`[EN]` `del_flg``（イベントフラグ削除）`

`・管理ブロック解放`

`・複数のタスクを管理するフラグを削除後の優先度はインプリメント依存`

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

`Ｃ言語関数`

`ER ercd = del_flg( ID flgid );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　flgidが不正`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

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

`[SN]` `set_flg``（イベントフラグのセット）`

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

`・イベントフラグの状態値とsetptnの論理和をとる`

`・複数のタスクが一斉に待機解除されたときの優先度はインプリメント依存（属性がTA_WMULの場合）`

`Ｃ言語関数`

`ER ercd = set_flg( ID flgid, UINT setptn );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`UINT　　　 setptn　　 セットするビットパターン`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　flgidが不正`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

`EN_PAR　　　対象ノードでexinf、flgatr、iflgptnがサポートされていない`

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

`[SN]` `clr_flg``（イベントフラグのクリア）`

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

`・イベントフラグの状態値とsetptnの論理積をとる`

`Ｃ言語関数`

`ER ercd = clr_flg( ID flgid, UINT clrtn );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`UINT　　　 clrptn　　 クリアするビットパターン`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　flgidが不正`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

`EN_PAR　　　対象ノードでexinf、flgatr、iflgptnがサポートされていない`

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

`[SN]` `wai_flg``（イベントフラグ待ち）`

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

`・`iflgptn(初期値)をwaiptn`が満たさないときイベントフラグ待ち、flgatrがTA_WMULなら複数待機できる`

`・`iflgptn(初期値)をwaiptnがTWF_ANDW(すべて満たす)、TWF_ORW`(一つでも満たす)とき待機解除```

`・`TWF_`CLRが指定してあるとき待機解除後にイベントフラグの状態値をクリア`

`・待機解除前の状態値をリターン`

`Ｃ言語関数`

`ER ercd = wai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`UINT　　　 waiptn　　 待機ビットパターン`

`UINT　　　 wfmode　　 待機モード（TWF_ANDW(0) || TWF_ORW(2) | TWF_CLR(1)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`UINT　　　 flgptn　　 待機解除時のビットパターン`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　semidが不正`

`E_PAR　　　 waiptn=0、wfmodeが不正`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OBJ　　　 TA_WSGL属性のイベントフラグに対する複数タスクの待ち`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に対象セマフォが削除された`

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

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

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

`[SN]` `pol_flg``（イベントフラグ待ち（ポーリング））`

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

``・`iflgptn(初期値)`をwaiptnが満たさないときE_TMOUT``

`・``iflgptn(初期値)`をwaiptnがTWF_ANDW(すべて満たす)、TWF_ORW`(一つでも満たす)とき待機解除```

`・`TWF_`CLRが指定してあるとき待機解除後にイベントフラグの状態値をクリア`

`・待機解除前の状態値をリターン`

`Ｃ言語関数`

`ER ercd = pol_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`UINT　　　 waiptn　　 待機ビットパターン`

`UINT　　　 wfmode　　 待機モード（TWF_ANDW(0) or TWF_ORW(2) + TWF_CLR(1)）`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`UINT　　　 flgptn　　 待機解除のビットパターン`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　flgidが不正`

`E_PAR　　　 waiptn=0、wfmodeが不正`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OBJ　　　 TA_WSGL属性のイベントフラグに対する複数タスクの待ち`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に対象イベントフラグが削除された`

`E_TMOUT　　 ポーリング`

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

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

`EN_RPAR　　 flgptnが要求ノードで表現できる値の範囲外`

`[EN]` `twai_flg``（イベントフラグ待ち（タイムアウト有））`

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

`・tmoutがTMO_POLのときpol_flg、TMO_FEVRのときwai_flg`

`・```iflgptn(初期値)``をwaiptnが満たさないときイベントフラグ待ち、tmout経過後E_TMOUT``

`・```iflgptn(初期値)``をwaiptnがTWF_ANDW(すべて満たす)、TWF_ORW`(一つでも満たす)とき待機解除```

`・`TWF_`CLRが指定してあるとき待機解除後にイベントフラグの状態値をクリア`

`・待機解除前の状態値をリターン`

`Ｃ言語関数`

`ER ercd = wai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode, TMO tmout );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`UINT　　　 waiptn　　 待機ビットパターン`

`UINT　　　 wfmode　　 待機モード（TWF_ANDW(0) || TWF_ORW(2) | TWF_CLR(1)）`

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

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`UINT　　　 flgptn　　 待機解除のビットパターン`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　flgidが不正`

`E_PAR　　　 waiptn=0、wfmodeが不正、tmout≦-2`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OBJ　　　 TA_WSGL属性のイベントフラグに対する複数タスクの待ち`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に対象イベントフラグが削除された`

`E_TMOUT　　 タイムアウト`

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

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

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

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

`[EN]` `ref_flg``（イベントフラグ状態参照）`

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

`Ｃ言語関数`

`ER ercd = ref_flg( T_RFLG *pk_rflg, ID flgid );`

`引数`

`ID　　　　 flgid　　　イベントフラグＩＤ`

`T_CFLG*　　pk_rflg　　イベントフラグ状態のアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`pk_rflgの中身`

`VP　　　 　exinf　　　拡張情報`

`BOOL_ID　　wtsk　　　 待機タスクの有無（FALSE = 0(無し)、0以外の場合タスクのID(レベルＸ)）`

`UINT　　　 flgptn　　 イベントフラグのビットパターン`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　flgidが不正`

`E_PAR　　　 pk_rflgが不正`

`E_NOEXS　　 flgidのイベントフラグが存在しない`

`E_OBJ　　　 TA_WSGL属性のイベントフラグに対する複数タスクの待ち`

`E_OACV　　　tskid＜-4のイベントフラグは利用不可（インプリメント依存）`

`EN_OBJNO　　対象ノードのflgidのイベントフラグが不正または存在しない`

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

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

`[E]` `cre_mbx``（メイルボックス生成）`

`・拡張情報はref_mbxで利用可`

`Ｃ言語関数`

`ER ercd = cre_mbx( ID mbxid, T_CMBX *pk_msg );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

`T_CMBX*　　pk_cmbx　　メイルボックス生成情報`

`pk_cmbxの中身`

`VP　　　 　exinf　　　拡張情報`

`mbxatr　　 mbxatr　　 メイルボックス属性（TA_TFIFO(タスクはFIFO) || TA_TPRI(タスクは優先度順) | TA_MFIFO(メッセージはFIFO) || TA_MPRI(メッセージは優先度順)）`

`INT　　　　bufcnt　　 メッセージの数`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK` `正常終了`

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

`E_RSATR　　 mbxatrが不正`

`E_RAR　　　 pk_cmbxが不正`

`E_ID　　　　mbxidが不正`

`E_OBJ　　　 mbxidのメイルボックスが既に存在`

`E_OACV　　　tskid＜-4のメイルボックスは利用不可（インプリメント依存）`

`[E]` `del_mbx``（メイルボックス削除）`

`・管理ブロックとバッファ領域の解放`

`・複数のタスクを管理するメイルボックスを削除したとき同優先度の順序はインプリメント依存`

`・削除後の待機中のタスクにはE_DLT、メッセージは破棄`

`Ｃ言語関数`

`ER ercd = del_mbx( ID mbxid );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbxidが不正`

`E_NOEXS　　 mbxidのメイルボックスが存在しない`

`E_OACV　　　tskid＜-4メイルボックスは利用不可（インプリメント依存）`

`[S]` `snd_msg``（メイルボックスへ送信）`

`・受信待ちのタスクがないときメッセージキューにメッセージ(pk_msg)を送信`

`・受信待ちのタスクがあるときタスクにメッセージ(pk_msg)を送信`

`Ｃ言語関数`

`ER ercd = snd_mbx( ID mbxid, T_MSG *pk_msg );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

`T_MSG　　　pk_msg　　 メッセージのアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbxidが不正`

`E_PAR　　　 pk_msgが不正`

`E_NOEXS　　 メッセージボックスが存在しない`

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

`E_QOVR　　　メッセージキューのオーバーフロー`

`[S]` `rcv_msg``（メイルボックスから受信）`

`・メッセージがメッセージキューに有るなら受信(pk_msgをリターン)`

`・メッセージがメッセージキューに無いなら受信待ち`

`Ｃ言語関数`

`ER ercd = rcv_msg( T_MSG **ppk_msg, ID mbxid );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`T_MSG*　　 pk_msg　　 メッセージのアドレス`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbxidが不正`

`E_NOEXS　　 mbxidのメイルボックスが存在しない`

`E_OACV　　　tskid＜-4のメイルボックスは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中にメイルボックスが削除`

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

`[S]` `prcv_msg``（メイルボックスから受信（ポーリング））`

`・メッセージがメッセージキューに有るなら受信(pk_msgをリターン)`

`・メッセージがメッセージキューに無いならE_TMOUT`

`Ｃ言語関数`

`ER ercd = prcv_msg( T_MSG **ppk_msg, ID mbxid );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`T_MSG*　　 pk_msg　　 メッセージのアドレス`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbxidが不正`

`E_NOEXS　　 mbxidのメイルボックスが存在しない`

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

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

`E_TMOUT　　 ポーリング失敗`

`[E]` `trcv_msg``（メイルボックスから受信（タイムアウト有））`

`・メッセージがメッセージキューに有るなら受信(pk_msgをリターン)`

`・メッセージがメッセージキューに無いなら受信待ち、tmout経過後E_TMOUT`

`・tmoutがTMO_POLならprcv_msg、TMO_FEVRならtrcv_msg`

`Ｃ言語関数`

`ER ercd = trcv_msg( T_MSG **ppk_msg, ID mbxid, TMO tmout );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

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

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`T_MSG*　　 pk_msg　　 メッセージのアドレス`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbxidが不正`

`E_PAR　　　 tmout≦-2`

`E_NOEXS　　 mbxidのメイルボックスが存在しない`

`E_OACV　　　tskid＜-4のメイルボックスは利用不可（インプリメント依存）`

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

`E_DLT　　　 待機中に相手が削除`

`E_TMOUT　　 タイムアウト`

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

`[E]` `ref_mbx``（メイルボックス状態参照）`

`Ｃ言語関数`

`ER ercd = ref_mbx( T_RMBX *pk_rmbx, ID mbxid );`

`引数`

`ID　　　　 mbxid　　　メイルボックスＩＤ`

`T_RMBX*　　pk_rmbx　　メイルボックス状態のアドレス`

`戻り値`

`ER　　　　 ercd　　　 エラーコード`

`pk_rmbxの中身`

`VP　　　 　exinf　　　拡張情報`

`BOOL_ID　　wtsk　　　 待機タスクの有無`

`T_MSG　　　pk_msg　　 次に受信されるメッセージのアドレス`

`エラーの内容`

`E_OK　　　　正常終了`

`E_ID　　　　mbxidが不正`

`E_PAR　　　 pk_rmbxのアドレスが不正`

`E_NOEXS　　 mbxidのメイルボックスが存在しない`

`E_OACV　　　tskid＜-4のメイルボックスは利用不可（インプリメント依存）`