同期・通信
[EN] cre_sem(セマフォ生成)
・管理ブロックを確保
・接続機能が利用可能
・拡張情報はref_semで利用可
C言語関数
ER ercd = cre_sem( ID semid, T_CSEM *pk_csem );
引数
ID semid セマフォID
T_CSEM* pk_csem セマフォ生成情報
pk_csemの中身
VP exinf 拡張情報
ATR sematr セマフォ情報(TA_TFIFO(FIFO) || TA_TPRI(優先度))
INT isemcnt セマフォ初期値(レベルX)
INT maxsem セマフォ最大値(レベルX)
戻り値
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(セマフォ削除)
・管理ブロックを解放
・削除後の同優先度の順番はインプリメント依存
・接続機能が利用可能
C言語関数
ER ercd = del_sem( ID semid );
引数
ID semid セマフォID
戻り値
ER ercd エラーコード
エラーの内容
E_OK 正常終了
E_ID semidが不正
E_NOEXS semidのセマフォが存在しない
E_OACV tskid<-4のセマフォは利用不可(インプリメント依存)
EN_OBJNO 対象ノードのsemidのセマフォが不正または存在しない
EN_CTXID タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのセマフォを指定
[RN] sig_sem(セマフォ資源返却)
・セマフォが先頭に確保しているタスクをREADYにする
・セマフォにタスクがないときは返却要求数(semcnt)を増やす
・接続機能が利用可能
C言語関数
ER ercd = sig_sem( ID semid );
引数
ID semid セマフォID
戻り値
ER ercd エラーコード
エラーの内容
E_OK 正常終了
E_ID semidが(-4)〜0あるいは範囲外
E_NOEXS semidのセマフォが存在しない
E_OACV tskid<(-4)のセマフォは利用不可(インプリメント依存)
E_QOVR semcnt(現在値)がmaxsem(最高値)を越えた[レベルX]
EN_OBJNO 対象ノードのsemidのセマフォが不正または存在しない
EN_CTXID タスク独立部あるいはディスパッチ禁止状態のタスクから他ノードのセマフォを指定
[RN] wai_sem(セマフォ資源獲得)
・セマフォの資源に余裕がある(semcnt≧1)ときsemcntを減らして自タスクが実行される
・セマフォの資源に余裕がない(semcnt=0)ときセマフォ資源獲得待ち
・接続機能が利用可能
C言語関数
ER ercd = wai_sem( ID semid );
引数
ID semid セマフォID
戻り値
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
・接続機能が利用可能
C言語関数
ER ercd = preq_sem( ID semid );
引数
ID semid セマフォID
戻り値
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
・接続機能が利用可能
C言語関数
ER ercd = twai_sem( ID semid, TMO tmout );
引数
ID semid セマフォID
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(セマフォ状態参照)
・接続機能が利用可能
C言語関数
ER ercd = ref_sem( T_RSEM *pk_rsem, ID semid );
引数
ID semid セマフォID
T_RSEM* pk_rsem セマフォ状態のアドレス
戻り値
ER ercd エラーコード
pk_rsemの中身
VP exinf 拡張情報
BOOL_ID wtsk 待機タスクの有無(FALSE=0(無し)、0以外の場合タスクのID(レベルX))
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で利用可
C言語関数
ER ercd = cre_flg( ID flgid, T_CFLG *pk_cflg );
引数
ID flgid イベントフラグID
T_CFLG* pk_cflg イベント生成情報
pk_cflgの中身
VP exinf 拡張情報
ATR flgatr イベントフラグ情報(TA_WMUL(複数タスクの待機許可)(レベルX) || 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(イベントフラグ削除)
・管理ブロック解放
・複数のタスクを管理するフラグを削除後の優先度はインプリメント依存
・接続機能が利用可能
C言語関数
ER ercd = del_flg( ID flgid );
引数
ID flgid イベントフラグID
戻り値
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の場合)
C言語関数
ER ercd = set_flg( ID flgid, UINT setptn );
引数
ID flgid イベントフラグID
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の論理積をとる
C言語関数
ER ercd = clr_flg( ID flgid, UINT clrtn );
引数
ID flgid イベントフラグID
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が指定してあるとき待機解除後にイベントフラグの状態値をクリア
・待機解除前の状態値をリターン
C言語関数
ER ercd = wai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
引数
ID flgid イベントフラグID
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が指定してあるとき待機解除後にイベントフラグの状態値をクリア
・待機解除前の状態値をリターン
C言語関数
ER ercd = pol_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode );
引数
ID flgid イベントフラグID
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が指定してあるとき待機解除後にイベントフラグの状態値をクリア
・待機解除前の状態値をリターン
C言語関数
ER ercd = wai_flg( UINT *p_flgptn, ID flgid, UINT waiptn, UINT wfmode, TMO tmout );
引数
ID flgid イベントフラグID
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(イベントフラグ状態参照)
・接続機能が利用可能
C言語関数
ER ercd = ref_flg( T_RFLG *pk_rflg, ID flgid );
引数
ID flgid イベントフラグID
T_CFLG* pk_rflg イベントフラグ状態のアドレス
戻り値
ER ercd エラーコード
pk_rflgの中身
VP exinf 拡張情報
BOOL_ID wtsk 待機タスクの有無(FALSE = 0(無し)、0以外の場合タスクのID(レベルX))
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で利用可
C言語関数
ER ercd = cre_mbx( ID mbxid, T_CMBX *pk_msg );
引数
ID mbxid メイルボックスID
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、メッセージは破棄
C言語関数
ER ercd = del_mbx( ID mbxid );
引数
ID mbxid メイルボックスID
戻り値
ER ercd エラーコード
エラーの内容
E_OK 正常終了
E_ID mbxidが不正
E_NOEXS mbxidのメイルボックスが存在しない
E_OACV tskid<-4メイルボックスは利用不可(インプリメント依存)
[S] snd_msg(メイルボックスへ送信)
・受信待ちのタスクがないときメッセージキューにメッセージ(pk_msg)を送信
・受信待ちのタスクがあるときタスクにメッセージ(pk_msg)を送信
C言語関数
ER ercd = snd_mbx( ID mbxid, T_MSG *pk_msg );
引数
ID mbxid メイルボックスID
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をリターン)
・メッセージがメッセージキューに無いなら受信待ち
C言語関数
ER ercd = rcv_msg( T_MSG **ppk_msg, ID mbxid );
引数
ID mbxid メイルボックスID
戻り値
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
C言語関数
ER ercd = prcv_msg( T_MSG **ppk_msg, ID mbxid );
引数
ID mbxid メイルボックスID
戻り値
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
C言語関数
ER ercd = trcv_msg( T_MSG **ppk_msg, ID mbxid, TMO tmout );
引数
ID mbxid メイルボックスID
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(メイルボックス状態参照)
C言語関数
ER ercd = ref_mbx( T_RMBX *pk_rmbx, ID mbxid );
引数
ID mbxid メイルボックスID
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のメイルボックスは利用不可(インプリメント依存)