# OS_RebootSystem

## 構文

  `#include <nitro/os.h>`
  `BOOL OS_RebootSystem( void );`

## 引数

なし。

## 返り値

以下の理由で再起動に失敗した場合 FALSE を返します。

> ・NITRO モードで本関数を呼び出した場合。

> ・すでに電源ボタンによる終了処理に入っている場合

再起動に成功した場合には、この関数から戻ることはありません。従って、この関数が TRUE を返すことはありません。

## 説明

ハードウェアリセットを行い、自身を起動しなおします。

アプリケーションにとっては `OS_JumpToSystemMenu` を実行後、手動で同じアプリケーションを起動しなおすのと同じです。

システムメニューから直接起動した場合と再起動後を判別したい場合には `OS_IsRebooted` を実行することで判別可能です。

この関数は PMライブラリの `PM_ForceToResetHardware` を用いています。アプリケーションからは、自身を起動しなおす目的ならば、直接 `PM_ForceToResetHardware` を呼ぶのではなく、この `OS_RebootSystem()` を呼んでください。

この関数を割り込み禁止の状態で呼び出すことはできません。
また、この関数は終了処理中に呼び出すことは出来ませんので`PM_Append*ExitCallback`などで登録する終了コールバックから実行されないよう注意してください。

本関数は TWL モードでしか実行出来ません。NITRO モード(NITRO ROM が動作する場合と、HYBRID ROM が NITRO上で動作する場合)では FALSE を返します。

関数の実行に成功するとこの関数から戻ることはありませんので 返り値が TRUE となることはありません。FALSE を返すのは、上に書いたように NITRO モードで本関数を呼び出した場合と、すでに電源ボタンが押されて終了処理に入っている場合のいずれかです。 このうち、NITRO モードで本関数を呼び出すのは元々仕様として許可されていない行為でありプログラムを組む上での間違いなので、実機上で発生するのは通常は後者 しかないはずです。その後はシャットダウンか、ハードウェアリセットのどちらかが必ず発生するので、FALSE の場合はそれ以上のゲーム処理を行わないようにして直後の終了に備えてください。

## 参照

`PM_ForceToResetHardware`, `OS_IsRebooted`,
`PM_Append*ExitCallback`, `PM_Prepend*ExitCallback`, `PM_Insert*ExitCallback`

## 履歴

2008/12/08 FALSE が返る条件について記述
2008/10/22 終了処理中の実行を禁止する旨を追加
2008/09/09 初版