-
chg_ims
ichg_ims
-
ER chg_ims ( IMASK imask );
ER ichg_ims ( IMASK imask );
PSWレジスタのIPLビットを,
imaskで指定された値に変更します。imaskには,0〜15の値を指定できます。
chg_imsサービス・コールでは,imaskに0以外を指定するとシステムはディスパッチ禁止状態に移行(
dis_dspと等価)し,imaskに0を指定するとシステムはディスパッチ許可状態に移行(
ena_dspと等価)します。
一方,ichg_imsでは,ディスパッチ禁止/許可状態の遷移はありません。
備考1 非タスクでは,割り込みマスクを起動時より下げてはなりません。
備考2 chg_imsの発行によって変更したディスパッチ禁止状態の解除は,本サービス・コールを発行したタスクがDORMANT状態へと遷移する以前に行う必要があります。
備考3 ディスパッチ禁止状態の間に“自タスクを状態遷移させる可能性のあるサービス・コール(
wai_sem,
wai_flgなど)”を発行した場合には,要求条件の即時成立/不成立を問わず,戻り値としてE_CTXを返します。
備考4 RI600V4では,一定周期で発生する基本クロック用タイマ割り込みを利用して
時間管理機能を実現しています。このため,本サービス・コールの発行により,該当基本クロック用タイマ割り込みの受け付けを禁止状態へと変更した際には,
時間管理機能が正常に動作しなくなる場合があります。
備考5 タスクがchg_imsによってPSW.IPLを0以外に変更している間は,
ena_dspを呼び出さないようにしてください。
ena_dspを呼び出すと,その時点でディスパッチ許可状態に遷移します。タスク・ディスパッチが発生すると,PSWはディスパッチ先のタスクの状態に更新されるので,意図せずにIPL値が下がってしまうことがあります。
|
|
|
|
|
|
|
|
|
|
|
- CPUロック状態から本サービス・コールを発行した。
|