Everything

rot_rdq

irot_rdq

概要
タスクの優先順位の回転
C言語形式
 ER      rot_rdq ( PRI tskpri );
 ER      irot_rdq ( PRI tskpri );
パラメータ
I/O
パラメータ
説明
I
 PRI     tskpri;
タスクの優先度
TPRI_SELF: 自タスクのベース優先度
数値: タスクの優先度

機能
tskpriで指定された優先度に対応したレディ・キューの先頭タスクを最後尾につなぎかえ,タスクの実行順序を明示的に変更します。
備考1 本サービス・コールでは,レディ・キューの対象優先度にタスクが1つもキューイングされていなかった場合,何も処理は行わず,エラーとしても扱いません。
備考2 本サービス・コールを周期ハンドラなどから一定周期で発行することにより,ラウンドロビン・スケジューリングを実現することができます。
備考3 RI600PXにおけるレディ・キューは,優先度をキーとしたハッシュ・テーブルであり,実行可能な状態(RUNNING状態またはREADY状態)へと遷移したタスクがFIFO順でキューイングされます。このため,スケジューラは,起動された際にレディ・キューの優先度高位から検出処理を実行し,キューイングされているタスクを検出した場合には,該当優先度の先頭タスクにCPUの利用権を与えることにより,RI600PXのスケジューリング方式(優先度方式,FCFS方式)を実現しています。
備考4 ミューテックスをロック中のタスクの現在優先度は,ベース優先度と異なる場合があります。この場合,そのタスクが本サービス・コールでtskpriTPRI_SELFを指定しても,自タスクが属する現在優先度のレディ・キューを回転することはできません。
備考5 現在優先度とベース優先度については,「8.2.2 現在優先度とベース優先度」を参照してください。
戻り値
マクロ
数値
意味
E_OK
0
正常終了
E_PAR
-17
パラメータ・エラー
- tskpri < 0
- tskpri > TMAX_TPRI
- irot_rdqを発行した際,tskpriTPRI_SELFを指定した。
E_CTX
-25
コンテキスト・エラー
- CPUロック状態から本サービス・コールを発行した。
- タスクからirot_rdqを発行した。
- 非タスクからrot_rdqを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
E_MACV
-26
メモリ・アクセス違反(rot_rdqのみ)
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。