SVC_WaitVBlankIntr

構文

#include <nitro/os/common/systemCall.h>
void SVC_WaitVBlankIntr( void );

引数

なし。

返り値

なし。

説明

Vブランク割り込みが発生するまで待ちます。

空き時間に CPU が他のスレッドに切り替わるようにするため、 この関数の呼び出しを記述しても OS_WaitVBlankIntr()に置換されます。 このため、通常はシステムコールは使用されませんが、環境変数 NITRO_SVC_WAITVBLANK_COMPATIBLE を 定義すると置換が行われずにシステムコールが使用されるようになります。

システムコールを使用する場合

Vブランク割り込みが発生するまで Halt 状態で待ち続けます。
すなわち、空き時間であっても CPU が他のスレッドに切り替わることはありません。 空き時間に他のスレッドに切り換えたい場合は OS_WaitVBlankIntr()を使って下さい。

Vブランク割り込みハンドラにて OS_SetIrqCheckFlag( OS_IE_V_BLANK ) で Vブランクのチェックフラグをセットしてください。この関数内部ではIRQ割り込み後にこのフラグがセットされたことでVブランクが発生したと見なします。

複数の割り込みを併用した時、OS_Halt()が繰り返し呼び出される場合と比べてシステムコール呼び出しのオーバーヘッドを軽減することができます。

複数のスレッドで同時期にこの関数を呼び出した場合、1回のVブランクに対して、いずれか1つのスレッドだけが復帰出来ますので、注意が必要です。

参照

OS_SetIrqCheckFlag, OS_Halt
OS_WaitVBlankIntr

履歴

2005/11/21 OS_WaitVBlankIntr 関数呼び出しに置換されることを追記
2005/10/07 他のスレッドに切り替わらないことを追記
2004/11/02 SVC_WaitIntr() の記述を削除
2004/04/22 複数スレッドで使用する場合の注意を追加
2004/01/18 初版