

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