# OS_EnableScheduler

## 構文

      #include <nitro/os.h>

      u32 OS_EnableScheduler( void );

## 引数

なし。

## 返り値

スケジューラの動作抑制を解除した後の、内部カウンタ値です。

この値が 0 より大きい場合、まだスケジューラ動作が抑制されていることを示します。

## 説明

スレッドシステムのスケジューラの動作抑制を解除します。すなわち、 リスケジューリングを再開します。

スレッドシステムのスケジューラの動作が抑制されていると、`OS_WakeupThread()` や `OS_SetThreadPriority()` など、スレッドのリスケジュールが発生する可能性のある関数が呼ばれても、スレッドのリスケジュールが行なわれないようになります。

`この OS_EnableScheduler()` は、通常 `OS_DisableScheduler()` に対してペアで使用されます。

`OS_DisableScheduler()` や `OS_EnableScheduler()` は、割り込みを禁止状態にして呼び出してください。

スケジューラは内部でカウンタを持っています。通常は 0 であるそのカウンタは、`OS_DisableSchrduler()` で 1 カウント増加し、`OS_EnableSchduler()` で 1 カウント減少します。そして、0 より大きい場合にはリスケジュールしないようにします。本関数からの戻り値はカウンタを変更した後の値です。0 より大きい場合、まだリスケジュールしない状態です。

`OS_DisableScheduler()` と `OS_EnableScheduler()` のペアをネストさせる(入れ子構造にする)ことが出来ます。例は `OS_DisableScheduler()` のリファレンスマニュアルを参照してください。

## 参照

`OS_SelectThread, OS_RescheduleThread, OS_DisableScheduler`

## 履歴

2005/03/08 用語統一 [割込み] → [割り込み]
2005/01/21 初版