Everything

chg_ims

ichg_ims

概要
割り込みマスクの変更
C言語形式
 ER      chg_ims ( IMASK imask );
 ER      ichg_ims ( IMASK imask );
パラメータ
I/O
パラメータ
説明
I
 IMASK   imask;
割り込みマスク値

機能
PSWレジスタのIPLビットを,imaskで指定された値に変更します。imaskには,0~15の値を指定できます。
chg_imsサービス・コールでは,imaskに0以外を指定するとシステムはディスパッチ禁止状態に移行(dis_dspと等価)し,imaskに0を指定するとシステムはディスパッチ許可状態に移行(ena_dspと等価)します。
一方,ichg_imsでは,ディスパッチ禁止/許可状態の遷移はありません。
PSWレジスタのIPLビットをカーネル割り込みマスクレベル(system_IPL)を超える値に変更している間は,一部のサービス・コールの発行が禁止されます。
 
発行可能なサービス・コール
機能概要
割り込みマスクの変更
割り込みマスクの参照
システム・ダウン
RI600PXの起動

備考1 非タスクでは,割り込みマスクを起動時より下げてはなりません。
備考2 chg_imsの発行によって変更したディスパッチ禁止状態の解除は,本サービス・コールを発行したタスクがDORMANT状態へと遷移する以前に行う必要があります。
備考3 ディスパッチ禁止状態の間に“自タスクを状態遷移させる可能性のあるサービス・コール(wai_semwai_flgなど)”を発行した場合には,要求条件の即時成立/不成立を問わず,戻り値としてE_CTXを返します。
備考4 RI600PXでは,一定周期で発生する基本クロック用タイマ割り込みを利用して時間管理機能を実現しています。このため,本サービス・コールの発行により,該当基本クロック用タイマ割り込みの受け付けを禁止状態へと変更した際には,時間管理機能が正常に動作しなくなる場合があります。
備考5 タスクがchg_imsによってPSW.IPLを0以外に変更している間は,ena_dspを呼び出さないようにしてください。ena_dspを呼び出すと,その時点でディスパッチ許可状態に遷移します。タスク・ディスパッチが発生すると,PSWはディスパッチ先のタスクの状態に更新されるので,意図せずにIPL値が下がってしまうことがあります。
備考6 「12.8 マスカブル割り込みの受け付け禁止」も参照してください。
戻り値
マクロ
数値
意味
E_OK
0
正常終了
E_PAR
-17
パラメータ・エラー
- imask > 15
E_CTX
-25
コンテキスト・エラー
- CPUロック状態から本サービス・コールを発行した。
- タスクからichg_imsを発行した。
- 非タスクからchg_imsを発行した。
E_MACV
-26
メモリ・アクセス違反(chg_imsのみ)
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。