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 初版