• 検索結果がありません。

イベントフラグ

ドキュメント内 px100.book (ページ 48-53)

第 3 章 従来機能の変更 25

3.4 同期・通信機能

3.4.2 イベントフラグ

イベントフラグ機能には,アクセス許可ベクタを指定してイベントフラグを生 成する機能と,イベントフラグのアクセス許可ベクタを変更する機能を追加す る.また,参照できるイベントフラグ状態に追加がある.

イベントフラグ状態のパケット形式に,アクセス許可ベクタを追加する.

typedef struct t_rflg {

ID wtskid ; /* イベントフラグの待ち行列の先頭の

タスクの ID番号  */

FLGPTN flgptn ; /* イベントフラグの現在のビットパ

ターン  */

ACVCT acvct ; /* イベントフラグのアクセス許可ベク

タ  */

/* 実装独自に他のフィールドを追加してもよい  */

} T_RFLG ;

イベントフラグ機能の新規サービスコールの機能コードは次の通りである.

TFN_CRA_FLG –0x113 cra_flgの機能コード TFN_ACRA_FLG –0x123 acra_flgの機能コード TFN_SAC_FLG –0x133 sac_flgの機能コード

CRA_FLG

イベントフラグの生成(静的 API,アクセス許可指定)

cra_flg

イベントフラグの生成(アクセス許可指定)

acra_flg

イベントフラグの生成(ID番号自動割付け,アクセス許可指定)

【静的 API】

CRA_FLG ( ID flgid, { ATR flgatr, FLGPTN iflgptn }, ACVCT acvct ) ;

【 C言語 API】

ER ercd = cra_flg ( ID flgid, T_CFLG *pk_cflg, ACVCT *p_acvct ) ; ER_ID flgid = acra_flg ( T_CFLG *pk_cflg, ACVCT *p_acvct ) ;

【パラメータ】

ID flgid 生成対象のイベントフラグの ID番号

T_CFLG * pk_cflg イベントフラグ生成情報を入れたパケットへ

のポインタ(静的 APIではパケットの内容を直 接記述する)

ACVCT acvct イベントフラグのアクセス許可ベクタ

pk_cflgの内容( T_CFLG型)

ATR flgatr イベントフラグ属性

FLGPTN iflgptn イベントフラグのビットパターンの初期値

(実装独自に他の情報を追加してもよい)

【リターンパラメータ】

cra_flgの場合

ER ercd 正常終了( E_OK)またはエラーコード acra_flgの場合

ER_ID flgid 生成したイベントフラグの ID番号(正の値)ま

たはエラーコード

【エラーコード】

E_ID 不正 ID番号( flgidが不正あるいは使用できない)

E_NOID ID番号不足(割付け可能なイベントフラグ IDがない)

E_RSATR 予約属性( flgatrが不正あるいは使用できない)

E_PAR パラメータエラー( pk_cflg, iflgptn, p_acvct, acvct が不正)

E_OBJ オブジェクト状態エラー(対象イベントフラグが登録済

み)

【機能】

flgidで指定される ID番号を持つイベントフラグを,pk_cflgで指定されるイベ ントフラグ生成情報に基づいて生成する. CRE_FLG/ cre_flg/ acre_flgとの

違いは,生成するイベントフラグに, acvctで指定されるアクセス許可ベクタ を設定することのみである.

sac_flg

イベントフラグのアクセス許可ベクタの変更

【 C言語 API】

ER ercd = sac_flg ( ID flgid, ACVCT *p_acvct ) ;

【パラメータ】

ID flgid 変更対象のイベントフラグの ID番号

ACVCT acvct イベントフラグのアクセス許可ベクタ

【リターンパラメータ】

ER ercd 正常終了( E_OK)またはエラーコード

【エラーコード】

E_ID 不正 ID番号( flgidが不正あるいは使用できない)

E_PAR パラメータエラー( p_acvct, acvctが不正)

E_NOEXS オブジェクト未生成(対象イベントフラグが未登録)

【機能】

flgidで指定されるイベントフラグに対するアクセス許可ベクタを, acvctで指 定されるアクセス許可ベクタに設定する.

【補足説明】

このサービスコールは,呼び出された時点ですでにイベントフラグの待ち行列 につながれているタスクには影響しない.そのため,イベントフラグの待ち行 列につながれているタスクが,新たに設定したアクセス許可ベクタではイベン トフラグを待つことを許可されていない場合でも,そのタスクはイベントフラ グ待ち状態のままとなり,待っているイベントフラグがセットされれば,正常 に待ち解除される.

ref_flg

イベントフラグの状態参照

【 C言語 API】

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

【パラメータ】

ID flgid 状態参照対象のイベントフラグの ID番号

T_RFLG * pk_rflg イベントフラグ状態を返すパケットへのポイ

ンタ

【リターンパラメータ】

ER ercd 正常終了( E_OK)またはエラーコード pk_rflgの内容( T_RFLG型)

ID wtskid イベントフラグの待ち行列の先頭のタスクの

ID番号

FLGPTN flgptn イベントフラグの現在のビットパターン

ACVCT acvct イベントフラグのアクセス許可ベクタ

(実装独自に他の情報を追加してもよい)

【エラーコード】

E_ID 不正 ID番号( flgidが不正あるいは使用できない)

E_PAR パラメータエラー( pk_rflgが不正)

E_NOEXS オブジェクト未生成(対象イベントフラグが未登録)

【機能】

flgidで指定されるイベントフラグに関する状態を参照し, pk_rflgで指定され るパケットに返す. µITRON4.0仕様との違いは, acvctに対象イベントフラグ のアクセス許可ベクタを返すことのみである.

ドキュメント内 px100.book (ページ 48-53)