# OS_SaveContext

## 構文

  `#include <nitro/os.h>`
  `BOOL OS_SaveContext( OSContext* context );`

## 引数

context | コンテキスト

## 返り値

0の場合、コンテキストを保存して戻ってきたという意味となります。
１の場合、コンテキストが切り替わり、この関数に戻ってきたという意味となります。

## 説明

現在のコンテキストを指定のコンテキスト構造体内に保存します。
この関数はスレッドシステムの、コンテキスト切り替えで使用されます。

カレントスレッドが、以前に保存していたコンテキストに切り替わったときは、実行場所はコンテキストを保存した次の命令からとなります。普通にコンテキストを切り替えるだけでは、再開されてこの関数から戻ってきたのか、保存だけを行なって戻ってきたのかが明確ではありません。

そのために`OS_SaveContext()` 関数からの戻り値に工夫をしています。通常この関数でコンテキストを保存して戻るときには返り値は 0になるのですが、保存するコンテキスト中のR0 を 1としています。これでコンテキストが切り替わったときに戻り値(R0) が１となり、保存のみを行なった関数呼び出しとは区別をつけることが出来ます。

コンテキストの内容については `OS_InitContext()` を参照してください。

## 参照

`OS_InitContext, OS_LoadContext, OS_DumpContext
`

## 履歴

2003/12/01 初版