loc_cpu

iloc_cpu

概要

CPUロック状態への移行

C言語形式

 ER      loc_cpu ( void );
 ER      iloc_cpu ( void );
パラメータ

なし

機能

システムをCPUロック状態へ移行させます。

CPUロック状態では,タスクのスケジューリングは禁止され,カーネル管理割り込みもマスクされます。つまり,カーネル管理外割り込みハンドラを除くすべての処理プログラムに対して,排他的に処理を行うことができます。

ただし,CPUロック状態では,発行可能なサービス・コールは以下に制限されます。

 
発行可能なサービス・コール

機能概要

自タスクの終了(CPUロック状態は解除されます)

CPUロック状態への移行

CPUロック状態の解除

CPUロック状態の参照

ディスパッチ禁止状態の参照

コンテキスト種別の参照

ディスパッチ保留状態の参照

システム・ダウン



CPUロック状態は,unl_cpuiunl_cpu,およびext_tskによって解除されます。

備考1 本サービス・コールの発行により変更したCPUロック状態の解除は,本サービス・コールを発行した処理プログラムが終了する以前に行う必要があります。

備考2 本サービス・コールでは,ロック要求のキューイングが行われません。このため,すでに本サービス・コールが発行され,システム状態種別がCPUロック状態へと変更されていた場合には,何も処理は行わず,エラーとしても扱いません。

備考3 RI600V4では,一定周期で発生する基本クロック用タイマ割り込みを利用して時間管理機能を実現しています。このため,本サービス・コールの発行により,該当基本クロック用タイマ割り込みの受け付けを禁止状態へと変更した際には,時間管理機能が正常に動作しなくなる場合があります。

備考4 “カーネル管理割り込み”については,「10.1 割り込みの種類」を参照してください。

備考5 chg_imsによって割り込みマスクを0以外に変更している間は,loc_cpuはE_ILUSEエラーを返します。

戻り値

マクロ

数値

意味

E_OK

0

正常終了

E_CTX

-25

コンテキスト・エラー

- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。

備考 タスクからiloc_cpuを発行した場合,および非タスクからloc_cpuを発行した場合,コンテキスト・エラーは検出されず,システムの正常な動作は保証されません。

E_ILUSE

-28

サービス・コール不正使用

- タスクでchg_imsによって割り込みマスクを0以外に変更している状態から本サービス・コールを発行した。