# OS_GetStackStatus

## 構文

      #include <nitro/os.h>

      OSStackStatus OS_GetStackStatus( const OSThread* thread );

## 引数

thread | チェックするスレッド

## 返り値

OS_STACK_OVERFLOW　…　スタック最下位のマジックナンバーが書き換えられています。
OS_STACK_UNDERFLOW　…　スタック最上位のマジックナンバーが書き換えられています。
OS_STACK_ABOUT_TO_OVERFLOW　…　ユーザが設定した警戒水準位置のマジックナンバーが書き換えられています。

これらのどれにも当てはまらない場合、OS_STACK_NO_ERROR　( 0 に定義されています ) を返します。

## 説明

指定のスレッドに対し、スタック溢れをチェックし、その状態を取得します。

スタックの最上位、最下位 (に加え、設定していれば、ユーザの設定した警戒水準位置も) にあらかじめ書かれているマジックナンバーを調べ、それが書き換えられている(すなわち、その部分が一度でも使用された)かどうかを調べます。

スタックの最下位のマジックナンバーが書き換えられている場合、OS_STACK_OVERFLOW を返します。
スタックの最上位のマジックナンバーが書き換えられている場合、OS_STACK_UNDERFLOWを返します。
スタックにユーザが設定した警戒水準位置のマジックナンバーが書き換えられている場合、OS_STACK_ABOUT_TO_OVERFLOW を返します。

この順序で判定しますので、スタックの最下位と最上位の両方が書き換えられている場合は OS_STACK_OVERFLOW を返します。

これらすべてに合致しない場合(すべてのマジックナンバーが書き換えられていない場合)、OS_STACK_NO_ERROR を返します。OS_STACK_NO_ERROR は 0 に定義されていますので、0 と非0 でエラーがあるかないかの判定をすることが可能です。

## 参照

`OS_SetThreadStackWarningOffset, OS_CheckStack
`

## 履歴

2005/09/06 OSThread* 型の引数にconst を付加
2004/10/28 返り値の記述修正
2004/04/29 初版