OS_WaitVBlankIntr

構文

#include <nitro/os.h>
void OS_WaitVBlankIntr( void );

引数

なし。

返り値

なし。

説明

Vブランク割り込みが発生するまで待ちます。
SVC_WaitVBlankIntr() と違い、空き時間にはCPUが他のスレッドへ切り替わります。

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



複数のスレッドが同じ Vブランク割り込みを待つ場合

複数のスレッドが同時期にOS_WaitVBlankIntr() を呼び出す場合には動作に注意が必要です。OS_WaitVBlankIntr() では最初にVブランクのチェックフラグをクリアしているからです。例えば、ある2つのスレッドが OS_WaitVBlankIntr() でVブランク待ちを行なっていた場合、まず復帰した片側のスレッドが何らかの処理を行なってもう一度 OS_WaitVBlankIntr() に出会うと、その時点でフラグがクリアされてしまいますので、他方のスレッドが復帰することが出来ません。

参照

SVC_WaitVBlankIntr

履歴

2005/10/07 初版