Everything

cre_cyc

acre_cyc

概要
周期ハンドラの生成
C言語形式
 ER      cre_cyc ( ID cycid, T_CCYC *pk_ccyc );
 ER_ID   acre_cyc ( T_CCYC *pk_ccyc );
パラメータ
I/O
パラメータ
説明
I
 ID      cycid;
周期ハンドラのID
I
 T_CCYC  *pk_ccyc;
周期ハンドラ生成情報を格納した領域へのポインタ

【 周期ハンドラ生成情報T_CCYCの構造 】
 typedef struct  t_ccyc {
         ATR     cycatr;         /*周期ハンドラ属性*/
         VP_INT  exinf;          /*拡張情報*/
         FP      cychdr;         /*周期ハンドラの実行開始アドレス*/
         RELTIM  cyctim;         /*起動周期(ミリ秒)*/
         RELTIM  cycphs;         /*起動位相(ミリ秒)*/
 } T_CCYC;

機能
本サービス・コールは,信頼されたドメインに所属するタスクからのみ呼び出せます。
cre_cycは,指定されたcycidの周期ハンドラをpk_ccycで指定された内容で生成します。acre_cycはpk_ccycで指定された内容で周期ハンドラを生成し,生成した周期ハンドラIDを返します。
1 ) 周期ハンドラ属性(cycatr
cycatrには以下を指定できます。
   cycatr := ( TA_HLNG | [ TA_STA] | [ TA_PHS ] )
- TA_HLNG(= 0x0000)
周期ハンドラの記述言語は,C言語のみをサポートしています。
- TA_STA(= 0x0002)
TA_STAを指定すると周期ハンドラは動作状態(STA状態)となり,指定しないと停止状態(STP状態)となります。
- TA_PHS(= 0x0004)
TA_PHSを指定した場合,周期ハンドラの動作を開始する時に周期ハンドラの起動位相を保存して,次に起動すべき時刻を決定します。TA_PHSが指定されていない場合は,次に起動する時刻はsta_cycista_cycが呼び出された時刻からcyctim後となります。
10.6.5 周期ハンドラの動作開始」も参照してください。
2 ) 拡張情報(exinf
exinfは,周期ハンドラに引数として渡されます。exinf は,ユーザが生成する周期ハンドラに関する情報を設定するなどの目的で自由に使用できます。
3 ) 周期ハンドラの実行開始アドレス(cychdr
cychdrには,周期ハンドラの実行開始アドレスを指定します。
4 ) 起動周期(cyctim),起動位相(cycphs
cyctimには起動周期(ミリ秒)を指定します。
cycphsには,本サービス・コール呼出し時点からの最初の起動までの時間(ミリ秒)を指定します。TA_STA,TA_PHS両方の指定がない場合,cycphsは無視されます。
戻り値
マクロ
数値
意味

正の値
acre_cycの正常終了(生成された周期ハンドラID)
E_OK
0
cre_cycの正常終了
E_RSATR
-11
予約属性
- cycatrのbit1,bit2以外のビットが1
E_PAR
-17
パラメータ・エラー
- pk_ccyc == NULL
- cychdr == NULL
- cyctim == 0,cyctim > (0x7FFFFFFF - TIC_NUME)/TIC_DENO
- cyctim < cycphs
E_ID
-18
不正ID番号(cre_cycのみ)
- cycid≦0
- cycid > VTMAX_CYH
E_CTX
-25
コンテキスト・エラー
- CPUロック状態から本サービス・コールを発行した。
- 非タスクから本サービス・コールを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
E_MACV
-26
メモリ・アクセス違反
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
- 呼び出しタスクからのpk_ccycが示す領域に対するオペランド・リード・アクセス許可がない。
E_OACV
-27
オブジェクト・アクセス違反
- 呼出しタスクは,信頼されたドメインに所属していない。
E_NOID
-34
空きIDなし(acre_cycのみ)
E_OBJ
-41
オブジェクト状態不正(cre_cycのみ)
- cycidの周期ハンドラが存在する。