第 3 章 従来機能の変更 25
3.8 システム状態管理機能
システム状態管理機能には,システム状態のアクセス許可ベクタを設定/変更 する機能と,実行状態のタスクの所属保護ドメイン IDを参照する機能を追加 する.また,参照できるシステム状態に追加がある.
システム状態のパケット形式に,アクセス許可ベクタを追加する.
typedef struct t_rsys {
ACVCT acvct ; /* システム状態のアクセス許可ベク
タ */
/* 実装独自に他のフィールドを追加してもよい */
} T_RSYS ;
システム状態管理機能の新規サービスコールの機能コードは次の通りである.
TFN_SAC_SYS –0x62 sac_sysの機能コード TFN_GET_DID –0x57 get_didの機能コード
SAC_SYS
システム状態のアクセス許可ベクタの設定(静的 API)sac_sys
システム状態のアクセス許可ベクタの変更【静的 API】
SAC_SYS ( ACVCT acvct ) ;
【 C言語 API】
ER ercd = sac_sys ( ACVCT *p_acvct ) ;
【パラメータ】
ACVCT acvct システム状態のアクセス許可ベクタ
【リターンパラメータ】
ER ercd 正常終了( E_OK)またはエラーコード
【エラーコード】
E_PAR パラメータエラー( p_acvct, acvctが不正)
【機能】
システム状態に対するアクセス許可ベクタを, acvctで指定されるアクセス許 可ベクタに設定する.
get_did
実行状態のタスクの所属保護ドメイン IDの参照【 C言語 API】
ER ercd = get_did ( ID *p_domid ) ;
【パラメータ】
なし
【リターンパラメータ】
ER ercd 正常終了( E_OK)またはエラーコード
ID domid 実行状態のタスクの所属する保護ドメインの
ID番号
【エラーコード】
E_PAR パラメータエラー( p_domidが不正)
【機能】
実行状態のタスク(タスクコンテキストから呼び出された場合は,自タスクに 一致する)の所属する保護ドメインの ID番号を参照し, domidに返す.
【補足説明】
タスクから呼び出された拡張サービスコールルーチン内で get_didを呼び出し た場合には,拡張サービスコールを呼び出したタスクの所属する保護ドメイン の ID番号が返る.また,タスクを実行中に起動された CPU例外ハンドラ(タ スクコンテキストで動作する場合)内で get_didを呼び出した場合には, CPU 例外を発生させたタスクの所属する保護ドメインの ID番号が返る.
呼び出した処理単位の所属する保護ドメイン(拡張サービスコール内で呼び出 した場合にはカーネルドメイン)を参照する機能や,拡張サービスコールを呼 び出した処理単位の所属する保護ドメインを参照する機能は,この仕様では用 意していない(将来のバージョンで用意する可能性はある).
非タスクコンテキスト用の iget_didについても,必要性が明らかでないため,
この仕様では用意していない.
ref_sys
システムの状態参照【 C言語 API】
ER ercd = ref_sys ( T_RSYS *pk_rsys ) ;
【パラメータ】
T_RSYS * pk_rsys システム状態を返すパケットへのポインタ
【リターンパラメータ】
ER ercd 正常終了( E_OK)またはエラーコード pk_rsysの内容( T_RSYS型)
ACVCT acvct システム状態のアクセス許可ベクタ
(実装独自に他の情報を追加してもよい)
【エラーコード】
E_PAR パラメータエラー( pk_rsysが不正)
【機能】
システムの状態を参照し, pk_rsysで指定されるパケットに返す.
acvctには,システム状態のアクセス許可ベクタを返す.