# SVC_WaitVBlankIntr

## 構文

      #include <nitro/os/common/systemCall.h>

      void SVC_WaitVBlankIntr( void );

## 引数

なし。

## 返り値

なし。

## 説明

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

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

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

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

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

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

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

## 参照

`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 初版