同期・通信

 

[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のメイルボックスは利用不可(インプリメント依存)