# OS_RestoreInterrupts

## 構文

  `#include <nitro/os.h>`
  `OSIntrMode OS_RestoreInterrupts( OSIntrMode state );`

## 引数

state | 設定する割り込み状態。 `OSIntrMode` は `u32` の typedef です。

## 返り値

この関数を呼ぶ前の状態を表す値を返します。

返り値の型は `OSIntrMode` ( `u32` の typedef ) ですが、返り得る値は以下の `OSIntrMode_Irq` 列挙型　の値のどちらかです。

値 | 以前の状態
--- | ---
OS_INTRMODE_IRQ_DISABLE | IRQディセーブル(禁止)
OS_INTRMODE_IRQ_ENABLE | IRQイネーブル(許可)

## 説明

割り込み状態を設定します。

state で与えた割り込み状態にします。与える状態は `OSIntrMode_Irq` 列挙型で表されます。OS_INTRMODE_IRQ_ENABLE を指定すれば、割込み許可状態となり、OS_INTRMODE_IRQ_DISABLE を指定すれば、割込み禁止状態になります。

ただし、通常 state には `OS_EnableInterrupts()` や `OS_DisableInterrupts()` の返り値を指定することが多く、以前の状態に戻す目的で使用することが想定されています。

返り値は、この関数を呼ぶ以前の状態を表す値です。

例

> `OSIntrMode e = OS_DisableInterrupts();
> // ここは割込み禁止状態
> (void)OS_RestoreInterrupts( e );`

## 内部動作

CPSRレジスタ(current program status register)の IRQ割り込みの制御ビットをセット／リセットします。

## 参照

`OS_EnableInterrupts, OS_DisableInterrupts
`

## 履歴

2005/03/08 用語統一 [割込み] → [割り込み]
2004/03/04 FIQ は処理に含めないようにした
2004/01/14 FIQ も処理に含めるようにした
2003/12/01 初版