# OS_GetIrqStackStatus

## 構文

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