Palm Programmer's Laboratory
Palm OS Programmer's Companion Volume I/11-4
11-4 システムのブートとリセット
全てリセットは通常、ハンドヘルド背面の小さな穴を伸ばしたペーパークリップでつつくことで行ないます。“リセットスイッチ”として知られるこの穴は、( Palm III では)シリアルナンバーステッカーの右上にあります。追加のキー操作によって、リセットの挙動は以下のように変化します。
ソフトリセット
ソフトリセットは全てのダイナミックヒープをクリアします(ヒープ0とカード0)。ストレージヒープは手を付けられずに残ります。オペレーティングシステムは新しいスタック、新しい大域変数、再起動したドライバ、およびリセットされたコミュニケーションポートでスクラッチから再起動します。ハンドヘルドの全てのアプリケーションは sysAppLaunchCmdSystemReset 起動コードを受信します。
上ボタンリセット
上ボタンを押しながらペーパークリップでリセットスイッチを押すと、以下の2つの例外を除いてソフトリセットと同じロジックが実行されます。
- sysAppLaunchCmdSystemReset 起動コードがアプリケーションに送信されません。これは、この起動コードの受信によって(稀にでなく)クラッシュするアプリケーションがハンドヘルド内にあるためにシステムのブートを妨げている場合に有用です。
- OS はスタートアップ中にシステムパッチをロードしません。これは、システムパッチのデータベースを削除、あるいは置き換える必要がある場合に有用です。システムパッチはロードされるとオープン状態になるため、システムから削除したり置き換えたりできなくなります。
ハードリセット
ハードリセットは、電源ボタンを押しながらペーパークリップでリセットスイッチを押すことで行ないます。これはソフトリセットの効果に加え、ストレージヒープも消去します。結果として、プログラム、データ、パッチ、ユーザー情報などが全て失なわれます。全データの削除を確認するメッセージが表示されます。
sysAppLaunchCmdSystemReset 起動コードがこの時アプリケーションに送られます。“全てのデータを削除”を選択すると、ディジタイザのキャリブレーションは初期状態に戻ります。4 つの主要アプリケーションのデフォルトデータベースは ROM からコピーされます。
“全てのデータを削除”というメッセージが表示されている状態で上ボタンを押し、上ボタンを押したままの状態で 4 つあるアプリケーションボタンを押すと、システムは 4 つの主要アプリケーションのデフォルトデータベースを ROM から読み込まずに起動します。
システムリセットコール
システムマネージャは Palm ハンドヘルドのリブートをサポートします。ハンドヘルドをリセットするには、SysReset をコールします。このコールはソフトリセットを行ない、リセットスイッチを押した場合と同じ効果を持ちます。アプリケーションでは通常このコールを使用すべきではありません。
例えば、SysReset は同期アプリケーションで使用されます。ユーザーがハンドヘルドにシステム拡張をコピーした場合、同期アプリケーションは同期完了後にハンドヘルドを自動的にリセットし、システム拡張が自身をインストールできるようにします。