# OS_ResetSystem

## 構文

  `#include <nitro/os.h>`
  `void OS_ResetSystem( u32 parameter );`

## 引数

parameter | リセットパラメータ

## 返り値

なし。

## 説明

ソフトウェアリセットを行い、プログラムを再実行します。
この関数から戻ることはありません。

この関数を割り込み禁止の状態で呼び出すことはできません。

parameter はリセットパラメータで、この値は再実行されるプログラム中から `OS_GetResetParameter()` で読むことが出来ます。起動直後の `OS_GetResetParameter()` で読める値は 0 となっていますので、リセットパラメータに 0 以外の値を入れることで、電源投入後と再実行後を区別するという用途などに使用することができます。

再実行に必要な処理は本関数を呼び出す前に行なう必要があります。

本関数を呼ぶためには、`OS_InitReset()` が予め呼ばれている必要があります。ただし、`OS_InitReset()` は `OS_Init()` から呼ばれていますので、`OS_Init()` を呼んでいる場合はアプリケーションで呼ぶ必要はありません。

マルチブート子機からのリセットは行えません。本関数が呼ばれた場合、`OS_Panic()` で停止します。マルチブート子機かどうかの判定は`MB_IsMultiBootChild()` を使用しています。

NANDアプリとして動作している場合もソフトウェアリセットは行えません。本関数が呼ばれた場合、`OS_Panic()` で停止します。その場合は代わりにハードウェアリセットを利用した `OS_RebootSystem()` を使用することができます。

ワイヤレス通信中の場合は、通信を停止し、WMライブラリを初期化前の状態に戻す手順を踏んだ上でソフトウェアリセットを行って下さい。

## 参照

`OS_InitReset, OS_GetResetParameter, MB_IsMultiBootChild()`

## 履歴

2009/07/02 TWLモードでもソフトウェアリセットに対応したため記述を修正。
2009/06/08 NITROモード専用機能として記述を修正。
2008/04/01 リセット前に通信を停止する必要がある旨を追加
2006/12/05 リセットパラメータに関する記述を追加
2005/04/01 割り込み禁止の状態からの呼び出し禁止を追記
2004/11/02 本関数内で行なう処理のためユーザがやらなくてもよいものを削除
2004/09/09 マルチブート子機からリセットが出来ないという記述を追加
2004/09/01 初版