OS_SetIrqStackWarningOffset

構文

#include <nitro/os.h>
void OS_SetIrqStackWarningOffset( u32 offset );
  

引数

offset 警告水準のオフセット

返り値

なし。

説明

IRQモード用スタックに対し、スタック溢れチェック用のための警戒水準を設定します。

このチェック機構は、IRQモード用スタックの最上位と最下位にあらかじめマジックナンバーを書き込みそれが書き換えられたかどうかで調べるというものです。OS_SetIrqStackWarningOffset() は、最上位と最下位に加えその途中に警戒水準を設定し、その部分が書き換えられたどうかのチェックのためにマジックナンバーを書き込むための関数です。スタックの最上位と最下位のマジックナンバーは OS_Init() を呼んだ際に書き込まれてます。

このようにスタックの途中にマジックコードを設定するのは、スタックを最下位まで使い切ってしまい動作が不定になる前にスタック溢れが起きそうであることを検知するためです。

offset はスタックの最下位からのバイト数で、4の倍数である必要があります。0 を設定すると設定を解除します。

スタックの途中にマジックナンバーを書き込みますので、そこが現在使われていると動作が不定になるおそれがあります。従って、割込みハンドラ内で設定することは避けて下さい。通常はプログラムを起動した直後に設定を行なうようにして下さい。

(例)
 :
 OS_SetIrqStackWarningOffset( 0x100 );
 :
 OS_CheckIrqStack( void );

参照

OS_CheckIrqStack, OS_GetIrqStackStatus

履歴

2005/07/15 初版