Everything

vprb_mem

概要
メモリ領域に対するアクセス権のチェック
C言語形式
 ER_BOOL  vprb_mem ( VP base, SIZE size, ID tskid, MODE pmmode );
パラメータ
I/O
パラメータ
説明
I
 VP      base;
先頭アドレス
I
 SIZE    size;
サイズ(バイト数)
I
 ID      tskid;
タスクのID
TSK_SELF: 自タスク
数値: タスクのID
I
 MODE    pmmode;
アクセス・モード

機能
baseで指定されたアドレスからsizeバイトの領域について,tskidで指定されたタスクがpmmodeで指定されたアクセスが許可されているかをチェックします。許可されている場合はTRUE,許可されていない場合はFALSEを返します。
pmmodeには,以下を指定できます。
   pmmode := ( TPM_READ | TPM_WRITE | TPM_EXEC )
- TPM_READ(= 0x0001)
オペランド・リード・アクセス権をチェックします。
- TPM_WRITE(= 0x0002)
オペランド・ライト・アクセス権をチェックします。
- TPM_EXEC(= 0x0004)
実行アクセス権をチェックします。
備考 本サービス・コールはμITRON4.0仕様外の機能です。
戻り値
マクロ
数値
意味
TRUE
1
正常終了(アクセス権あり)
FALSE
0
正常終了(アクセス権なし)
E_PAR
-17
パラメータ・エラー
- size == 0
- pmmode == 0,pmmodeのbit0~2以外のビットが1
E_ID
-18
不正ID番号
- tskid < 0
- tskid > VTMAX_TSK
E_CTX
-25
コンテキスト・エラー
- CPUロック状態から本サービス・コールを発行した。
- 非タスクから本サービス・コールを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
E_MACV
-26
メモリ・アクセス違反
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
E_NOEXS
-42
オブジェクト未生成
- tskidのタスクが存在しない。