

#include <nitro/os.h>
OSStackStatus OS_GetIrqStackStatus( void );
なし。
OS_STACK_OVERFLOW … スタック最下位のマジックナンバーが書き換えられています。
OS_STACK_UNDERFLOW … スタック最上位のマジックナンバーが書き換えられています。
OS_STACK_ABOUT_TO_OVERFLOW … ユーザが設定した警戒水準位置のマジックナンバーが書き換えられています。
これらのどれにも当てはまらない場合、OS_STACK_NO_ERROR ( 0 に定義されています ) を返します。
IRQモード用スタックに対しスタック溢れをチェックし、その状態を取得します。
スタックの最上位、最下位 (に加え、設定していれば、ユーザの設定した警戒水準位置も) にあらかじめ書かれているマジックナンバーを調べ、それが書き換えられている(すなわち、その部分が一度でも使用された)かどうかを調べます。
スタックの最下位のマジックナンバーが書き換えられている場合、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_SetIrqStackWarningOffset, OS_CheckIrqStack
2005/07/15 初版